Schreiben Sie die CCK-Feldausgabe ohne Verwendung von Vorlagen neu


7

Das Views-Modul bietet die nette Option, die Ausgabe eines Feldes neu zu schreiben. Auf diese Weise können Sie die Ausgabe von CCK-Feldern mithilfe von Tokens anpassen, ohne eine Vorlage für diese Ansicht erstellen zu müssen.

Gibt es ein Modul, das eine ähnliche Funktionalität für die Registerkarte "Anzeigefelder" eines Inhaltstyps zulässt? Ich muss die Feldausgabe für Teaser und Body leicht ändern, möchte aber keine vollständige Vorlage erstellen.

Ich verwende derzeit Contemplate dafür, aber das ist komplizierter als nötig und unnötig schwierig, wenn Sie nicht mit der Drupal PHP-API vertraut sind. Es ist auch ärgerlich, dass ich die Vorlage jedes Mal ändern muss, wenn ich dem Inhaltstyp ein zusätzliches Feld hinzufüge. Ich muss wirklich nur ein paar Felder neu schreiben, nicht den gesamten Text oder Teaser.

Was ich also gerne hätte, ist eine einfache Möglichkeit, jede CCK-Feldausgabe mit einem für diesen Inhaltstyp verfügbaren Token neu zu schreiben. Gibt es so etwas?

Antworten:


5

Klingt so, als würden Sie nach dem Modul " Benutzerdefinierte Formatierer" suchen, das Contemplate sehr ähnlich ist, aber speziell zum Erstellen von Feldformatierern, die über die Seite "Anzeigeeinstellungen" oder "Ansichten" verwendet werden sollen.

Benutzerdefinierte Formatierer können sowohl mit Tokens als auch mit reinem PHP-Code erstellt werden.

Darüber hinaus können benutzerdefinierte Formatierer als native Drupal-Hooks oder in einem exportierbaren Format für benutzerdefinierte Features exportiert werden.


4

Wenn Sie nur das Markup optimieren möchten, ist Semantic CCK einen Versuch wert.

Semantisches CCK wurde erstellt, um Benutzern die Möglichkeit zu geben, die HTML-Ausgabe von CCK-Feldern anzupassen. Es wurde teilweise von dem sehr empfohlenen Modul Semantic Views inspiriert, das die gleiche Funktionalität für Views bietet.

Drupal 7

Eine Drupal 7-Version von Semantic CCK befindet sich derzeit in der Entwicklung: Semantic Fields .


2

Die Verwendung des Contemplate-Moduls wird nicht empfohlen, da es PHP-Code in die Datenbank einfügt, der im Allgemeinen als Sicherheitslücke angesehen wird und keine Leistung erbringt.

Sie können Ihre eigenen Feldformatierer mit hook_field_formatter_info () definieren . Auf diese Weise können Sie benutzerdefinierte Rückrufe definieren, die jedes Feld verarbeiten können. Hier ist ein einfaches Tutorial, wie dies für Drupal 6 funktioniert.

Durchsuchen Sie die Implementierung von hook_field_formatter_info () durch andere Module, um zu sehen, wie es funktioniert. In Drupal 6 wird es direkt mit hook_theme () verknüpft, während Drupal 7 hook_field_formatter_view () verwendet .



0

Ich kämpfe jetzt auch schon seit einiger Zeit mit diesem Thema.

Ich kann / will nicht benutzen ...

  1. Betrachten Sie aus mittelmäßigen Architekturgründen.
  2. Display Suite, die fantastisch, aber übertrieben ist und keine einfachen Änderungen an Feldern zulässt.
  3. Benutzerdefinierte Formatierer, da PHP erneut in der Datenbank für mehrere Wertefelder gespeichert wird.
  4. Feldvorlage, weil ich dem Element nur eine Textzeile hinzufüge.
  5. Semantisches CCK, weil dies nur die Elemente und Klassen verändert.
  6. hook_preprocess oder andere codebasierte Lösungen, da ich sie konfigurierbar brauche.

Es ist ein echter Mist, wenn ich nur eine CCK-Feldbeschreibung hinzufügen muss, um die Ausgabe anzuzeigen. Dies sollte eigentlich ziemlich einfach sein.

Klingt so, als hätten Sie benutzerdefinierte Formatierer benötigt.


n / m diese Funktionalität wurde zu Semantic CCK 1.4 hinzugefügt
doublejosh

Haben Sie eine einfach zu handhabende Lösung gefunden, die eine gute Leistung bietet? In drupal6 bestand die gute Lösung häufig darin, die ['Ansicht'] des Knotenobjekts zu verwenden und sie mit einigen Knotenvorlagenformatierungen zu kombinieren. Sehr saubere Ausgabe und komfortabel, da in 90% aller Anwendungsfälle ['view'] verwendet wird. In Drupal 7 haben wir wieder die Divities, weil render () viel Overhead erzeugt ...

Klingt nach Display Suite, dann drupal.org/project/ds
doublejosh

Benutzerdefinierte Formatierer speichern zwar Informationen in der Datenbank, das Modul ist jedoch lediglich ein Dienstprogramm. Sobald Sie den Formatierer in der Datenbank erstellt haben, exportieren Sie ihn und Sie haben kein Codeproblem mehr in der Datenbank :)
Decipher



0

Ich würde das Token Filter- Modul verwenden, um Token-Werte in CCK-Feldern mit Eingabefiltern anzugeben. Hier ist ein Auszug davon von der Projektseite des Moduls:

... ein sehr einfaches Modul, um Token-Werte als Eingabefilter verfügbar zu machen.

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.