Задача:
Запомнить из какого термина таксономии пользователь попал в ноду и вывести этот термин в breadcrumb
Решение:
Передать в url переменную ?ft=tid
В settings.php:
<?php
function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
if(arg(0)=='taxonomy' && (is_numeric(arg(2)) || arg(2)=='all')){
if (preg_match('|^node(/.*)|', $original_path, $matches)) {
$path = $path. '?ft='. arg(2);
}
}
if(arg(0)=='node' && (is_numeric(arg(1)))){
if (preg_match('|^node(/.*)|', $original_path, $matches) || preg_match('|^firm(/.*)|', $original_path, $matches)) {
if($_GET['ft']) {
$ft=$_GET['ft'];
$node1=node_load(arg(1));
foreach ($node1->taxonomy as $term) {
$ft=$term->tid;
if($_GET['ft']==$term->tid){
break;
}
}
$path = $path. '?ft='. $ft;
}
}
}
}
?>
Устанавливаем модуль taxonomy_breadcrumb.
На нужных страницах выводим php-блок с кодом:
<?php
if($ft){
$breadcrumb = taxonomy_breadcrumb_generate_breadcrumb($ft);
if(arg(0) =='node'){
$breadcrumb[] = l($node->title, 'node/'.$node->nid);
}
drupal_set_breadcrumb($breadcrumb);
}?>