So speichern Sie Views-Vorlagen mit einem Modul anstelle eines Themas


13

Ich habe mehrere Ansichtenvorlagen erstellt, die derzeit in meinem aktiven Themenverzeichnis gespeichert sind. In würde es vorziehen, diese Vorlagen in meinem Modulverzeichnis zu speichern.

Meine Frage ist, wie kann ich diese Themendateien (z. B. views-view-field.tpl.php) in mein Modulverzeichnis bringen und von Views anzeigen lassen?

Wenn ich mir die Ansichtenmodule anschaue, sehe ich, dass Standardvorlagen in Ansichten / Themen gespeichert sind, aber ich sehe nicht, wie sie implementiert wurden.

Antworten:


29

Ich brauchte eine Weile, um das herauszufinden. Der folgende Code sollte in Ihre .module-Datei eingefügt werden (der Code setzt voraus, dass Ihr Modul "NAME" heißt)

/**
* 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'),
  );
}

Dadurch wird Views angewiesen, im Stammverzeichnis Ihres Moduls zu suchen. Ich persönlich bin ein Fan des Hinzufügens eines Unterverzeichnisses zum Modul, um Vorlagendateien zu halten. Fügen Sie dazu den Verzeichnisnamen an das Ende des Vorlagenpfads an, z. B .:

'template path' => drupal_get_path('module', 'NAME') . '/templates',

Das Hinzufügen zu einem Unterverzeichnis ist eine fantastische Idee, räumt auf und funktioniert einwandfrei. Zukünftige Sucher müssen Ihren Drupal-Cache leeren. Vielen Dank @ Reekan Mantell
Citricguy

Vielen Dank! Ich habe mein Admin-Theme monatelang gehackt, nur um ein Views-Feld in sieben zu überschreiben. Jetzt muss ich nicht.
JM01

Und ich muss sagen, dass Sie TPL auch dann in Ihr Theme einfügen können, wenn Sie diesen Code implementiert haben. Vielen Dank.
16:38 Uhr

2
Dies funktioniert nicht mit Features-Modulen, sondern wird verwendet hook_views_api_alter() wie hier angegeben: deeson.co.uk/labs/views-templates-features-module
Aubrey Robertson

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.