Делаю сайт туристической компании. На сайте есть словарь таксономии, терминами которого являются страны, города и т.п. Для этих терминов автоматом генерируются замечтальные урлы вида (например) skandinaviya/finlyandiya/kotka, skandinaviya/finlyandiya/helsinki.
Также на сайте есть вьюхи, которые показывают отели в конкретном городе, туры, коттеджи т.п.
Системный урл таких вьюх генерируется такой taxonomy/term/%/hotels, taxonomy/term/%/tours, taxonomy/term/%/cottages
Проблема в том, что вьюха понимает только системные урлы, но не понимает пути вида skandinaviya/finlyandiya/helsinki/hotels (что логично)
Поиск решения на скорую руку ничего не дал, поэтому было решено написать собственный простенький модуль, который берет словарь и генерирует для него правильные алиасы.
Делюсь своим велосипедиком с народом. Если знаете способы проще/лучше, то просьба отписаться.
<?php
function nicktour_alias_menu() {
$items['admin/config/search/nicktour_alias'] = array(
'title' => 'Nicktour Good Alias Generate',
'page callback' => 'nicktour_alias_form_gen_page',
'access callback' => TRUE,
'access argument' => array('administer site configuration'),
);
return $items;
}
function
nicktour_alias_form_gen_page() {
return drupal_render(drupal_get_form('nicktour_alias_form'));
}
function
nicktour_alias_form() {
$form=array();
$form['title'] = array('#markup' => 'Волшебная кнопка для генерирования красивых урлов для вьюх таксономии');
$form['submit'] = array('#type' => 'submit', '#value' => t('Generate'));
return $form;
}
function
nicktour_alias_form_submit($form, &$form_state) {
$custom_paths=array('hotels','tours','cottages');
$tree = taxonomy_get_tree(2);
foreach ($tree as $treeitem) {
$tax_path_alias=drupal_lookup_path('alias','taxonomy/term/'.$treeitem->tid);
if ($tax_path_alias) {
foreach ($custom_paths as $custom_paths_item) {
if (!(drupal_lookup_path('alias','taxonomy/term/'.$treeitem->tid.'/'.$custom_paths_item))) {
$path = array(
'source'=> 'taxonomy/term/'.$treeitem->tid.'/'.$custom_paths_item,
'alias' => $tax_path_alias.'/'.$custom_paths_item,
);
path_save($path);
}
}
}
}
}
?>
Комментарии
что-то вы намудрили)) ставится hierarchy select и в синонимах прописывается токен, словарь первого уровня, второго и т.д. ... для интеграции вьюхи в таксономию используйте TVI
Если https://drupal.org/project/subpathauto или https://drupal.org/project/path_alias_xt не срабатывает для нужного функционала - другого ничего для этого не видел.
Вы не совсем поняли, о чем именно я спрашивал. Hierarchy Select и TVI здесь вообще ничем не помогут )
Похоже на то, что нужно. Посмотрю функционал и отпишусь.