Вопрос на счет token и pathauto...
Создаю иерархическую структуру подшивок. К примеру
Лекции -> Предмет -> Лекция 1
Хочу чтобы для них автоматически создавался вложенный url - исходя из названия. Для данного случая lekcii/predmet/lekcija-1
Для этого настраиваю автоалиас (pathauto) для типа book (подшивки) в виде book/[bookpath]/[title]
Что получается:
book/lekcii-predmet/lekcija-1
Замена / на - меня не устраивает. Исправляю файл pathauto.inc (строка 102):
Было: $pattern = '/[^a-zA-Z0–9]+/';
Стало: $pattern = '/[^a-zA-Z0–9\/]+/';
Т.е. добавляю символ '/' как "чистый" и он больше не заменяется на '-'. Теперь имеем адрес book/lekcii/predmet/lekcija-1
Ок, но есть одно но!
Модуль token генерит строку для [bookpath] - преобразуя каждый раз все заголовки в url. Но если я изменяю вручную для одного из пунктов alias, например 'predmet' на 'pr' (для сокращения), вложенные разделы будут по прежнему создаваться опираясь на title для страницы Предмет.
Что я имею ввиду. Я меняю alias predmet на pr (lekcii/pr/lekcija-1). Но создание новой страницы - создает url /lekcii/predmet/lekcija-2, а я хочу по аналогии /lekcii/pr/lekcija-2
Приведу код из файла token_node.inc
<?php
// Handle book nodes.
function book_token_values($type, $object = NULL) {
if ($type == 'node') {
$node = $object;
$tokens = array();
if ($node->parent) {
$path = book_location($node);
$tokens['book'] = check_plain($path[0]->title);
$tokens['book_id'] = $node->parent;
$bookhierarchy = book_location($node);
$bookpath = '';
foreach ($bookhierarchy as $bookelement) {
if ($bookpath == '') {
$bookpath = check_plain($bookelement->title);
}
else {
$bookpath = $bookpath . '/' . check_plain($bookelement->title);
}
}
$tokens['bookpath'] = $bookpath;
}
else {
$tokens['book'] = '';
$tokens['book_id'] = '';
$tokens['bookpath'] = '';
}
return $tokens;
}
}
?>
Тут видно - что путь создается на основе title:
$bookpath = $bookpath . '/' . check_plain($bookelement->title);
Можно ли как-то это изменить чтобы использовался не заголовок, а текущий url?
Не силен в php, но предполагаю что в объекте $bookelement хранятся и другие указатели. Не знаю только как посмотреть.
Прошу помощи. Заранее спасибо
Комментарии
Тоже мучаюсь со схожей проблемой. Решения пока не найдено?
Проблема в следующем:
Есть сайт с кучей нод в виде дерева (book). Т.е. главная статья, описывающая например бублики. Внутри неё по иерархии - статьи, описывающие типы бубликов, внутри них - размеры бубликов.
И каждая нода имеет довольно длинные названия, например такие:
---------------------------------------------------------
Лучшие бублики от компании "Бубликоид"
- Бублики из пшеницы с добавлением опилок
- - Бублики с осиновыми опилками
- - Бублики с филе из жуков-короедов
- Бублики из пластмассы с неоновой подсветкой
- - Неоновый бублик с логотипом вашей компании
- - Бублик с ручкой для подзарядки
---------------------------------------------------------
И мне хотелось бы построить ссылочную структуру натипа такой:
/bublics/
/bublics/wheat/
/bublics/wheat/filings/
/bublics/wheat/fillet/
/bublics/plastic/
/bublics/plastic/neon/
/bublics/plastic/recharge/
Т.е. получается что урлы генерить нужно не из названий, а из каких-то альтернативных данных, заданных вручную. Но где их задать и как настроить на это pathauto - никак что-то не додумаю. Кто уже сталкивался и придумал - подскажите плиз!
Т.к. задача у меня немного другая, то решил создать отдельную тему по своей проблеме. Просьба отвечать туда.