Генерация url alias для динамических страниц. Для всяких вьюх и т.п. Не изобрел ли я велосипед?

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

Аватар пользователя Koreychenko Koreychenko 5 августа 2013 в 13:04

Делаю сайт туристической компании. На сайте есть словарь таксономии, терминами которого являются страны, города и т.п. Для этих терминов автоматом генерируются замечтальные урлы вида (например) 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);
            }
          }
      }
   }
    
}
?>

Комментарии

Аватар пользователя k_dmitry k_dmitry 5 августа 2013 в 13:37

что-то вы намудрили)) ставится hierarchy select и в синонимах прописывается токен, словарь первого уровня, второго и т.д. ... для интеграции вьюхи в таксономию используйте TVI

Аватар пользователя Koreychenko Koreychenko 5 августа 2013 в 15:01

"k_dmitry" wrote:
что-то вы намудрили)) ставится hierarchy select и в синонимах прописывается токен, словарь первого уровня, второго и т.д. ... для интеграции вьюхи в таксономию используйте TVI

Вы не совсем поняли, о чем именно я спрашивал. Hierarchy Select и TVI здесь вообще ничем не помогут )

"duozersk" wrote:

Если https://drupal.org/project/subpathauto или https://drupal.org/project/path_alias_xt не срабатывает для нужного функционала - другого ничего для этого не видел.

Похоже на то, что нужно. Посмотрю функционал и отпишусь.