CCK Felder Ausgabe anpassen

am 22.07.2011 - 12:52 Uhr in
Also eigentlich wundert es mich, dass ich noch nirgends einen Beitrag gefunden habe, der auf dieses Thema eingeht, oder es für Drupal 7 behandelt. Sorry im Voraus, falls es diesen Beitrag schon gibt, ich hab wirklich lange gesucht:
Ich habe einen neuen Seitentyp Events erstellt. Darin habe ich auch einige CCK Felder angelegt, zB. Start der Veranstaltung, Anmeldung erforderlich, Indoor/Outdoor usw. Ohne Anpassungen an den Templates werden diese Variablen ja einfach nur unter den Text geklatscht, weit entfernt davon, wie ich die Seite zu gestalten habe.
Ich frage mich, ob ich nicht in der template.php eine Funktion schreiben kann, die über alle CCK Felder iteriert, den Namen und Inhalt prüft und in eine Content-Variable den Inhalt schreibt. Es kann auch sein, dass da nachher gar kein Inhalt drin stehen wird, weil manche Felder optional sind und andere nur in der Suche benötigt werden, also gar nicht ausgegeben werden. Ich dachte dabei in etwa an sowas:
$output = '';
foreach( $field in $node['fields'] )
{
switch ( $field['name'] )
{
case 'registrationrequired':
if ( !$empty( $field['value'] ) && $field['value'] ) $output .= '
';
break;
case 'minage':
if ( !$empty( $field['minage'] ) ) $output .= '
';
break;
}
$output .=
}
$content['eventdetails'] = $output;
Im Template würde ich dann nur noch
<?php
render( $content['eventdetails'] )
?>
Bin mir ziemlich sicher dass das gehen müsste, aber da ich noch recht neu bin in Drupal 7 fehlt mir der Ansatz. Bin dankbar für jeden Hinweis...
- Anmelden oder Registrieren um Kommentare zu schreiben
eddieconnecti schrieb ...
am 22.07.2011 - 13:05 Uhr
... Darin habe ich auch einige CCK Felder angelegt, zB. Start der Veranstaltung, Anmeldung erforderlich, Indoor/Outdoor usw. Ohne Anpassungen an den Templates werden diese Variablen ja einfach nur unter den Text geklatscht, weit entfernt davon, wie ich die Seite zu gestalten habe.
Ich frage mich, ob ich nicht in der template.php eine Funktion schreiben kann, die über alle CCK Felder iteriert, den Namen und Inhalt prüft und in eine Content-Variable den Inhalt schreibt...
Drupal tut doch genau das von Haus auf. Felder werden im Content ausgegeben.
Wenn du Felder nicht anzeigen lassen willst, dann stellst Du das in der Feldanzeige ein und Felder ohne Inhalte werden eh nicht ausgegeben.
Jop, aber die Darstellung
am 22.07.2011 - 13:21 Uhr
Jop, aber die Darstellung gefällt mir nicht. In meinen Screens habe ich für die Eventdetails einen Block am Ende des Artikels hängen, den man per jQuery auf- und zuklappen kann. In dem Block sind die einzelnen CCK Felder aufgelistet und darunter befindet sich eine Legende mit weiteren Hinweisen.
Manche Felder werden ausgegeben, wenn ihr Wert true ist, andere bei false. Wenn Sie leer sind und eh unterdrückt sind, wunderbar, ich hätte sie sonst unterdrückt.
Wie gesagt, es geht mir um die Darstellung. Ich möchte nicht den Text aus dem Backoffice sehen, sondern zB. prüfen ob der Wert field_registrationrequired == true ist und dann ausgeben: "Für diese Veranstaltung ist eine Anmeldung erforderlich". Als Beispiel könnte das dann so aussehen:
- Für diese Veranstaltung ist eine Anmeldung erforderlich
- Bei Regen entfällt die Veranstaltung*.
- Teilnehmen können Mitglieder ab 16 Jahren
- Die Teilnehmerzahl ist auf 20 Personen begrenzt
* Wir informieren angemeldete Teilnehmer telefonisch, wenn die Veranstaltung wegen Regen ausfällt. Dazu müssen Sie sich beim Organisator angemeldet haben.
Wenn keine Punkte in den Details zu nennen sind, soll eine Meldung erscheinen: "Zu dieser Veranstaltung liegen keine Einzelheiten vor."