在Drupal 7中将类添加到图像字段

时间:2011-03-11 15:29:31

标签: drupal-7 imagefield

我已将图像字段添加到内容类型“基本页面”,并使用“管理显示”选项将其显示在页面顶部。然而,图像上没有样式,我不能为我的生活弄清楚如何在图像中添加一个类,以便我可以添加样式。

3 个答案:

答案 0 :(得分:19)

如果定位CSS是您唯一的需求,上述答案会有所帮助。但我需要在IMG标签中添加一个类句。这是我解决问题的方式。这可能不是最好的方式,当然不是唯一的方式,但它是一种有效的“Drupal方式”并且有效。打开模板的 template.php 文件。

粘贴以下功能,您必须修改并根据您的使用场景进行自定义。例如,您必须使用模板名称替换<TEMPLATENAME>,并根据需要添加或减去类,以及其他内容,如您所见。

function <TEMPLATENAME>_preprocess_image(&$variables) {
    // If this image is of the type 'Staff Photo' then assign additional classes to it:
    if ($variables['style_name'] == 'staff_photo') {
        $variables['attributes']['class'][] = 'lightbox';
        $variables['attributes']['class'][] = 'wideborder';
    }
}

我创建了一个“if”语句来确定何时应该将类添加到图像中,但是你必须根据自己的喜好自定义它 - 如果你想在所有图像场图像上安装一个类,你可以完全消除它,或者你可能会说“如果 drupal_is_front_page()“如果你只想在首页上应用它等等。

在我的情况下,我为Staff Photos创建了一种图像样式(Configuration&gt; Media&gt; Image Styles),并添加了if子句,仅将我喜欢的类应用于指定图像样式的图像。我认为这是一个很好的方法,但你可以做你喜欢的事。

现在,每当我查看包含图像风格为“职员照片”的图像字段的节点时,这些类就会神奇地出现在IMG标签中,这正是我所需要的。

答案 1 :(得分:1)

如果您正在使用CCK,那么几乎可以肯定一个类已经与图像相关联(或者至少是包含它的div上的类)。 CCK几乎包含了课堂上的所有内容。尝试右键单击图像并单击Inspect Element进行双重检查。

如果您确实需要添加一个类,可以使用Theme Developer module找出要覆盖的主题函数或模板文件。查看Theme Developer screencast for more details

答案 2 :(得分:1)

如果使用此函数,则Drupal添加类但在首页上查看错误“注意:未定义索引:template_preprocess_image中的style_name ..”。

我粘贴“_style”并且没问题。

function <TEMPLATENAME>_preprocess_image_style(&$variables)  {
    // If this image is of the type 'Staff Photo' then assign additional classes to it:
    if ($variables['style_name'] == 'staff_photo') {
        $variables['attributes']['class'][] = 'lightbox';
        $variables['attributes']['class'][] = 'wideborder';
    }
}