АНОНС Переопределение SQL во Views

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

Аватар пользователя Mirocow Mirocow 5 октября 2011 в 16:39

Статья планируется про возможность программно изменить поведение и выдачу VIews. Про полную или частичную подмену SQL запроса во views.
Тема будет раскрывать внутреннее устройство views. с подробным расписыванием всех хендлеров их свойств и путей SQL запроса. Те формирование SQL от филдов до вывода на sql_build.

Для затравки:

// Группируем подзапросы
$handler->query->where[0]['type'] = 'AND';
// Группируем подзапросы
$handler->query->where[1]['type'] = 'OR';
$handler->query->where[1]['clauses'][0] = "node.uid = ***CURRENT_USER***";
// Избавляем себя от ошибок
$handler->query->where[1]['args'] = array();
// Группируем группы
$handler->query->group_operator = 'OR';

Level: Profi

P/S:
Статья не для таких знаменитых личностей как: RxB (он мастер и подобное ему не интересно)

Комментарии

Аватар пользователя vgoodvin vgoodvin 5 октября 2011 в 17:42

Вьюс можно использовать как генератор запросов. Например так сделано в searchlight. Правда у вьюсов запросы часто мягко говоря безумные.

Аватар пользователя Orion76 Orion76 5 октября 2011 в 18:32

тема интересная...
не особенно востребованная... но бывает нада-))

была мыслишка сделать навороченные экспозед-фильтры (ползунки, счетчики, меню) с раздельным выводам по блокам ..
Для фильтрации товаров в юберкарте...

Но заказчик еще "зреет"...-)))

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 5 октября 2011 в 19:06

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:
Статья может быть интересна, но только не в контексте Д6, views3 в 7ке уже довольно сильно отличается от 6го

МДинк говорит что семёрка это мёртворождённое дитя, так что, Энди, прислушайся к мнению специалиста

Аватар пользователя Orion76 Orion76 5 октября 2011 в 20:28

дааа... смутные времена настали...

одни мечуться.. что лучше: ubercart2 vs ubercart3 vs commerce
другие - views2 vs views3
третьи 6 7 или 8

.... а калькулятор Электроника считает...

Аватар пользователя Mirocow Mirocow 5 октября 2011 в 23:26

"<a href="mailto:andypost@drupal.org">andypost@drupal.org</a>" wrote:

Статья может быть интересна, но только не в контексте Д6, views3 в 7ке уже довольно сильно отличается от 6го

к сожалению views 3 для 7 не рассматривал и сказать о нем ничего не могу. да и для серьезных проектов я в последнее время больше склоняюсь к фреймворку. На данный момент единственный из понравившихся мне по идеологии и исполнению - это YII.

Аватар пользователя kyky kyky 6 октября 2011 в 3:05

"Mirocow" wrote:
да и для серьезных проектов я в последнее время больше склоняюсь к фреймворку

Тогда смысл использовать эту магию в легких проектах?
Для сайта-визитки требуется подменять sql-запрос?
Код, что ты привел в топике — дешевый закос под ORM, для PHP из пруд пруди.
Да, Дурпал это круто, можно запросы налету менять, но вопрос — зачем? Если приходится менять запрос, значит, он был неверно составлен и нужно исправлять ошибку на ранней стадии или писать свой запрос, верный. И да, кто потом будет разбирать твою магию? Такие же гуру, которые правят запрос динамически из-за завышенного ЧВС?

Аватар пользователя Mirocow Mirocow 6 октября 2011 в 7:41

"kyky" wrote:
Код, что ты привел в топике — дешевый закос под ORM, для PHP из пруд пруди.

Стыдно не знать строение views

Аватар пользователя Crea Crea 6 октября 2011 в 10:00

Непонятно, какую задачу решает модуль.
Если нужно структурное изменение запроса, то это нужно делать используя правильные хендлеры.
Если нужно просто скорректировать один из запросов, так проще и правильнее весь запрос заменить, используя хук Views.
Вообще, править взаимодействия хендлеров снаружи вьюхи считаю ошибкой. Это называется "обманул таксиста, заплатил и не поехал".

Аватар пользователя Orion76 Orion76 6 октября 2011 в 10:37

Я думаю, ТС просто хочет в статье описать общий принцип работы с View API...
для тех кто не в танке...

не? или где я потерял "нить" обсуждения?

Аватар пользователя andypost@drupal.org andypost@drupal.org 7 октября 2011 в 0:05

Общие принципы уже давно расписаны и даже есть несколько докладов, а вот действительную причину "подмены запросов" ТС такк и не озвучил... hook_world_alter

Аватар пользователя Mirocow Mirocow 7 октября 2011 в 5:29

"Crea" wrote:

Непонятно, какую задачу решает модуль.
Если нужно структурное изменение запроса, то это нужно делать используя правильные хендлеры.
Если нужно просто скорректировать один из запросов, так проще и правильнее весь запрос заменить, используя хук Views.

Правильно мыслишь