【问题标题】:Drupal: Change Color Scheme Based On NodeDrupal:基于节点更改配色方案
【发布时间】:2010-08-13 13:42:44
【问题描述】:

一位网页设计师为我们的 Drupal 网站创建了一个设计,该设计需要为网站的各个部分使用不同的配色方案。 Drupal 默认不支持这种设计要求。

目前我正在使用 JavaScript 根据页面标题更改配色方案。添加一些内容页面后,我现在意识到这是一种糟糕的做事方式。我需要一些想法来更好地根据内容更改配色方案。

有没有办法根据页面的节点值将不同的主题应用于页面?我可以为每种配色方案创建一个稍微不同的主题,尽管这会使主题维护更加困难。

我还考虑过使用 CCK 将字段添加到我的页面内容类型,然后根据该自定义字段更改配色方案。这将消除为每个新页面添加代码到我的 JavaScript 的需要。

或者有没有一个模块可以改变每页的配色方案?

【问题讨论】:

    标签: drupal color-scheme


    【解决方案1】:

    您可能想查看ThemeKey module,它允许您根据节点类型或路径等条件确定使用哪个主题。

    【讨论】:

    • 我会将此标记为答案,但我实际上使用了 Sections 模块,因为这是页面/节点的组织方式。
    【解决方案2】:

    您可以根据节点或其他条件在hook_preprocess_page函数中添加一些css,并将css作为嵌入样式添加到页面模板中。

    这个想法将与在 JavaScript 中执行此操作相同,但您可以使用 php、drupal 等来执行您需要的操作。这应该会容易得多,因为您可以测试节点类型,或者您在节点对象上设置的值。

    【讨论】:

      【解决方案3】:

      CSS module 具有特定于节点的 CSS,因此您可以使用它来调整颜色。

      【讨论】:

        【解决方案4】:

        我建议在您的主题中实现 hook_preprocess_page,并根据正在显示的节点类型(或类型)应用主体类。或者,潜在地,将这些类放在节点的预处理中以进行显示。因此,例如,如果您正在查看“项目”节点,请输入:

        <body class="... node-type-project">...
        

        然后设计者可以根据 body 的类来定位样式。这很容易实现自动化,只需执行 "node-type-". strreplace("_", "-", $node-&gt;type) 将任何未来的节点类型更改为一个类,然后将其输入到主体或节点中。

        【讨论】:

          猜你喜欢
          • 2017-12-05
          • 1970-01-01
          • 2017-10-30
          • 2017-07-13
          • 2013-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-06
          相关资源
          最近更新 更多