2012-08-02 57 views
1

我想根据url别名创建一个drupal页面模板。 她目前的状况:基于url别名的Drupal页面模板

我创建了一个名为test的页面,url的别名也是test

基于本文件的页面模板 - http://drupal.org/node/1089656是:page--test.tpl.php

我清理了drupal他们的缓存,但仍然显示此页面的默认页面模板。

什么可能是错误?

回答

1

page--test.tpl.php不起作用,因为Drupal使用的是真实路径page--node--#.tpl.php。为了让Drupal的认识别名路径,你必须添加别名路径的像这样的主题部分建议:

function MYMODULE_preprocess_page(&$vars, $hook) { 
    // only do this for page-type nodes and only if Path module exists 
    if (module_exists('path') && isset($vars['node']) && $vars['node']->type == 'page') { 
    // look up the alias from the url_alias table 
    $source = 'node/' .$vars['node']->nid; 
    $alias = db_query("SELECT alias FROM {url_alias} WHERE source = '$source'")->fetchField(); 

    if ($alias != '') { 
     // build a suggestion for every possibility 
     $parts = explode('/', $alias); 
     $suggestion = ''; 
     foreach ($parts as $part) { 
     if ($suggestion == '') { 
      // first suggestion gets prefaced with 'page--' 
      $suggestion .= "page--$part"; 
     } else { 
      // subsequent suggestions get appended 
      $suggestion .= "__$part"; 
     } 
     // add the suggestion to the array 
     $vars['theme_hook_suggestions'][] = $suggestion; 
     } 
    } 
    } 
} 

来源:http://groups.drupal.org/node/130944#comment-425189