Модуль Commerce Search API. Помогите найти функцию отвечающую за вывод блоков фасетов

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

Аватар пользователя сельский библиотекарь сельский библио... 18 февраля 2015 в 17:48

Установлен модуль Commerce Search API, тем есть возможность создания блоков фасетного поиска.
Все это прекрасно и очень удобно.

Но мне нужно сделать, чтоб количество содержимого не отображалось для каждого фильтра

Например, вместо:
Пластиковые окна (153)
Деревянные окна (75)

должно быть просто:
Пластиковые окна
Деревянные окна

и нужно убрать скрытые маркеры к каждому фильтру <label class="element-invisible" for="facetapi-link--5--checkbox"> Apply Двойной стеклопакет filter </label>, которые с учетом малого количества текста на страницах занимают до 50% контента, что жуть.

Я так понимаю, что мне нужно найти функцию вывода для этого модуля, отредактировать ее и поместить в template.php
Но функцию найти не удается и не удалось даже найти где формируются эти элементы.....

Комментарии

Аватар пользователя Plazik Plazik 18 февраля 2015 в 18:52

"сельский библиотекарь" wrote:
Например, вместо:
Пластиковые окна (153)
Деревянные окна (75)

должно быть просто:
Пластиковые окна
Деревянные окна


Это в настройках фасетного блока настраивается, если мне не изменяет память.
"сельский библиотекарь" wrote:
Я так понимаю, что мне нужно найти функцию вывода для этого модуля, отредактировать ее и поместить в template.php

Похоже эта http://drupalcontrib.org/api/drupal/contributions!facetapi!facetapi.them...

Аватар пользователя сельский библиотекарь сельский библио... 18 февраля 2015 в 21:57

Quote:
Похоже эта http://drupalcontrib.org/api/drupal/contributions!facetapi!facetapi.them...

Точно. Не нашел сразу из-за того, что у меня не kickstart и поэтому facetapi.theme.inc находится в другом месте.

Функция изначально выглядит так:

function theme_facetapi_accessible_markup($variables) {
  $vars = array('@text' => $variables['text']);
  $text = ($variables['active']) ? t('Remove @text filter', $vars) : t('Apply @text filter', $vars);
  // Add spaces before and after the text, since other content may be displayed
  // inline with this and we don't want the words to run together. However, the
  // spaces must be inside the <span> so as not to disrupt the layout for
  // sighted users.
  return '<span class="element-invisible"> ' . $text . ' </span>';
}

Как правильно сделать, что она ничего не выводила? Лучше всего, чтоб вообще не использовалась. Я просто закомментировал все внутри - HTML код становится чистым - как надо, но думаю это не самое изящное решение...

function theme_facetapi_accessible_markup($variables) {
  //$vars = array('@text' => $variables['text']);
  //$text = ($variables['active']) ? t('Remove @text filter', $vars) : t('Apply @text filter', $vars);
  // Add spaces before and after the text, since other content may be displayed
  // inline with this and we don't want the words to run together. However, the
  // spaces must be inside the <span> so as not to disrupt the layout for
  // sighted users.
  //return '<span class="element-invisible"> ' . $text . ' </span>';
}
Аватар пользователя сельский библиотекарь сельский библио... 19 февраля 2015 в 10:20

Если просто закомментировать содержимое функции и в таком виде перенести их в template.php

function theme_facetapi_count($variables) {
//  return '(' . (int) $variables['count'] . ')';
}

и

function theme_facetapi_accessible_markup($variables) {
  //$vars = array('@text' => $variables['text']);
  //$text = ($variables['active']) ? t('Remove @text filter', $vars) : t('Apply @text filter', $vars);
  // Add spaces before and after the text, since other content may be displayed
  // inline with this and we don't want the words to run together. However, the
  // spaces must be inside the <span> so as not to disrupt the layout for
  // sighted users.
  //return '<span class="element-invisible"> ' . $text . ' </span>';
}

То страница визуально и ее HTML код выглядят как надо, какие реально негативные стороны у этого метода?
Чувствую что так быть не должно, но работает же.....

Аватар пользователя dgastudio dgastudio 19 февраля 2015 в 15:38

<?php
function theme_facetapi_tabs_inactive($variables) {
unset(
$variables['count']);
return 
theme_link($variables);
}
function 
theme_preprocess_facetapi_link_inactive(&$variables) {
// hide facet count
unset($variables['count']);

?>

Аватар пользователя сельский библиотекарь сельский библио... 19 февраля 2015 в 18:16

Этот код убирает количество в ссылках, что прекрасно.

А как лучше избавиться от множества
<label class="element-invisible" for="facetapi-link--5--checkbox"> Apply Двойной стеклопакет filter </label>
(от аксессибилити разметки в фасетных блоках).

Аватар пользователя сельский библиотекарь сельский библио... 20 февраля 2015 в 0:38

kervi wrote:
.element-invisible {display: none}

Визуально этот текст и так не видно, но он создает кучу мусора в HTML коде, лезет в сниппеты и т.д.
Больше того, я использую для фасетов виджет Links with checkboxes и эти инвизиблы определяются и для фасетной ссылки и для галки (т.е. по два на фильтр)!
Мне нужно вообще совсем от них избавиться на уровне сервера, а не спрятать.

Аватар пользователя dgastudio dgastudio 20 февраля 2015 в 13:06

1. это семантическая разметка. друпал ее всегда по умолчанию прячет.
2. прям кучу кучу.. страница в гигабайты уходит наверно..
3. да пускай определяются, они же кушать не просят.

Вам уже раза 3 дали ссылку на функцию переопределения вкл/выкл. ссылки.

думайте, пробуйте, учитесь.

если не получается, велком в коммерческий раздел форума.