[Drupal 7]Токен для пути термина с его родителями

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

Аватар пользователя zardoz zardoz 12 марта 2011 в 6:33

Доброго времени суток!

В D6 для создания алисов терминам таксономии через pathauto был такой токен [catpath-raw](путь к термину вместе с родительскими терминами). В D7 я ничего не нашёл для повторения такого функционала. Может плохо искал. наваял маленький модуль, он даже работает как мне нужно. Но есть маленькая проблема - в настройках замены пришлось убрать действие для слеша, что не очень хорошо. Словарь для которого будет использоваться этот токен заполняется админами. Но там где пользовательский ввод наверное это чревато не правильными путями...

Вот модуль. Может кто подскажет как обойти этот слеш?

<?php
function token_extra_token_info() {
    
$info = array();
    
$info['tokens']['term']['catpath-raw'] = array(
        
'name' => t('catpath-raw'),
        
'description' => t('catpath-raw.'),
    );
    return 
$info;
}

function 

token_extra_tokens($type$tokens, array $data = array(), array $options = array()) {
    
$replacements = array();
    
$url_options = array('absolute' => TRUE);
    if (isset(
$options['language'])) {
        
$url_options['language'] = $options['language'];
        
$language_code $options['language']->language;
    }
    else {
        
$language_code NULL;
    }
    
$sanitize = !empty($options['sanitize']);
    
    if (
$type == 'term' && !empty($data['term'])) {
        
$term $data['term'];
        foreach (
$tokens as $name => $original) {
            switch (
$name) {
                case 
'catpath-raw':
                    
$parent_terms taxonomy_get_parents_all($term->tid);
                    
reset($parent_terms);
                    
$i 0;
                    foreach (
$parent_terms as $key => $term) {
                        if (
$i <> 0) {$path $term->name.'/'.$path;}
                        else {
$path $term->name;}
                        
$i++;
                    }
                    
$replacements[$original] = check_plain($path);
                break;
            }
        }
    }
    return 
$replacements;
}
?>

Комментарии

Аватар пользователя vitok vitok 4 мая 2011 в 22:17

Устанавливаем Entity APIв него входит модуль "entity tokens" который даст возможность для pathauto выбрать токен(ы) поля термина т.е. урл нужного тега.