Следуя тому, что сообщалось в документации для hook_views_query_alter () , я создал файл с именем alterform.views.inc
и поместил его во включенный модуль с именем alterform
. Я добавил следующий код в. alterform.views.inc
Но он не работает.
function alterform_views_query_alter(&$view, &$query) {
switch($view->name) {
case 'myViewName':
echo 'test test'; // test
$query->orderby[0] = "FIELD(node.type, 'story', 'page', 'productTypeC', 'productTypeD') ASC";
$query->orderby[1] = "node_title ASC";
break;
}
}
почему не выводится «тестовый тест»? Что не так с моим кодом?
до сих пор нет результатов теста и просмотров. что не так с моим кодом? Спасибо
alterform.views.inc
внутри вашего модуля, а вы этого не сделали?Ответы:
Правильно. Чтобы «делать» что-либо с представлениями в модуле, вы должны реализовать hook_views_api. Без этого ваш модуль вообще не будет распознаваться Views (AFAIK).
Пожалуйста, добавьте следующее в код вашего модуля:
Это должно исправить это, чтобы ваш модуль был хотя бы распознан, тогда вы можете начать отладку :)
Хороший способ начать отладку представления (т. Е. Начального шага) состоит в том, чтобы поместить
dpm($view);
в начало функции представлений, которые вы реализуете. В большинстве случаев это выведет на экран информацию, которая поможет вам увидеть, где вы находитесь. Рекомендую сделать это с установленным / включенным devel.module.Изменить: Это предполагает, что представления 2 и Drupal 6. Вы бы лучше спросить, если это не ваше оружие выбора.
источник
Вы можете проверить 3 вещи:
dpm()
вместоecho()
$view->name
сdpm()
источник
Вам нужно поместить файл yourmodule.views.inc в каталог модуля, а не в подкаталог, иначе Views не сможет автоматически его забрать.
источник
должно быть
источник
если вы используете каталог для yourmodule.views.inc, вам нужно указать его путь в файле модуля, используя код, подобный следующему:
источник