我正在构建一个Drupal站点,它有4个不同的主题和不同的主题模板。
我需要使用相同的Drupal数据库来控制所有4个主题的所有内容。
我为每个主题设置了分类,因此当我创建内容时,我可以将其应用于四个不同主题中的一个。
网址需要看起来像
mysite.com/theme1/node/21
并且
mysite.com/theme2/node/2
另外我需要确保
mysite.com/theme1需要根据网址调出该主题的page-front.tpl.php
我尝试过使用的themekey,但我不知道如何只提取具有该网站应用的分类术语的内容。
我不能让它与这样的东西一起工作
mysite.com/theme2/node/1
仅适用于
mysite.com/node/1/theme2
任何想法,或任何你可以提供给我指出正确方向的东西都将不胜感激。
答案 0 :(得分:1)
可能有很多方法可以做到这一点,但我就是这样做的。
您也可以像在node.module中一样查询内容,但我个人更喜欢使用视图进行过滤。如果你不熟悉在example_menu()函数中传递给views_embed_view()的参数,你可以找到它的documentation here
在这个片段中可能存在拼写错误,但我现在看不到任何内容。 一个很好的资源:http://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7
/**
* Implements hook_menu().
*
* Here we define the new frontpages as well as a node view page for all them custom themes.
*/
function example_menu() {
$items = array();
foreach (example_custom_themes() as $theme) {
// Define the front page
$items[$theme] = array(
'page callback' => 'views_embed_view',
'page arguments' => array('VIEW', 'DISPLAY', $theme), // The front page view
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
'theme callback' => 'example_theme_callback',
'theme arguments' => array($theme),
);
// Define the node views
$items[$theme . '/node/%node'] = array(
'title callback' => 'node_page_title',
'title arguments' => array(1),
'page callback' => 'views_embed_view',
'page arguments' => array('VIEW', 'DISPLAY', $theme, 1), // The node view display
'access callback' => 'node_access',
'access arguments' => array('view', 1),
'theme callback' => 'example_theme_callback',
'theme arguments' => array($theme),
);
}
return $items;
}
/**
* Returns an array of the machine named custom themes.
*/
function example_custom_themes() {
return array('theme1', 'theme2');
}
/**
* Does nothing but return the theme name
*/
function example_theme_callback($theme) {
return $theme;
}
/**
* Check if the url matches the front page of a theme. If so, suggest front template.
*/
function example_preprocess_page(&$variables) {
if (in_array(arg(0), example_custom_themes()) && is_null(arg(1))) {
$variables['theme_hook_suggestions'] = 'page__front';
}
}