自定义内容类型与创建自己的CSS的字段?

时间:2012-08-15 21:03:08

标签: drupal

我正在寻找创建一个包含图像文件字段的内容类型 - 足够简单。但是,我希望此图像文件显示为背景图像。我是否必须创建自定义node.tpl并将图像源包含在内联style="background: url(sites/all/themes/theme/images/image.png);"中,或者是否有更优雅的方法来执行此操作,可能包括使用JavaScript从字段写入样式表?

2 个答案:

答案 0 :(得分:1)

您可以在hook_node_view函数,节点预处理脚本或节点模板中使用drupal_add_css直接添加样式:

$css = "#bg-img { 
  background: url(/sites/all/themes/theme/images/image.png) left top no-repeat; 
};"
drupal_add_css($css, 'inline');

或者,您可以使用drupal设置,然后在jquery脚本中引用它;查找drupal_add_js使用情况& 'setting'选项的示例:

drupal_add_js(array("moduleName" => array('bgImg' => $absolute_url)), 'setting');

使用Drupal.settings.moduleName ['bgImg']在jQuery中引用

IMO正如您所描述的那样调整node.tpl.php是非常明智的。使用drupal_add_css将允许您在节点外部的元素上设置背景图像,例如整个页面。当我需要更高级的定位/调整大小选项时,我已经使用了jquery。

答案 1 :(得分:1)

不要阅读文档并深入研究代码,只需使用Field Formatter CSS模块(https://drupal.org/project/field_formatter_class),并在几分钟内完成。这是一个宝石,你会发现自己一遍又一遍地使用它。它允许您在自定义内容类型的“管理显示”中为每个字段添加css类和其他选项。至于将用户上传的图像作为背景提供的特定情况,这里是屏幕截图。将一个类添加到Field Formatter Class字段中,然后您应该能够使用css和jquery重新定位和调整大小。

enter image description here