【问题标题】:How can I create a theme preview module in Drupal 6?如何在 Drupal 6 中创建主题预览模块?
【发布时间】:2011-12-06 14:09:18
【问题描述】:

我正在尝试创建一个简单的模块来预览 Drupal 中的主题。每个用户都有自己的自定义节点,我希望能够在没有他们实际启用的情况下向他们展示主题如何工作的预览。现在这就是我所拥有的:

function theme_preview_info($new_theme, $node_id)
{
    global $custom_theme;
    $custom_theme = $new_theme;

    $node = node_load($node_id);

    return $node->body;

}

会显示节点的内容,但是格式都乱了。我怎样才能正确地显示节点,就像我去 node/1 一样,而是在 theme_preview/theme_name/1 上查看它?

【问题讨论】:

    标签: drupal drupal-modules


    【解决方案1】:

    您有构建 Drupal 模块的经验吗?

    如果没有,您可能会发现您尝试做的事情并不是那么简单。 您将需要一些界面供用户选择他们正在预览的主题。然后,您需要连接到 Drupal 的路由,以使用基于自定义路径别名 (theme_preview/theme_name/1) 的选定主题预览将用户引导到适当的节点。我目前没有预料到很可能还有很多其他后端开销。

    不过,如果您有构建 Drupal 模块的经验,那可能没什么大不了的。


    切换主题可能是最简单的部分。如果您使用的是 Drupal 7,则可以使用 hook_custom_theme() 的实现来根据您的预期标准(即用户选择的主题)更改用于特定节点的主题。

    http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_custom_theme/7

    这样,您实际上可以让 Drupal 和所选主题完全处理页面的呈现,从而提供更准确的预览。

    我不确定您将如何创建用户的主题切换界面或将用户路由到每个主题选择的特定路径别名。

    您可能还想查看 ThemeKey 模块 (http://drupal.org/project/themekey)。您可以使用该模块以某种方式简单地设置每个节点的 ab 版本,以便在每个不同的主题中查看。

    【讨论】:

    • 很高兴在这里见到来自 Top Notch 的专家。欢迎,并感谢您所有的精彩主题。 +1 诚实的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多