3 Stimmen

Wie ersetzen Sie die page.tpl.php, die von einem Modul in Drupal geladen wird?

Ich habe ein benutzerdefiniertes Modul in Drupal, das einen serialisierten Auszug von Daten ausgibt. Ich möchte, dass die Seite, auf der der Dump erscheint, nicht das aktive Theme verwendet. Stattdessen möchte ich, dass der Datendump ohne HTML-Markup, Theme, JS, CSS usw. angezeigt wird. Nur der Speicherauszug (eine andere Website wird ihn verwenden).

Wenn ich dies auf der Ebene des Themas tun würde, würde ich einfach eine neue Datei page.tpl.php für einen bestimmten Inhaltstyp erstellen, der ohne Thematisierung, HTML usw. erscheint. Aber ich muss dies auf Modulebene für nur diese eine Seite tun, die das Modul erstellt, da dieses Modul auf verschiedenen Drupal-Websites installiert werden wird.

Gibt es eine Möglichkeit, alle Themen zu deaktivieren und die HTML-Wrapping-Ausgabe einer Modulseite auf Modulebene zu steuern? Alles, was ich wirklich tun möchte, ist "abschalten", wenn dies überhaupt möglich ist.

Ich verwende Drupal 6.

7voto

Chris Ridenour Punkte 606

Nun, das ist ein anderer Ansatz, aber einer, der bei mir immer funktioniert hat.

Wenn Ihr Seiten-Callback im Modul aufgerufen wird, drucken Sie die Daten aus oder geben Sie ein Echo ab, anstatt die Daten zurückzugeben (was sie zu einem Thema machen würde), und geben Sie die Funktion nicht zurück.

5voto

Henrik Opel Punkte 19268

Für den gegebenen Anwendungsfall (Ausgabe von Rohdaten für den automatischen Verbrauch) ist die Antwort von Chris definitiv der richtige Weg (+1).

Nur der Vollständigkeit halber und als ausdrückliche Antwort auf die Frage nach Ersetzen der page.tpl.php innerhalb eines Moduls kann man auch eine moduleName_preprocess_page(&$variables) Funktion. Innerhalb dieser Funktion, $variables['template_files'] enthält ein Array mit Vorschlägen für Dateinamen. Der erste von ihnen, der mit einer bestehenden *.php.tpl-Datei innerhalb der Drupal-Instanz übereinstimmt, wird als page.tpl.php-Datei für diese Anfrage verwendet, so dass das Ersetzen der bestehenden Einträge durch z.B. "moduleName_page.tpl.php" dazu führen würde, dass diese für das Theming der Seite verwendet wird.

Natürlich muss man darauf achten, dass kein anderes Modul die Vorschläge danach wieder manipuliert. Alternativ dazu kann man den Dateinamen auch in $variables['template_file'] - dies wird zusammengelegt mit $variables['template_files'] zu einem späteren Zeitpunkt, aber der Eintrag "template_file" wird der erste sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X