【问题标题】:How do I use custom css only for nodes created by a custom module in Drupal 7如何仅对 Drupal 7 中的自定义模块创建的节点使用自定义 CSS
【发布时间】:2012-12-10 21:31:58
【问题描述】:

我在 Drupal 7 中有一个创建节点的自定义模块。我希望在呈现由我的自定义模块创建的节点之一时应用自定义 css 样式表 (customstyle.css),但仅在呈现由我的自定义模块创建的节点之一时应用。

简单的解决方案(将stylesheets[all][] = customstyle.css 添加到我的自定义模块的.info 文件中)将样式表应用于所有页面,包括包含由我创建的节点not的页面自定义模块。我不想那样。

【问题讨论】:

  • 您需要在您的主题文件夹中创建一个预处理函数,以根据节点类型添加所需的 CSS。您将必须实现 template_preprocess_html。 Clive 在这里提供了一个很好的答案,涵盖了类似的功能:stackoverflow.com/a/7354562/1027644
  • 另外,这是假设您的节点创建了一个自定义节点类型,这将允许您区分由该模块创建的节点和不是由该模块创建的节点

标签: drupal drupal-7 drupal-theming


【解决方案1】:

我假设“我的自定义模块创建的节点”意味着它们有一些特殊的节点类型。如果是这样,您可以在您的模块中实现hook_node_view(),然后根据节点类型或任何其他属性调用drupal_add_css()

function mymodule_node_view($node, $view_mode) {
  if ($view_mode != 'rss') {
    if ($node->type == 'mynodetype') {
      drupal_add_css(drupal_get_path('module', 'mymodule') . '/mynodetype.css');
    }
  }
}

【讨论】:

    【解决方案2】:

    我会以网站建设者的方式来做。使用 Context 定位该节点类型,然后分配响应以加载您的 CSS 文件,只需使用 .context-[node type] 定位这些页面中的特定元素。

    例如如果你的节点类型是苹果食谱,你可以使用.context-apple-recipes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多