drupal7 node.tpl.php,Drupal 7自定义模块中为Node页面添加Breadcrumb

很多年前刚开始用Drupal时就记录过《直接调用drupal_set_breadcrumb设置面包屑导航条》,在Drupal 6的时候可以直接在node-abc.tpl.php里面使用这种办法,但Drupal 7以后node--abc.tpl.php里面直接调用drupal_set_breadcrumb就无效了,我就刻意添加了一个block,在block里面使用php来调用drupal_set_breadcrumb,这个办法一直都在使用。

最近在为以前做的一把刀词典系列的网站添加Emoji的时候,也想着把几个站内页添加面包屑,在网上搜了一下,还有一个更合适的办法,就是在自定义模块中调用hook_node_view_alter,在自定义模块cn_18dao.module中的代码如下:

//修改breadcrumb

function cn_18dao_node_view_alter(&$build) {

$node = $build['#node'];

$title = $node->title;

$shouzi = mb_substr($title,0,1);

$weizi = mb_substr($title,-1);

$view_mode = $build['#view_mode'];

if( $view_mode == "full" || $view_mode == "amp" || $view_mode == "mip") {

switch ($node->type) {

case "chengyucidian":

$breadcrumb = array();

$breadcrumb[] = l(t('Home'), '');

$breadcrumb[] = l("首字:$shouzi","shouzi/$shouzi");

$breadcrumb[] = l("接龙:$weizi","shouzi/$weizi");

drupal_set_breadcrumb($breadcrumb);

break;

case "xinhuazidian":

if (isset($node->field_bushou['und'][0]['value'])) {

$bushou = $node->field_bushou['und'][0]['value'];

}

if (isset($node->field_bihuashu2['und'][0]['value'])) {

$bihuashu2 = $node->field_bihuashu2['und'][0]['value'];

}

$breadcrumb = array();

$breadcrumb[] = l(t('Home'), '');

if (isset($bushou)) $breadcrumb[] = l("部首:$bushou","bushou/$bushou");

if (isset($bihuashu2)) $breadcrumb[] = l("部首后笔画:$bihuashu2","bushouhoubihua/$bushou/$bihuashu2");

drupal_set_breadcrumb($breadcrumb);

break;

case "hanyingcidian":

if (isset($node->field_fayin['und'][0]['value'])) {

$fayin = $node->field_fayin['und'][0]['value'];

$shouzimu = substr($fayin,0,1);

}

$breadcrumb = array();

$breadcrumb[] = l(t('Home'), '');

if (isset($shouzimu)) $breadcrumb[] = l("首字母:$shouzimu","shouzimu/$shouzimu");

drupal_set_breadcrumb($breadcrumb);

break;

case "yinghancidian":

if (isset($node->field_yingwen['und'][0]['value'])) {

$yingwen = $node->field_yingwen['und'][0]['value'];

$shouzimu = substr($yingwen,0,1);

}

$breadcrumb = array();

$breadcrumb[] = l(t('Home'), '');

if (isset($shouzimu)) $breadcrumb[] = l("首字母:$shouzimu","shouzimu/$shouzimu");

drupal_set_breadcrumb($breadcrumb);

break;

default:

}

}

}

这其实与专门添加一个block也类似,只是不需要专门添加一个block,程序看上去也更清晰。

上面4个case是四个子网站的内容类型,页面例子分别如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值