Zgodnie z tym, co zgłoszono w dokumentacji dla hook_views_query_alter () , utworzyłem plik o nazwie alterform.views.inc
i umieściłem go w włączonym module o nazwie alterform
. Dodałem następujący kod w. alterform.views.inc
Ale to nie działa.
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;
}
}
dlaczego nie wyświetla „testu testowego”? Co jest nie tak z moim kodem?
wciąż nie ma wyników testów i widoków. co jest nie tak z moim kodem? Dziękuję Ci
alterform.views.inc
wnętrza modułu, a nie zrobiłeś tego?Odpowiedzi:
Dobrze. Aby „zrobić” cokolwiek z widokami w module, musisz zaimplementować hook_views_api. Bez tego twój moduł nie będzie w ogóle rozpoznawany przez Views (AFAIK).
Dodaj następujący kod do kodu modułu:
To powinno to naprawić, aby Twój moduł został przynajmniej rozpoznany, a następnie możesz rozpocząć debugowanie :)
Dobrym sposobem na rozpoczęcie debugowania widoku (tj. Kroku niemowlęcego) jest
dpm($view);
poprawienie funkcji widoku, którą implementujesz. W większości przypadków spowoduje to zrzucenie informacji na ekran, które pomogą Ci zobaczyć, gdzie jesteś. Sugerowałbym zrobienie tego z zainstalowanym / włączonym devel.module.Edycja: Zakłada się, że widoki 2 i Drupal 6. Najlepiej spytaj, czy to nie jest twoja broń.
źródło
możesz przetestować 3 rzeczy:
dpm()
zamiastecho()
$view->name
zdpm()
źródło
Musisz umieścić plik yourmodule.views.inc w katalogu modułu, a nie w podkatalogu, w przeciwnym razie widoki nie będą mogły go automatycznie podnieść.
źródło
powinno być
źródło
jeśli korzystasz z katalogu yourmodule.views.inc, musisz podać jego ścieżkę w pliku modułu, używając kodu podobnego do następującego:
źródło