Как добавить атрибут HTML в поле изображения CCK - PullRequest
1 голос
/ 19 января 2012

Я пытаюсь добавить атрибут "id =" background "к фактическому тегу изображения.

<?php print render($content['field_bg_image']); ?>

Я просмотрел тонны статей, и все они связаны с hook_form_alter, и этоне форма. Это просто поле изображения, мне просто нужен атрибут ID со значением фона. Я знаю, что могу использовать javascript, но хочу использовать Drupal и больше не добавлять javascript.

Ответы [ 2 ]

5 голосов
/ 19 января 2012

Рендеринг изображения выполняется через theme_image_formatter(), который не позволяет вам устанавливать атрибуты.

Вы можете обойти это, создав изображение вручную:

$img = theme('image', array(
  'path' => $content['field_bg_image'][0]['#item']['uri'],
  'alt' => $content['field_bg_image'][0]['#item']['alt'],
  'attributes' => array('id' => 'background')
));

$content['field_bg_image'][0] = array(
  '#markup' => $img
);

echo render($content['field_bg_image']);

Это не проверено, поэтому дайте мне знать, если у вас есть какие-либо проблемы

0 голосов
/ 19 января 2012

Вы можете использовать шаблон для своего поля cck, в вашем случае имя этого файла может быть field--field-bg-image.tpl.php и должно быть помещено в вашу текущую папку темы, тогда вы можете добавить свой атрибут id следующим образом:

 // in field--field-bg-image.tpl.php
 <div id="your-id" class="<?php echo $classes; ?>">
    <?php print render($items); ?>
 </div>    

Взгляните на field.tpl.php

Если вы не хотите устанавливать id на фактическом теге img, вы можете сделать что-нибудьв вашем field--field-bg-image.tpl.php файле:

$object = $element['#object']; 
$data = $object->field_bg_image[$object->language][0];
$fid = $data['fid'];
$width = $data['width'];
$height = $data['height'];  
print '<img id="your-id" src="'.file_create_url(file_load($fid)->uri).'" width="'.$width.'" height="'.$height.'" />';

Вы также можете оформить theme_image () и сделать так:

print theme_image(
         array('path'=>file_load($fid)->uri,
               'attributes'=>
                   array('alt'=>'','id'=>'your-id')
         )
      );
...