Как добавить класс в img рендеринга imagefield? - PullRequest
1 голос
/ 06 июля 2011

Я загружаю изображение с помощью Imagefield и хочу добавить класс к <img src="imagefile" class="caption" />, поскольку для изображений, отображаемых с помощью Imagefield, не определен класс.

Возможно ли это в Drupal 6?

Ответы [ 2 ]

0 голосов
/ 24 июля 2011

Что именно вы пытаетесь сделать?Если вы пытаетесь стилизовать свой вывод для полей изображения с помощью css, вы можете просто использовать класс предыдущего div, я полагаю.Поэтому, если ваш html выглядит примерно так (как у меня, используя imagefield и imagecache):

<div class="field field-type-filefield field-field-images"> <!-- created by imagefield -->
  <div class="field-items">
    <div class="field-item odd">
      <a class="imagecache imagecache-thumbs imagecache-imagelink imagecache-thumbs_imagelink" href="http://yoursite/sites/default/files/originalFile.jpg">
        <img alt="" src="http://yoursite/sites/default/files/imagecache/thumbs/originalFile.jpg">
      </a>
    </div>
  </div>
</div>

В вашем файле CSS используйте что-то вроде этого для стилизации вашего изображения (в этом примере вместо этого изображения располагаются рядом друг с другом).друг под другом, создавая какую-то галерею).

.field-field-images img
{
  float: left;
  margin-right: 8px;
  margin-bottom: 8px;
}
0 голосов
/ 06 июля 2011

Вы можете переопределить функцию theme_imagefield_image () , скопировав ее в файл template.php и , переименовав ее в MYTHEME_imagefield_image ().Это будет что-то вроде:

function MYTHEME_imagefield_image($file, $alt = '', $title = '', $attributes = NULL, $getsize = TRUE) {
  //
  // ... same contents as the original one, except:
  //
  $attributes['class'] = $attributes['class'] ? "{$attributes['class']} my-custom-class" : 'my-custom-class';
  $attributes = drupal_attributes($attributes);
  return '<img '. $attributes .' />';
}

... в вашем template.php .

И очистите кеш!:>

Редактировать :

Если вы используете модуль Imagecache , то вы должны перезаписать theme_imagecache () вместо этого, в конечном итоге:

function MYTHEME_imagecache($presetname, $path, $alt = '', $title = '', $attributes = NULL, $getsize = TRUE, $absolute = TRUE) {
  // Check is_null() so people can intentionally pass an empty array of
  // to override the defaults completely.
  if (is_null($attributes)) {
    $attributes = array('class' => 'imagecache imagecache-'. $presetname);
  }
  if ($getsize && ($image = image_get_info(imagecache_create_path($presetname, $path)))) {
    $attributes['width'] = $image['width'];
    $attributes['height'] = $image['height'];
  }

  // These two lines are what you need 
  $custom_class = 'your-custom-class';
  $attributes['class'] = $attributes['class'] ? "{$attributes['class']} {$custom_class}" : $custom_class;

  $attributes = drupal_attributes($attributes);                         
  $imagecache_url = imagecache_create_url($presetname, $path, FALSE, $absolute);
  return '<img src="'. $imagecache_url .'" alt="'. check_plain($alt) .'" title="'. check_plain($title) .'" '. $attributes .' />';
}

... в вашем файле template.php .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...