Создание псевдонима URL на основе термина таксономии
У меня есть категория Vocab и четыре термина в ней. то, что я хочу сделать, - это если контент помечен терминалом, в частности, скажем "term1", чтобы URL генерировался как word1/[node:title], а для всех остальных тегов только стандартное форматирование URL.
Если бы я хотел, чтобы термин в URL-адресе явно использовал замену шаблона, но я бы хотел использовать другое слово, если используется определенный тег
2 ответа
Нашел простой способ на самом деле для всех, кому нужно подобное решение, использовать модуль Entity Reference.
http://drupal.org/project/entityreference
Я только что создал новое поле для ссылки на сущность пользователя, затем вы можете выбрать любую сущность в drupal для ссылки. (то есть, чтобы вы могли выбрать термин / контент / что-нибудь)
Я не могу придумать простой способ "подключи и работай" для достижения этой цели. Возможно, вам придется создать свой собственный токен для "Шаблон пути по умолчанию" в настройках псевдонима URL Pathauto:
/**
* Implementation of hook_token_info().
*/
function MODULE_token_info() {
$info['tokens']['node']['node-term-path'] = array(
'name' => t('Node path by term'),
'description' => t('The path to a node based on its taxonomy terms.'),
);
return $info;
}
/**
* Implementation of hook_tokens().
*/
function MODULE_tokens($type, $tokens, array $data = array(), array $options = array()) {
$replacements = array();
if ($type == 'node' && !empty($data['node'])) {
$node = $data['node'];
foreach ($tokens as $name => $original) {
switch ($name) {
case 'node-term-path':
$items = field_get_items('node', $node, 'TAXONOMY_FIELD_NAME');
foreach ($items as $item) {
$tids[] = $item['tid'];
}
if (in_array(TID_OF_TERM1, $tids)) {
// Path for nodes with term1
$replacements[$original] = 'word1/'. pathauto_cleanstring($node->title);
}
else {
// Path for other nodes
$replacements[$original] = 'content/'. pathauto_cleanstring($node->title);
}
break;
}
}
}
return $replacements;
}