Drupal 6: Как вы печатаете термины таксономии как класс тела CSS? - PullRequest
1 голос
/ 18 октября 2010

В Drupal 6, как вы печатаете термин таксономии как класс тела CSS?

Я нашел этот фрагмент, который позволяет вам печатать почти каждый аспект контента Drupal как класс тела, но это не так.t включают термины таксономии:

http://www.davidnewkerk.com/book/122

Возможность печатать термины таксономии в качестве класса тела очень важна для процессов создания тем, поэтому я удивлен, что решение не всегда доступно.

Ответы [ 2 ]

0 голосов
/ 27 октября 2010

После большой кропотливой работы я нашел очень простой способ сделать это.

На 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-" помещает слова таксономия и тире перед каждым термином класса тела,Вы можете редактировать это, как вы хотите, чтобы получить результаты, которые вы требуете.

0 голосов
/ 18 октября 2010

Проверьте, какие переменные передаются в шаблон страницы, выполнив print_r($vars) или dpm($vars) в функции предварительной обработки страницы или с помощью модуля http://drupal.org/project/devel_themer.Использование dpm требует установки модуля devel.

Вы обнаружите, что некоторые темы передают $taxonomy как переменную в page.tpl.php.Если это не так, вы можете найти термины таксономии в переменной $node, которая также доступна в файле page.tpl.php в некоторых темах.

(Вышесказанное относится и к моей статье на тему слияниямарина http://drupal.org/project/acquia_marina).Как только у вас появятся эти термины таксономии, вы легко сможете распечатать их в своих классах тела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...