После большой кропотливой работы я нашел очень простой способ сделать это.
На Drupal Snippets , есть фрагмент, который позволяет распечатывать термины таксономии, применяемые к каждой странице.как текст
Единственная проблема заключается в том, что во фрагменте будут напечатаны все пробелы или знаки пунктуации, входящие в термин таксономии, что не подходит для классификации тела.
Однако, добавив команду str_replace, вы можетеуберите все пробелы и знаки препинания.
Я уверен, что есть другие люди, которые хотят печатать термины таксономии как классы тела, поэтому, чтобы сохранить их, вот код, который я использовал с добавленной командой str_replace.
Поместите в файл template.php следующее:
function getTerm($label, $vid, $link) {
$node = node_load(array('nid'=>arg(1)));
foreach((array)$node->taxonomy as $term){
if ($term->vid == $vid){
if ($link){
$link_set[] = l($term->name, taxonomy_term_path($term));
} else {
$link_set[] = $term->name;
}
}
}
if (!empty($link_set)){
$label = ($label) ? "<strong>$label </strong>" : "";
$link_set = $label.implode(', ', $link_set);
}
$link_set = str_replace(' ', '_', $link_set);
$link_set = str_replace('&', 'and', $link_set);
$link_set = strtolower($link_set);
return $link_set;
}
Поместите в файл Page.tpl.php следующее:
<body class="taxonomy-<? print getTerm(false, 1, false);?>">
Надеюсь, это поможет всем, у кого возникла такая же проблема.
Дополнительные советы: (1) В коде, который я разместил, единственная пунктуация, которая вычеркнута, - это амперсанд (то есть '&').Если у вас есть другие знаки пунктуации, используйте следующее:
$ link_set = str_replace ('INSET_PUNCTUATION_HERE', 'INSERT_REPLACEMENT_HERE', $ link_set);
Поместите эту команду под другими строками $ link_setв коде, который я опубликовал для template.php.
(2) В коде page.tpl.php, который я разместил, часть "taxonomy-" помещает слова таксономия и тире перед каждым термином класса тела,Вы можете редактировать это, как вы хотите, чтобы получить результаты, которые вы требуете.