Вы здесь

Как вывести в шаблоне page-vocabulary-1.tpl.php алиас адреса каталога?

0

Всем привет!
Drupal 6.
Есть шаблон page-vocabulary-1.tpl.php, отвечающий за вывод терминов таксономии 1-го словаря.
В шаблоне я могу вывести ID термина (tid).
Есть алиасы каталога товаров ubercart, типа для "catalog/tid" (catalog/5) алиасом является, к примеру "pylesosy"
Как мне в шаблоне page-vocabulary-1.tpl.php вывести этот алиас "pylesosy"?

Версия Drupal: 
6.x
Вопрос задан 26.01.2017 - 19:35

Ответы

0

<?php echo url('catalog/' . $tid); ?>

Ответ дан 26.01.2017 - 22:40
Аватар пользователя xandeadx
xandeadx
1542
0

<?php print drupal_get_path_alias("catalog/{$tid}"); ?>

Ответ дан 27.01.2017 - 07:49
-1

Благодарю! Оба способа работают.
Для чего я, собственно, это делал.
В друпале есть известная проблема, когда к url таксономии или товара добавляешь любые символы, то не выдаётся ошибка 404, а просто показывается страница таксономии. Отчасти проблема решается мета-тегом canonical, но, всё же иногда поисковики индексируют такие страницы, игнорируя этот мета-тег.
Идеальное решение - 301 редирект со всех этих страниц таксономии на соответствующие алиасы каталога.
Настроить 301 редирект при помощи htaccess в этом случае не получится, ведь адреса все разные, да и таксономия используется не только для каталога товаров, но и для блога, рассылки и т.п.

Сейчас я переопределил в template.php шаблон для таксономии 1-го словаря (где все товары) на page-vocabulary-1.tpl.php и в этом файле прописал:

<?php
$cat = taxonomy_get_term(arg(2));
$caturl=drupal_get_path_alias("catalog/{$cat->tid}");
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://site.ru/$caturl");
?>

Всё работает, теперь на сайте практически нет дублирующихся страниц.
Вот только при обращении к странице https://site.ru/taxonomy/term/9 почему то сначала происходит переадресация на алиас термина таксономии, а потом уже на нужный алиас каталога.

Причём, я проверял, на странице taxonomy/term/9 предложенные Вами команды выводят правильный алиас каталога. Т.е. по идее должна получаться переадресация сразу на него, без всяких промежуточных переадресаций на алиас термина.

Проблема это не так страшна, т.к. к страницам https://site.ru/taxonomy/term/9 обращений я не замечал, а при обращении к битой ссылке переадресация работает как надо.

Однако, всё же хочется это исправить.
И подскажите, может разумнее настроить 301 редирект где-то на более раннем этапе, к примеру в том же template.php? Ведь так нагрузка на сервер и скорость ответа должна вырасти. Если это возможно, подскажите, пожалуйста, как это сделать.

Ответ дан 27.01.2017 - 09:26