Кто работает с Друпал знают, что для организации удобных и функциональных фильтров на сайте используют так называемые фасеты (связка модулей Facet Api, Views, Search facets, Search views, Database search или Solr). Но изначально, фасетные фильтры совершенно не пригодны в плане SEO сайта, так как и формируемые урлы там не с ЧПУ (решает эту проблему модуль Facet Api Pretty path), а также не возможность выводить формируемые в результате выбранных фильтров заголовки H1 и Title. Так вот, для того чтобы в созданной вьюхе с фасетами формировались эти самые заголовки, нужно немного допилить модуль. А именно, в файле темы template.php дописываем следующую функцию:
/**
* Implements hook_views_pre_render
*/
function THEME_NAME_views_pre_render(&$view) {
if($view->name == 'PUT YOUR VIEW NAME HERE') {
if ($searchers = facetapi_get_active_searchers()) {
$terms_title = array();
$searcher = reset($searchers);
$adapter = facetapi_adapter_load($searcher);
foreach ($adapter->getAllActiveItems() as $item) {
$term = taxonomy_term_load($item['value']);
$terms_title[] = $term->name;
}
$view->build_info['title'] = implode($terms_title, ' ');
}
}
}
Если хотим чтобы еще и Exposet filters учитывались:
**
* Implements hook_views_pre_render
*/
function THEMENAME_views_pre_render(&$view) {
if($view->name == 'yourview' && $view->current_display = 'page') {
$search_values = array();
// Check the facets
if ($searchers = facetapi_get_active_searchers()) {
$searcher = reset($searchers);
$adapter = facetapi_adapter_load($searcher);
foreach ($adapter->getAllActiveItems() as $item) {
$term = taxonomy_term_load($item['value']);
$search_values[] = $term->name;
}
}
// Check the views exposed filters
if ($filters = array_filter($view->exposed_input)) {
$search_values = array_merge($search_values, $filters);
}
if (!empty($search_values)) {
$view->build_info['title'] = '<h3 class="search-result">Results for</h3><h2 class="search-values">' .
implode($search_values, ', ') . '</h2>';
} else $view->build_info['title'] = '';
}
}
Сам долго мучился с этой проблемой пока случайно не наткнулся на топик тут: https://www.drupal.org/node/2039701. Теперь сайты на Дурпал в связке с фасетами отлично справляются с задачей расширения и внедрения нужного семантического ядра.
- 105 просмотров