【问题标题】:Naming Drupal 7 template files based on url根据 url 命名 Drupal 7 模板文件
【发布时间】:2011-07-03 02:41:07
【问题描述】:

如果我有一个 url 别名为“/api/user/create”的页面,如何根据 url 命名模板文件,例如“page-api-user-create.tpl.php”。

【问题讨论】:

    标签: drupal templates


    【解决方案1】:

    你需要给它命名:

    page--api--user--create.tpl.php
    

    (注意文件名中的双破折号)。

    请参阅http://drupal.org/node/1089656 了解更多信息。

    【讨论】:

    • 这可以用于节点别名吗?
    • 正如我在上面链接的页面上所解释的,对于节点,您可以使用以下模板:node--[type|nodeid].tpl.php
    • 那是type/nodeid,我是说node url别名。
    • 不,别名是不可能的。 nids 是恒定的,别名可以以任何你想要的方式在任何时候改变,即使是顺便说一句,那也没有意义。
    • 嗯,实际上,除非您在相关的预处理函数中定义自己的钩子建议,否则可能是的,您可以拥有它们。见drupal.org/node/223440#custom-suggestions
    【解决方案2】:

    您可以设置页面级模板文件来反映 url,正如 Maciej Zgazdaj 所解释的那样。

    要对节点级模板文件执行相同操作,您必须将其添加到您的 template.php 文件中:

    function YOURTHEME_preprocess_node(&$variables) {
    
        $url = str_replace("-", "", $variables['node_url']);
        $urlParts = explode("/", $url);
        unset($urlParts[0]);
    
        if($urlParts[1] !== false) {
        $out = array();
        $sug = "node";
    
        foreach($urlParts as $val) {
            $sug .= "__".$val;
            $out[] = $sug;
        }
    
        $variables['theme_hook_suggestions'] = 
            array_merge($variables['theme_hook_suggestions'], $out);
    
        }
    }
    

    将 YOURTHEME 替换为 .. 以及您的主题。使用 devel_themer 检查提供的建议。

    【讨论】:

      猜你喜欢
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多