Brainstorm facetapi_pretty_paths

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

Аватар пользователя dgastudio dgastudio 2 мая 2016 в 20:29
<?php class FacetApiPrettyPathsCoderTaxonomy extends FacetApiPrettyPathsCoderDefault {

  

/**
   * Taxonomy special case: <alias>/<term-name>-<term-id>
   *
   * see FacetApiPrettyPathsCoderDefault::encodePathSegment()
   */
  
public function encodePathSegment(array $args) {
    if (
$term taxonomy_term_load($args['segment']['value'])) {
      
$args['segment']['value'] = $this->prettyPath($term->name) . '-' $term->tid;
    }
    return 
parent::encodePathSegment($args);
  }

  

/**
   * Taxonomy special case: <alias>/<term-name>-<term-id>
   *
   * see FacetApiPrettyPathsCoderDefault::decodePathSegmentValue()
   */
  
public function decodePathSegmentValue(array $args) {
    
$exploded explode('-'$args['value']);
    
$args['value'] = array_pop($exploded);
    return 
parent::decodePathSegmentValue($args);
  }
}
?>

выдача args, http://c2n.me/3xCDmtu.png

итак, давайте покумекаем.

есть модуль facetapi_pretty_paths. он генерит урлы по следующему принципу:

objects/city/type/prodazha-599

где: objects/city это страница таксономии

type, это кастамный алиас фасета

prodazha-599 = pathauto_cleanstring($term-> name).'-'.$term->tid

после чего, из последней части. извлекается tid, и, подставляется в facet.

задача: сделать чтобы урл был 100% чпу. тобишь, objects/city/type/prodazha

--------------------------------------

ни одна из готовый функций типа drupal_lookup_path, не прокатывает, так ка как нужен поиск по части алиаса.

мне, кроме как делать запрос в таблицу url_alias с использование like а потом фильтровать, в голову ничего больше не приходит.

есть умные идеи?

Комментарии

Аватар пользователя dgastudio dgastudio 2 мая 2016 в 22:23

facepalm...

какое отношенение имеет hook_url... к определению правильного алиаса термина имея только алиас его имени??

Аватар пользователя dashiwa dashiwa 3 мая 2016 в 6:52

Ну тогда велком на друпалстек. Такую задачку не решал. Может тогда стоит свою функцию с кешированием написать,
делать запрос в таблицу url_alias без использования like и результат фильтровать. Думаю так на пару мс будет быстрее