在Drupal 6中使用pathauto和token模塊可以使用如下模式創建url別名:[termpath-raw]/[title-raw]。Drupal 7 termpath在哪裏?
但是,在Drupal 7中情況並非如此。我知道D7仍然處於alpha版本,但測試版本很快就會在這裏發佈,並且它比D6 IMO更好。
此功能尚未推出?
在Drupal 6中使用pathauto和token模塊可以使用如下模式創建url別名:[termpath-raw]/[title-raw]。Drupal 7 termpath在哪裏?
但是,在Drupal 7中情況並非如此。我知道D7仍然處於alpha版本,但測試版本很快就會在這裏發佈,並且它比D6 IMO更好。
此功能尚未推出?
在Drupal 7的,字路徑意味着什麼很具體,很明顯的東西比什麼TERMPATH將引用不同,它看起來並不像有更換[*path]
令牌,只是還沒有采取任何已行動(雖然這是一個已知問題):BIKESHED: Token for a term or menu item's entire tree/hierarchy。
它看起來並不會成爲核心,並將保留一部分的貢獻令牌,甚至#D7CX承諾的項目,直到最終發佈完成他們的Drupal 7端口,這可能是接近年底。
令牌模塊共同維護者在這裏。這裏有更多的工作,因爲分類標記不是很簡單。他們現在是字段,而且我們還沒有爲D7字段寫入令牌支持。這是我們必須完成的事情。
我已經打破了我腦袋一下這個問題了好幾個月,現在我終於發現,似乎工作的解決方案:
http://drupal.org/node/741914#comment-5025862
總之,我創建了一個公開的幾個自定義模塊額外的令牌(可以在頁面標題或pathauto等模塊中使用)。在代碼隱藏中,令牌由節點或分類術語的完整分層分類路徑(有針對url的令牌和針對頁面標題的其他令牌)替換。
實際的實現可以在鏈接頁面的討論中找到。
我希望這可能會幫助一些人自己的實現。
您可以使用帶the issue queue補丁的taxonomy_entity_index模塊。唯一非常糟糕的是,您必須使用Drush命令在工作網站上構建索引,或以某種方式重新導入當前網站的內容。
我不記得在哪個沙箱項目中我發現了這個,但它是完美的解決方案。
taxonomy_path_token.info
name = Taxonomy Path Token
description = Taxonomy path token creates a path of parent taxonomy terms of a node
package = Token
core = 7.x
dependencies[] = token
taxonomy_path_token.module
<?php
/**
* Implements hook_tokens().
*/
function taxonomy_path_token_tokens($type, $tokens, array $data = array(), array $options = array()) {
$replacements = array();
if (!empty($tokens['taxonomy_path']) && !empty($data['node'])) {
if(!empty($options['sanitize'])) {
$sanitize = $options['sanitize'];
} else {
$sanitize = FALSE;
}
$node = $data['node'];
$replacements[$tokens['taxonomy_path']] = $sanitize ? check_plain(taxonomy_path_token_get_parents($node)) : taxonomy_path_token_get_parents($node);
}
if ($type == 'array' && !empty($data['array'])) {
$array = $data['array'];
foreach ($tokens as $name => $original) {
switch ($name) {
case 'join-path-except-first':
module_load_include('inc', 'pathauto');
$values = array();
foreach (element_children($array) as $key) {
$value = is_array($array[$key]) ? render($array[$key]) : (string) $array[$key];
$value = pathauto_cleanstring($value);
$values[] = $value;
}
array_shift($values);
$replacements[$original] = implode('/', $values);
break;
}
}
}
return $replacements;
}
/**
* Implements hook_token_info().
*/
function taxonomy_path_token_token_info() {
$info['tokens']['node']['taxonomy_path'] = array(
'name' => t('taxonomy_path'),
'description' => t('Custom taxonomy_path token.'),
);
$info['tokens']['array']['join-path-except-first'] = array(
'name' => t('Joined path'),
'description' => t('The array values each cleaned by Pathauto and then joined with the slash into a string that resembles an URL.'),
);
return $info;
}
function taxonomy_path_token_get_parents($node) {
module_load_include('inc','pathauto','pathauto');
if(!empty($node->field_tags)){
$tid = current($node->field_tags);
$tid = $tid[0]['tid'];
}
else{
return '';
}
$parents = taxonomy_get_parents_all($tid);
$paths = array();
foreach ($parents as $parent) {
$paths[] = pathauto_cleanstring($parent->name);
}
$paths = array_reverse($paths);
array_shift($paths);
$pathauto = implode('/', $paths);
return $pathauto;
}
那麼這個 「[節點:taxonomy_path]/[節點:標題]」 添加到您的pathauto模式。
很酷,謝謝Mark! – Booski 2010-08-26 19:59:09