Как создать пользовательский фильтр для модуля Drupal View? - PullRequest
11 голосов
/ 28 октября 2008

У меня на сайте Drupal 6 установлены модули Profile, CCK и Views2. Я добавил строковое поле в профиль пользователя. Я могу легко фильтровать предустановленные значения через конструктор графического интерфейса Views. Однако мне бы хотелось, чтобы критерии фильтра устанавливались динамически на основе других переменных среды (а именно $_SERVER['SERVER_NAME']).

Есть ли где-нибудь какой-нибудь базовый «Как написать пользовательский drupal-views-filter»? Я просматривал документацию, но для моего простого ума не ясно, как это сделать.

Ответы [ 5 ]

3 голосов
/ 07 мая 2009

Вы можете создать свою собственную функцию, например, следующую, чтобы добавить свои собственные фильтры.

<?php custom_views_embed_view($view_name, $display_id) {
$view = views_get_view($view_name);
$view->set_display($display_id);
$id = $view->add_item($display_id, 'filter', 'node', 'created',
                      array( 'value' => array('type' => 'date', 'value' => date('c')), 'operator' => '<='));
return $view->execute_display($display_id);
}
?>
1 голос
/ 29 января 2013

У меня похожая проблема, и эта статья очень помогла в ее решении.

http://www.metaltoad.com/blog/drupal-7-tutorial-creating-custom-filters-views

И официальная документация hook_views_data

http://api.drupal.org/api/views/docs%21docs.php/function/hook_views_data/6

0 голосов
/ 22 ноября 2011

Вы можете использовать viewsphpfilter модуль, который позволяет фильтровать просмотры по node id., однако есть патч, если вам нужно расширить его для user views

0 голосов
/ 05 марта 2009

да, вы можете сделать это. Попробуйте использовать модуль "блок фильтра просмотров". Как только вы включите блок .. извлеките HTML-код блока из «просмотра источника» при просмотре страницы. Теперь отключите «блок фильтра видов» ... создайте свой собственный блок ... добавьте в него код с любыми CSS, чтобы он выглядел красиво. В этом коде используйте php, чтобы динамически указать, что вы хотите, чтобы начальный выбор фильтра был. Убедитесь, что вы действительно выбрали поле, на котором основан фильтр .. затем в пользовательском блоке php используйте код php, чтобы написать условие IF, чтобы проверить значение server_name и, соответственно, присвоить переменной фильтра правильное значение. "

Возможно, есть другие (возможно, даже лучшие) способы сделать это, чтобы написать модуль для использования фильтра. Так что это всего лишь одно предложение. Также попробуйте "Views PHP Filter". Я еще не использовал его, но звучит так, будто его стоит попробовать.

  • от пользователя drupal (имя пользователя drupal: drupdrips)
0 голосов
/ 14 ноября 2008

Существует возможность, посмотрев на фильтры, установленные для моего собственного сайта, что фильтры должны основываться на каком-то поле базы данных, и в этом случае то, чего вы пытаетесь достичь, невозможно. Похоже, что фильтры предоставляют предложение WHERE для сгенерированного запроса SQL.

Сказав все это, если вы хотите продолжить его, лучше всего начать с модуля, который уже обеспечивает фильтры для просмотров. Для модуля Node предусмотрены фильтры для Views; В качестве альтернативы вы можете взглянуть на аудио модуль , который также предоставляет некоторые фильтры. Кроме того, публикация на форумах или в списке поддержки Drupal может привести к появлению другого модуля, который позволит вам добиться того, что вы пытаетесь.

...