Патч для корректной работы taxonomy_menu и pathauto

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

Аватар пользователя Virr Virr 9 апреля 2008 в 9:10

Итак, моя первая запись на drupal.ru Smile Надеюсь кому-нибудь будет полезно Smile

Проблема:

Ссылки на пункты меню, созданные taxonomy_menu, имеют вид:

categories/1/2/3
technology/1/2/3

несмотря на установленный pathauto.

Решение:

Открываем файл taxonomy_menu.inc в sites/all/modules/taxonomy_menu/
Ищем в нем следующие строчки:

foreach ($tree as $term) {
if ($term->depth <= $old_depth) {
$slashes_to_remove = $old_depth - $term->depth + 1;
for ($i = 0; $i < $slashes_to_remove; $i++) {
$old_path = substr($old_path, 0, strrpos($old_path, '/'));
}
}
$path = $old_path .'/'. $term->tid;
$old_depth = $term->depth;
$old_path = $path;

Меняем их на:

foreach ($tree as $term) {
if ($term->depth <= $old_depth) {
$slashes_to_remove = $old_depth - $term->depth + 1;
for ($i = 0; $i < $slashes_to_remove; $i++) {
$old_path = substr($old_path, 0, strrpos($old_path, '/'));
}
}
$path = $old_path .'/'. $term->tid;

if($alias = drupal_lookup_path('alias','taxonomy/term/' . $term->tid)) path_set_alias($path, $alias);

$old_depth = $term->depth;
$old_path = $path;

Решение нашел здесь

Комментарии

Аватар пользователя neochief neochief 10 апреля 2008 в 11:37

Как ни странно, я тоже вчера над этим работал. Мне показалось логичнее снести нафиг их упоминания о словаре (это чуть выше вашего кода в модуле):

$path = variable_get('taxonomy_menu_display_page', 'category') .'/'. $vid; //было
$path = variable_get('taxonomy_menu_display_page', 'category'); //стало

После этого, в админке можно задать вместо стандартного 'category' обычное 'taxonomy/term' и получить в меню все ссылки уже с алиасами (система меню подгружает алиасы автоматически).

Аватар пользователя Leon_uman Leon_uman 7 августа 2008 в 20:07

Если делать так как советует ТС - то тогда почему-то в переменной $terms (node.tpl.php) пропадают алиасы.
А если как neochief - то все пункты сливаються, нет разделения на словари.
Вообщем решение все еще ищеться, помогите кто знает как исправить такой досадный баг.

Аватар пользователя Sywooch Sywooch 5 февраля 2009 в 5:59

"neochief" wrote:
После этого, в админке можно задать вместо стандартного 'category' обычное 'taxonomy/term' и получить в меню все ссылки уже с алиасами (система меню подгружает алиасы автоматически).

Все то оно так но вот работает только с одноуровневым вложением!
Если есть вложение второго уровня то получаем адрес
taxonomy/term/1/2
Может есть решение и для этого?

Хотя я в шестом друпале тестировал.