<?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 а потом фильтровать, в голову ничего больше не приходит.
есть умные идеи?
Комментарии
hook_url_outbound_alter()
hook_url_inbound_alter()
Такие вот штуки видео но не пользовал
facepalm...
какое отношенение имеет hook_url... к определению правильного алиаса термина имея только алиас его имени??
Ну тогда велком на друпалстек. Такую задачку не решал. Может тогда стоит свою функцию с кешированием написать,
делать запрос в таблицу url_alias без использования like и результат фильтровать. Думаю так на пару мс будет быстрее