Имеется словарь "Угол", в нем термины: 10, 15, 20, 30
Есть желание добавить префикс и суффикс к заголовкам страниц термина словаря, чтобы на страницах термина отображалось "Угол 10 мм", "Угол 15 мм" и так далее.
Были попытки сделать taxonomy-term--vocabulary-machine-name.tpl.php, но не получилось самостоятельно разобраться что нужно добавлять в template.php чтобы всё заработало.
Поэтому нужна подсказка, как решить задачу.
Заранее спасибо.
Комментарии
Что-то такое:
<?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;
}
}
?>
Вам views принципиально не подходит?
/*Добавлено*/
Чем?
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 нужно будет дублировать их и тут. Но по крайней мере это работает. Хотя, конечно, очень хотелось бы сделать всё правильно и нормально. Если всё же нормальное решение простое, то подскажите верный путь, помогите встать на пусть истины.
А почему бы просто не добавить термину числовое поле с нужным суффиксом?
И почему нельзя было использовать вместо таксономии обыкновенное поле-список?
Я не понимаю какие это даст выгоды.
Хочу чтобы можно было сделать выборку страниц по этому признаку, и чтобы у страниц (upd: у страниц терминов таксономии) было полноценное описание, интересное а также полезное для поиска, с текстами и картинками.
На самом-то деле может и подходит, но я не знаю как решить эту задачу с помощью вьюхи.
Создать вьюху с полем заголовок, делать контекстный фильтр tid from url, фильтр по словарю, скрыть заголовок на страницах словаря и вывести тот что во вьюхе блоком?
Ну да
Вы разбираетесь в друпал гораздо лучше чем я, поэтому полагаю что вопрос риторический.
Если сделать всё как в описанном мной способе, то новый заголовок не впишется в текущую разметку сайта, будет отличаться.
Вьюхи жрут ресурсы, а у меня в силу безграмотности с ними на сайте и так перебор.
Загромождают сайт неочевидными и сложными способами решения простых вещей.
Насчет "лучше разбираюсь" - не знаю. Вы смогли накодить, а я б не стал ради подобного.
"Вьюхи жрут ресурсы" - во вьюхе можно кеширование настроить. Даже если не настраивать - еще не делал вьюхами ничего такого чтобы это тормозило на дешевых тарифах Ит-Патруль.
"не впишется в текущую разметку сайта" - во вьюхе можно добавить теги если поставить в выводимом поле галочку "Перезаписать результаты".
У друпал очень дружелюбное сообщество, к моему вопросу отнеслись на удивление терпимо и даже предложили готовое решение.
Имеется печальный опыт на сложных посещаемых сайтах.
Если хотите сделать хорошо, то не поможет.
Всё работает. Супер.
Спасибо!
<?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;
}
}
}
}?>
Небольшая ошибка закралась в вашу функцию.
<?php if ($term = taxonomy_term_load($tid))?>
- всегда истина, независимо от того какое значение вернет<?php function taxonomy_term_load(){}?>