ВопросЗаменить часть URL?

Подскажите как реализовать?
Задача:
Преобразовать пути вида taxonomy/term/10/nodetype в путь nazvanie_razdela/nodetype
(taxonomy/term/10/* -> nazvanie_razdela/*)

Проблема:
Модуль path может преобразовывать только явно указанные пути
taxonomy/term/10 -> nazvanie_razdela

Комментарии

Аватар пользователя Кто то из болота

Pathauto+Token?

12.01.2012 01:32
Аватар пользователя pantey
pantey написал:

Pathauto работает по такому же принципу что и path...только при явном указании адреса.

12.01.2012 08:50
Аватар пользователя pantey
pantey написал:

нашёл вот такой код:

 
/**
 * Given an alias, return its Drupal system URL if one exists. Given a Drupal
 * system URL return one of its aliases if such a one exists. Otherwise,
 * return FALSE.
 *
 * @param $action
 *   One of the following values:
 *   - wipe: delete the alias cache.
 *   - alias: return an alias for a given Drupal system path (if one exists).
 *   - source: return the Drupal system URL for a path alias (if one exists).
 * @param $path
 *   The path to investigate for corresponding aliases or system URLs.
 * @param $path_language
 *   Optional language code to search the path with. Defaults to the page language.
 *   If there's no path defined for that language it will search paths without
 *   language.
 *
 * @return
 *   Either a Drupal system path, an aliased path, or FALSE if no path was
 *   found.
 */
function drupal_lookup_path($action, $path = '', $path_language = '') {
  global $language;
  // $map is an array with language keys, holding arrays of Drupal paths to alias relations
  static $map = array(), $no_src = array(), $count;
 
  $path_language = $path_language ? $path_language : $language->language;
 
  // Use $count to avoid looking up paths in subsequent calls if there simply are no aliases
  if (!isset($count)) {
    $count = db_result(db_query('SELECT COUNT(pid) FROM {url_alias}'));
  }
 
  if ($action == 'wipe') {
    $map = array();
    $no_src = array();
    $count = NULL;
  }
  elseif ($count > 0 && $path != '') {
    if ($action == 'alias') {
      if (isset($map[$path_language][$path])) {
        return $map[$path_language][$path];
      }
      // Get the most fitting result falling back with alias without language
//      $alias = db_result(db_query("SELECT dst FROM {url_alias} WHERE src = '%s' AND language IN('%s', '') ORDER BY language DESC", $path, $path_language));
      $alias = db_result(db_query("SELECT dst FROM {url_alias} WHERE LOCATE(src, '%s') AND language IN('%s', '') ORDER BY language DESC", $path, $path_language));
      $map[$path_language][$path] = $alias;
      return $alias;
    }
    // Check $no_src for this $path in case we've already determined that there
    // isn't a path that has this alias
    elseif ($action == 'source' && !isset($no_src[$path_language][$path])) {
      // Look for the value $path within the cached $map
      $src = '';
      if (!isset($map[$path_language]) || !($src = array_search($path, $map[$path_language]))) {
        // Get the most fitting result falling back with alias without language
//        if ($src = db_result(db_query("SELECT src FROM {url_alias} WHERE dst = '%s' AND language IN('%s', '') ORDER BY language DESC", $path, $path_language))) {
        if ($src = db_result(db_query("SELECT src FROM {url_alias} WHERE LOCATE(dst, '%s') AND language IN('%s', '') ORDER BY language DESC", $path, $path_language))) {
          $map[$path_language][$src] = $path;
        }
        else {
          // We can't record anything into $map because we do not have a valid
          // index and there is no need because we have not learned anything
          // about any Drupal path. Thus cache to $no_src.
          $no_src[$path_language][$path] = TRUE;
        }
      }
      return $src;
    }
  }
 
  return FALSE;
}

куда только его вставлять? кто подскажет?

12.01.2012 09:23
Аватар пользователя Кто то из болота

Тут без кода запросто можно обойтись!
Настроить паттерны для своего типа материала :
nazvanie_razdela/[node:content-type]

Хотя,не пойму зачем нужно тип материала в URL запихивать...Там обычно первым аргументом заголовок выводят ([node:title])...Хотя,смотря ТЗ какое...

12.01.2012 11:36
Аватар пользователя pantey
pantey написал:

у меня ошибку выдаёт???

The Шаблон для всех адресов материалов типа Product is using the following invalid tokens: [node:content-type].

12.01.2012 11:55
Аватар пользователя Spleshka
Spleshka написал:

Как к термину таксономии может относится тип материала? Это же 2 разные сущности. Это у типа материала может быть таксономия, а не наоборот.

12.01.2012 13:56

Комментировать