Как создать собственный фильтр для модуля Drupal View?

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
11
0
24 458
5

Ответы 5

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

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

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

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

  • пользователем drupal (имя пользователя drupal: drupdrips)

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

<?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);
}
?>

@AbhiG Вы когда-нибудь пробовали этот метод? это кажется интересным фрагментом кода. я должен поместить свой код в оператор, заменив '<=' правильно?

Capi Etheriel 28.11.2009 01:26

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

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

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

Другие вопросы по теме