我正在尝试创建一个简单的模块来预览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中查看它?
答案 0 :(得分:5)
您是否有构建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版本,以便在每个不同的主题中查看。