Jak przechowywać szablony widoków z modułem zamiast z motywem

13

Utworzyłem kilka szablonów widoków, które są obecnie przechowywane w moim katalogu aktywnych motywów. Wolałbym, aby te szablony były przechowywane w moim katalogu modułów.

Moje pytanie brzmi: w jaki sposób mogę przenieść te pliki motywów (na przykład views-view-field.tpl.php) do mojego katalogu modułów i pozwolić, aby były widoczne w widokach?

Patrząc na moduły Widoki, widzę, że domyślne szablony są przechowywane w widokach / motywach, ale nie widzę, jak zostały zaimplementowane.

Citricguy
źródło

Odpowiedzi:

29

Zajęło mi to również trochę czasu. Poniższy kod powinien zostać umieszczony w pliku .module (kod zakłada, że ​​moduł nazywa się „NAME”)

/**
* Implements hook_views_api().
*
* Enabling using templates inside module
*/
function NAME_views_api() {
  return array(
    'api' => 3,
    'path' => drupal_get_path('module', 'NAME'),
    'template path' => drupal_get_path('module', 'NAME'),
  );
}

Dzięki temu widoki będą szukać w katalogu głównym modułu. Osobiście jestem fanem dodawania podkatalogu do modułu do przechowywania plików szablonów. Aby to zrobić, dodaj nazwę katalogu na końcu ścieżki szablonu, np .:

'template path' => drupal_get_path('module', 'NAME') . '/templates',
Reekan Mantell
źródło
Dodanie ich do podkatalogu to fantastyczny pomysł, wszystko porządkuje i działa idealnie. Przyszli poszukiwacze powinni wyczyścić pamięć podręczną Drupal. Dziękuję @Reekan Mantell
Citricguy
Dziękuję Ci! Hakowałem mój motyw administratora od miesięcy, aby po prostu przejechać pole widzenia w siedmiu. Teraz nie muszę.
JM01
I muszę powiedzieć, że nadal możesz umieścić TPL w swoim motywie, nawet jeśli zaimplementowałeś ten kod. Dzięki.
anou
2
To nie będzie działać z modułami Funkcji, zamiast tego użyj, hook_views_api_alter()jak wspomniano tutaj: deeson.co.uk/labs/views-templates-features-module
Aubrey Robertson