taxonomy term_name render override [РЕШЕНО]

Главные вкладки

Аватар пользователя slusla6 slusla6 16 июля 2016 в 1:25

Имеется словарь "Угол", в нем термины: 10, 15, 20, 30
Есть желание добавить префикс и суффикс к заголовкам страниц термина словаря, чтобы на страницах термина отображалось "Угол 10 мм", "Угол 15 мм" и так далее.

Были попытки сделать taxonomy-term--vocabulary-machine-name.tpl.php, но не получилось самостоятельно разобраться что нужно добавлять в template.php чтобы всё заработало.

Поэтому нужна подсказка, как решить задачу.

Заранее спасибо.

Комментарии

Аватар пользователя chimir chimir 16 июля 2016 в 4:44

Что-то такое:

<?php
function mytheme_preprocess_page(&$vars) {
  if (
arg(0) == 'taxonomy' && arg(1) == 'term') {
    
$tid arg(2);
    
$term taxonomy_term_load($tid);
    
$name t('Angle !name mm', array('!name' => $term->name));
    
$vars['title'] = $name;
  }
}
?>
Аватар пользователя slusla6 slusla6 17 июля 2016 в 9:15

chimir
К сожалению не удалось разобраться с этим кодом, вижу что это было бы лучшее решение

VasyOK
Не подходит.

==
Не хотелось так делать, но единственный доступный пониманию способ оказался - сделать page--vocabulary--mashine_name.tpl.php и в template.php

<?phpfunction THEMENAME_preprocess_page(&$vars) {
  if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) {
    $term = taxonomy_term_load(arg(2));
    $vars['theme_hook_suggestions'][] = 'page__vocabulary__' . $term->vocabulary_machine_name;
  }
}?>

Неудобство данного способа очевидно, при изменениях в page.tpl.php нужно будет дублировать их и тут. Но по крайней мере это работает. Хотя, конечно, очень хотелось бы сделать всё правильно и нормально. Если всё же нормальное решение простое, то подскажите верный путь, помогите встать на пусть истины.

Аватар пользователя Orion76 Orion76 17 июля 2016 в 11:18
1

А почему бы просто не добавить термину числовое поле с нужным суффиксом?

И почему нельзя было использовать вместо таксономии обыкновенное поле-список?

Аватар пользователя slusla6 slusla6 17 июля 2016 в 13:45

Orion76 wrote:

А почему бы просто не добавить термину числовое поле с нужным суффиксом?


Я не понимаю какие это даст выгоды.
Orion76 wrote:

И почему нельзя было использовать вместо таксономии обыкновенное поле-список?


Хочу чтобы можно было сделать выборку страниц по этому признаку, и чтобы у страниц (upd: у страниц терминов таксономии) было полноценное описание, интересное а также полезное для поиска, с текстами и картинками.

Аватар пользователя slusla6 slusla6 17 июля 2016 в 13:44

VasyOK wrote:

Вам views принципиально не подходит?

/*Добавлено*/

Чем?


На самом-то деле может и подходит, но я не знаю как решить эту задачу с помощью вьюхи.
Создать вьюху с полем заголовок, делать контекстный фильтр tid from url, фильтр по словарю, скрыть заголовок на страницах словаря и вывести тот что во вьюхе блоком?

Аватар пользователя slusla6 slusla6 18 июля 2016 в 0:00

Вы разбираетесь в друпал гораздо лучше чем я, поэтому полагаю что вопрос риторический.
Если сделать всё как в описанном мной способе, то новый заголовок не впишется в текущую разметку сайта, будет отличаться.
Вьюхи жрут ресурсы, а у меня в силу безграмотности с ними на сайте и так перебор.
Загромождают сайт неочевидными и сложными способами решения простых вещей.

Аватар пользователя VasyOK VasyOK 18 июля 2016 в 11:37

Насчет "лучше разбираюсь" - не знаю. Вы смогли накодить, а я б не стал ради подобного.
"Вьюхи жрут ресурсы" - во вьюхе можно кеширование настроить. Даже если не настраивать - еще не делал вьюхами ничего такого чтобы это тормозило на дешевых тарифах Ит-Патруль.
"не впишется в текущую разметку сайта" - во вьюхе можно добавить теги если поставить в выводимом поле галочку "Перезаписать результаты".

Аватар пользователя slusla6 slusla6 18 июля 2016 в 13:53

VasyOK wrote:
Вы смогли накодить, а я б не стал

У друпал очень дружелюбное сообщество, к моему вопросу отнеслись на удивление терпимо и даже предложили готовое решение.
VasyOK wrote:
еще не делал вьюхами ничего такого чтобы это тормозило

Имеется печальный опыт на сложных посещаемых сайтах.
VasyOK wrote:
можно добавить теги

Если хотите сделать хорошо, то не поможет.

Аватар пользователя slusla6 slusla6 17 июля 2016 в 21:15

chimir wrote:

Что-то такое:


Всё работает. Супер.
Спасибо!

<?phpfunction mytheme_preprocess_page(&$vars) {
  if (arg(0) == 'taxonomy' && arg(1) == 'term') {
    $tid = arg(2);

    // Only alter if we have a valid taxonomy.
    if ($term = taxonomy_term_load($tid)) {

       // Check that the taxonomy is a part of vocab ID = 1
       // @TODO: replace 1 with specified vocabulary ID.
       if ($term->vid == 1) {
         $name = t('Длина отрезка !name мм', array('!name' => $term->name));
         $vars['title'] = $name;
       }
    }
  }
}?>

Аватар пользователя adrenalinesar adrenalinesar 2 августа 2016 в 12:51

Небольшая ошибка закралась в вашу функцию.

<?php if ($term taxonomy_term_load($tid))?> - всегда истина, независимо от того какое значение вернет <?php function taxonomy_term_load(){}?>