drupal 列表页

刚开始以为drupal会为我生成个列表页 查了很多资料后最终还是认定了我还是天真的。。。。。

我的希望就是 我创建一个分类,如:中国-国内新闻-河北 河南 山东 山西。。。 这些都是列表,而且结构都是一样的,而 外国-美国新闻-旧金山 加州 底特律。。。 这个结构跟国内新闻是不同的,那么 我如何能更好的控制模版呢?

drupal中page的读取顺序是

page--node--edit.tpl.php
page--node--1.tpl.php
page--node.tpl.php
page.tpl.php

那么 我无法通过分类读取到自己想要的模版 如 page--hebei.tpl.php

在drupal官方论坛中讨论这个的人还真不少 其实已经有了最佳方案!

template.php中 添加代码

<?php
function themeName_preprocess_page(&$vars, $hook) {
  if (isset($vars['node'])) {
    // If the node type is "blog_madness" the template suggestion will be "page--blog-madness.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. $vars['node']->type;
  }
}
?>

就是它了!~虽然简短 但是解决问题

还有个更长的 应该算是完美版吧

<?php
function phptemplate_preprocess_page(&$variables) {
global $user;
if (module_exists('path')) {
    //allow template suggestions based on url paths. 
    $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
    if ($alias != $_GET['q']) {
      $suggestions = array();
      $template_filename = 'page';
      foreach (explode('/', $alias) as $path_part) {
        $template_filename = $template_filename . '-' . $path_part;
        $suggestions[] = $template_filename;
      }
         $alias_array =  explode('/', $alias);
        $variables['template_files'] = $suggestions;
    }

    // Add a single suggestion.
    if (module_invoke('throttle', 'status') && isset($user->roles[1])) {
     $variables['template_file'] = 'page-busy';
    }

    // Add multiple suggestions.
    if (!empty($user->roles)) {
     foreach ($user->roles as $role) {
       $filter = '![^abcdefghijklmnopqrstuvwxyz0-9-_]+!s';
       $string_clean = preg_replace($filter, '-', drupal_strtolower($role));
       $variables['template_files'][] =  'page-'. $string_clean;
     }
    if (drupal_is_front_page()) {
         $variables['template_file'] = 'page-front';
    }
    }
  }
}
?>

其他规则:

如果有一个node/2 那么它的page页模板名字为:page--node--2.tpl.php

如果有新建 内容内型 newslistcontent 那么它的模板名字为:page--newslistcontent.tpl.php

分类taxonomy copying /modules/taxonomy/taxonomy-term.tpl.php 改名为 taxonomy-term--tags.tpl.php 如:taxonomy-term--newslist.tpl.php

node-type.tpl.php的例子:node--newslistcontent.tpl.php  

某term的page布局更改

page--taxonomy--term--33.tpl.php



如果希望两个节点采用不同的布局,可以用page--node--(数字).tpl.php,但是这样写不直观,最好能用一看就懂的文字描述,下面的代码解决了这一问题:

<?php
function MYTHEME_preprocess_page(&$variables, $hook) {   
   //Add multiple suggestions for pages based on Node
   if(arg(1) == 3) {  //For node 3
    $variables['theme_hook_suggestions'][] =  'page__contact';
   } if(arg(1) == 4) {   //For node 4
    $variables['theme_hook_suggestions'][] =  'page__about';
   }
}
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值