Immer wieder das Problem, Felder zu verbinden
am 21.02.2011 - 21:31 Uhr in
Hallo ihr,
ich stelle mich mal wieder total blöd an. Irgendwie raffe ich das nicht mit CSS und cck-Feldern.
Ich stehe immer wieder mal vor dem Problem, dass ich in einer Vollansicht mehrere Felder "inline" anzeigen lassen möchte.
Konkretes Beispiel: ich habe ein Feld "Nachricht" (formatiert mit mehreren p-Abschnitten). Zusätzlich habe ich Feld "Autor" (nicht formiatiert, reiner Text).
Nun hätte ich in der node-Vollansicht gerne die folgende Ausgabe:
Dies ist der erste Absatz.
Dies ist der zweite Absatz.
Dies ist der lezte Absatz. (Autor)Bei mir steht der Autor aber immer in einer eingenen Zeile. Vom Aufbau sieht das ganze so aus:
div class="field field-type-text field-field-news-nachricht">
<div class="field-items">
<div class="field-item odd">
<p>Dies ist der erste Absatz</p>
<p>Dies ist der zweite Absatz</p>
<p>Dies ist der letzte Absatz</p>
</div>
</div>
</div>
<div class="field field-type-text field-field-autor">
<div class="field-items">
<div class="field-item odd">
(kuerzel)
</div>
</div>
</div>CSS-mäßig habe ich es schon mit float- und verschiedenen inline-Argumenten versucht. Es geht aber einfach nicht.
Hat hier jemand einen Tipp?
- Anmelden oder Registrieren um Kommentare zu schreiben

Das ist rein mit CSS nicht
am 21.02.2011 - 21:42 Uhr
Das ist rein mit CSS nicht hinzubekommen. Du solltest in Deinem Theme in der Datei template.php eine preprocess_node-Funktion für diesen Node-Typ einsetzen und dort dafür sorgen, daß Du die Ausgabe des Autor in Klammern in die Ausgabe des Nachrichtenfeldes einbaust.
Beste Grüße
Werner
Hallo Werner, danke für die
am 21.02.2011 - 22:07 Uhr
Hallo Werner,
danke für die rasche Antwort. Das ist aber schade, dass das nicht einfach über CSS geht.
Ich habe mir die preprocess_node mal angeschaut. Mir ist aber nicht ganz klar, wie das dann genau abläuft? Ich müsste ja den unformartierten Autor-string vor den schließenden
<p>-String der Nachricht bekommen. Ist das richtig? Wie könnte man hier mit der von dir genannten Funktion vorgehen? Auch ist mir nicht klar, ob ich mit der Funktion ein einzelnes Feld überschreiben kann, oder ob ich hier komplett den Content neu schreiben muss (so wie in einer angepassten node.tpl.php).Kannst du mir hier weitere Tipps geben?
Schönen Abend und viele Grüße
[gelöst] .. wenn auch nicht verstanden ;-)
am 22.02.2011 - 12:38 Uhr
Hallo,
ich habe für mich eine Lösung gefunden. Ich weiß nicht, ob dies die beste und sauberste ist - zumal ich hier ziemlich viel "try and error" betrieben haben. Vielleicht habt ihr da ja noch Kommentare zu:
Ich habe aus dem cck-Modul-Ordner eine Kopie der content-field.tpl.php in mein template-Verzeichnis gelegt. Die muss da sein, damit man ein individuelles Feld "themen" kann. Die Datei noch mal in den template-Ordner kopiert. Diesmal aber mit dem Namen content-field-CCKFELDNAME.tpl.php (bei mir content-field-field_nachricht.tpl.php).
Hier nun den Standard-Code vor der Zeile
<?phpprint $item['view']
?>
wie folgt erweitert:
<?php
$arr = explode ("</p>", $item['view']);
$arr[count($arr) - 2] = $arr[count($arr) - 2] . ' ' . $node->field_autor[0]['value'];
$item['view'] = implode("</p>", $arr);
?>
field_autor ist bei mir das Feld, das den Wert enthält, den ich direkt nach dem letzten Punkt der Nachricht einfügen möchte.
Geht das so in Ordnung? Oder habe ich da was übersehen.
Was ich z.B. überhaupt nicht verstehe ist, warum ich vom "count"-Wert 2 Abziehen muss um an das Ende des letzten Absatzes zu kommen. -1 würde ich ja noch verstehen (Zählung beginnt bei 0?) - aber naja, es funktioniert.