Ich habe einen Block mit hook_block_info
und hook_block_theme
und dergleichen erstellt. Aber wie kann ich es thematisieren?
Ich habe es funktioniert, um ein Array mit den Schlüsseln 'subject'
und zurückzugeben 'content'
. Aber ich habe das Markup direkt im hook_block_view()
Hook erstellt und das ist nicht das, was ich will.
In den Dokumenten heißt es, dass Inhalte vorzugsweise als renderbare Arrays und nicht als Markups zurückgegeben werden sollten . Aber was ist dieses darstellbare Array ? Sie sagen, es sollten Daten statt Markups sein, aber alles, was ich in den Beispielen sehe, ist, dass es nur als Wrapper für Markups verwendet wird, sodass dort nichts gewonnen wird.
Ich möchte ein block--MYMODULE--DELTA.tpl.php
Thema in meinem Design haben, aber wie kann ich es aufrufen und wie kann ich die Daten an den Block übergeben?
Antworten:
So mache ich das:
Und dann sollte in einem Unterordner in Ihrem Modul, der aufgerufen wird
theme
, eine Datei vorhanden sein,my-template.tpl.php
die Folgendes enthalten könnte:Und wenn
my-module.tpl.php
Sie möchten , können Sie die "Standard" -Modulimplementierung, die Sie gerade in Ihrem Thema vorgenommen haben, überschreiben, wie Sie es wünschenblock--MYMODULE--DELTA.tpl.php
.quelle
admin/config/development/performance
und klicken Sie auf dieclear cache
Schaltfläche. Sie können den Cache auch löschen, indem Sie drush iedrush cc all
Probieren Sie das Theme Developer- Modul aus. Wenn Sie es aktiviert haben, können Sie ein Kontrollkästchen in der unteren linken Ecke Ihrer Drupal-Seite aktivieren. Danach können Sie auf Ihren Block klicken und nützliche Informationen zum Thema erhalten. Sie können beispielsweise die möglichen .tpl.php-Dateinamen für Ihren Block anzeigen.
Wählen Sie einen dieser Namen. Der erste ist der spezifischste. Es wird nur ein Block thematisiert. Erstellen Sie eine Datei mit diesem Namen in Ihrem Themenordner, falls diese noch nicht vorhanden ist. Sie können es in einem Unterordner ablegen, wenn Sie sich organisieren möchten.
Kopieren Sie den Inhalt von block.tpl.php in Ihre Datei und ändern Sie die Einstellungen so, wie Sie es möchten.
Speichern Sie Ihre Datei, löschen Sie die Caches und laden Sie die Seite neu.
quelle
Es gibt bereits eine Reihe von Antworten auf diese Frage, aber ich habe versucht, einen sehr simplen Ansatz zu finden. Ich hoffe, Sie können die Array-Struktur identifizieren, die Drupal bei der Rückgabe Ihres Blockinhalts erwartet.
Dazu habe ich die Frage in separate Codebeispiele als solche unterteilt,
Eine vollständige Erklärung finden Sie hier. Drupal 7 erstellt benutzerdefinierte Themenblöcke
quelle
Dies ist ein alter Beitrag, aber ich habe eine bessere Lösung zum Überschreiben von Blockvorlagen aus einem benutzerdefinierten Modul für Drupal 7 gefunden.
Fügen Sie dies Ihrem benutzerdefinierten Modul hinzu:
Dann benötigen Sie den folgenden Code:
Alles, was Sie tun müssen, ist
templates/block--my-custom-module.tpl.php
im Ordner Ihres Moduls zu erstellen .Ich habe ein Tutorial über dieses Drupal-Tutorial geschrieben - So überschreiben Sie Blockvorlagen aus einem benutzerdefinierten Modul
quelle