如何将HTML属性添加到CCK图像字段

时间:2012-01-19 17:00:26

标签: drupal drupal-7 drupal-theming

我正在尝试将“id =”background“的属性添加到实际的图片代码中。

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

我查了很多文章,他们都关注hook_form_alter,这不是一个表格。这只是一个图像字段,我只需要一个带有背景值的ID属性。我知道我可以使用javascript,但我想使用Drupal而不是添加更多的javascript。

2 个答案:

答案 0 :(得分:5)

图像渲染通过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']);

那是未经测试的,所以如果您有任何问题请告诉我

答案 1 :(得分:0)

您可以为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')
         )
      );