Добрый день!
Прошу общественность подсказать решение.
Есть словарь, русские термины в нем и каталог статей категоризированный по этим терминам. Хочу сделать с помощью Views+Pathauto урлы вида /имя_словаря/термин/ со списком статей по термину, а на верхнем уровне /имя_словаря/ чтобы выдавался список терминов плюс количество статей в нем. При этом:
- важно чтобы в урлах не было кирилицы (т.е. либо транслитерация либо синоним на латинском)
- при выводе списка терминов при просмотре страницы словаря (/имя_словаря/) выводились имена терминов (кои на русском)
Проблема первая - имя словаря как факт отсутствует во Views, есть только id. Да и нет у имени словарей синонимов, чтобы вписать латинский вариант.
Проблема вторая - насколько я понимаю избавится от кириллических терминов в урлах можно только посредством синонимов. Но если во Views в аргументе используется синонимы то и вывод терминов тоже в виде синонимов (но синонимы у нас заданы латинские, а нужно отобразить имя которое русское).
В общем, советуйте как найти решение!
Комментарии
ну кароче так.
1) ставите модуль taxonomy_redirect и настраиваете пути для словарей tax1/!tid, tax2/!tid и тд.
2) настраиваете pathauto, он вам все как надо транслитеризирует имя_словаря/имя_термина
3) views2 работает только с реальными путями. поэтому создаете 1 вью с отображениями page для каждого словаря, только с разными путями tax1/% и тд. в настройках аргумента ставите
Action to take if argument is not present: Summary, sorted descending
4) заходите опять в настройки pathauto и добавляете путям tax1, tax2 соответствующие алиасы.
5) усё.
Большое спасибо, попробую.
Получилось, но почему-то при выводе урла /имя_словаря/ не может найти страницу, хотя должен выводится суммари (я его вижу в Views превью). Action to take if argument is not present: Summary, sorted descending выбрано. Что делаю не так?
Теперь еще есть другое желание - чтобы вывод /имя_словаря/all давал список всех нод (нужного типа) но сгруппированных по терминам? (по умолчанию они выводятся все скопом) т.е.:
Заголовок <Термин_1>
- Нода 1
- Нода 4
- Нода 8
Заголовок <Термин_2>
- Нода 2
- Нода 3
- Нода 5
И еще вопрос - как темизировать/управлять выводом Views суммари? Когда я добьюсь его отображения, хотелось бы добавить туда несколько деталей, к примеру поля с описанием терминов.
4й пункт сделали?
создайте страницу во вью tax1/all, а алиас /имя_словаря/all. row style: поля
добавте туда 2 поля
Taxonomy: Term тут галку поставить Exclude from display
Node: Nid
в Style выставить группировку по полю таксономии
после этого удалите из предыдущих отображений wildcard.
затем надо темизировать вид с путем tax1/all
создайте шаблон имя нужного файла найдете в Theme: Information, нужен будет шаблон для
Field Node: Nid (ID: nid)
$nid = $row->{$field->field_alias};
$node = node_load($nid);
print node_view($node, TRUE);
?>
потом рескан темплейтс жмакните и усё. надеюсь понятно обьяснил
Еще раз спасибо.
Похоже я не верно добавляю алиас для словаря таксономии. Не подскажите как это делается правильно?
Такого пути taxonomy/vocabulary/[vid] в ядре друпала нет, как же сделать алиас в моем случае?
ну в настройках там можно руками добавить путь
Это понятно, не настолько я глуп Просто как я написал выше пути taxonomy/vocabulary/[vid] нету в друпале и pathauto естественно не принимает такой алиас.
а вы какие пути назначили во views для терминов?
Словарь у меня один Articles, и путь во Views задан как section/articles/%.
Есть авто-алиасы для терминов вида section/[vocab-raw]/[catpath-raw].
В Taxonomy Redirect задан редирект для словаря articles - section/articles/!name
путь во views надо просто section/articles
в Taxonomy Redirect указать section/articles/!tid, а во views аргументе term id
вообще я сам вначале вам неправильно написал, в 3м пункте пути надо писать без %, просто tax1
Сделал путь без % и в Taxonomy Redirect - section/articles/!tid для словаря. Суммари отображается, все работает, но и пути стали вида section/articles/2, а мне нужно section/articles/novosti.
Update: поменял аргумент обратно на Term и редирект на !name и вроде все работает как надо. Единственно не понял, почему мешала % передача аргумента в путь?
Касательно группированного вывода нод по терминам. Я попробовал сделать как вы советовали, и похоже все работает, но есть несколько моментов, которые я хочу изменить. А именно: убрать вывод перед телом каждой ноды термина к которому она привязан. Т.е. выводить только раз перед началом списка нод данного термина.
Спасибо за ваши ответы
Или, вариант еще проще, ИМХО - ставите модуль Taxonomy Views Integrator. Он позволяет для словарей и даже для отдельных терминов делать разные виды. Включаете стандартный вьюз для таксономии, затем экспортируете его, для того чтобы импортировать с нужным именем под нужный словарь (это важно).
Меняете все что вам нужно в выводе вьюса и будет вам счастье. На ура работает с синонимами. В путях вьюса ничего трогать не нужно.
С TVI я пробовал, но не вышло. Вернее, можно руками прописывать шаблоны вьюс для каждого словаря и термина, но нужно было автоматизированное решение. Именно этого я не смог добится от TVI.
И еще остро встал вопрос - как оттемизировать вывод после использования во Views шаблоне
print node_view($node, TRUE);
? Node-story.tpl.php на него не влияет.а должен
Очень странно, если должен. По факту devel themer info говорит, что при выводе используется views-view-unformatted.tpl.php.
Вернее, там есть views-view-unformatted.tpl.php, а внутри него node.tpl.php. Не понятно почему не используется node-story.tpl.php который присутствует в папке. В чем может быть причина?
а просто node.tpl.php в папке лежит?
Уже разобрался, его как раз и не было.
А множественный вывод термина я решил путем такого кода в views-view-unformatted--taxonomy-1--page-2.tpl.php (пхп знаю поверхностно, потому код вероятно страшненький):
<?php global $i, $headers; ?>
<?php if (!empty($title)):?>
<?php if (sizeof($headers) == 0 || !in_array(strip_tags($title), $headers)): ?>
<h3><?php print $title ?></h3>
<?php $headers[$i]=strip_tags($title); $i++; ?>
<?php endif; ?>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
<div class="<?php print $classes[$id]; ?>">
<?php print $row; ?>
</div>
<?php endforeach; ?>
А как сделать тоже самое (сабж), если используется Category?
У меня для Category не работает PathAuto — в нём нельзя корректно задать авто-пути для иерархии.
Что делать? Вернуться от Контейнеров и Категорий к Словарям и Терминам?