Nodes einzeln ansprechen?
Eingetragen von knarz (20)
am 10.06.2009 - 09:58 Uhr in
am 10.06.2009 - 09:58 Uhr in
Hallo,
ich habe mit Views eine Ansicht erzeugt für einen speziellen Inhaltstyp, der zusätzlich noch ein Feld hat, in dem ein Bild gespeichert wird.
Ich habe die Ausgabe durch page-VIEWNAME.tpl.php und node-view-VIEWNAME.tpl.php soweit schonmal nach meinen Wünschen hinbekommen. Meine Frage ist jetzt, wie ich z.B. die erste Node der View, anders gestalten kann als die darauf folgenden?
Also praktisch will ich, dass der erste Eintrag meiner blogähnlichen Ansicht größer dargestellt wird, als die restlichen Einträge die unter dieser View erscheinen.
--------------------------------------------
1. Eintrag, voller Text, Lorem ipsum
dolor sit amet. Bla Bla Bla
--------------------------------------------
---------------------
2. Eintrag, kleine
Schrift, halbe Breite
---------------------
---------------------
3. Eintrag, kleine
Schrift, halbe Breite
---------------------
Wäre super wenn mir da jemand weiterhelfen könnte, geht das eventuell auch per template?
- Anmelden oder Registrieren um Kommentare zu schreiben
View templates
am 10.06.2009 - 10:39 Uhr
Moin.
Dazu musst Du einfach eines der spezifischeren Templates für den View-Style verwenden. Wenn Du beim entsprechenden Display (ich nehme mal an "page") auf "theme information" klickst, erhälst Du ja eine Auflistung der möglichen Templates. Da wählst Du dann ein Template für das Ausgabeformat ("Row-style" oder "unformatted"; je nachdem, was Du eingestellt hast) und kannst dann dort auf die einzelnen Elemente des Views zugreifen.
hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Glaube Du hast mich falsch
am 25.06.2009 - 09:38 Uhr
Glaube Du hast mich falsch verstanden :)
Ich möchte nicht die einzelne Ansicht des Nodes themen, sondern ich möchte, dass auf der View-Seite, alles ab dem 2. Eintrag anders erscheint. Also ich habe:
page-VIEWNAME.tpl.php um die Seite der View zu themen
<?php print $content ?>
node-VIEWNAME.tpl.php um das Aussehen der Nodes der View zu themen (praktisch den Excerpt). Statt print $content nutze ich hier die einzelnen Elemente des Nodes z.B.
<table>
<tr>
<td class="row1" valign="top" align="left">
<img src="<?php print $node->field_trend[0]['filepath']; ?>" alt="Heutiger Trend" title="Heutiger Trend" />
</td>
<td class="row1" valign="top" align="left">
<?php print $node->content['body']['#value']; ?>
</td>
</tr>
</table>
und schließlich habe ich noch node-view-VIEWNAME.tpl.php, um das Aussehen des Nodes zu themen, wenn man diesen direkt aufruft (praktisch den Full-Text)
Meine Frage lautet jetzt, wie ich auf der Hauptansicht des Views (also nicht die Einzelansicht des Nodes), den ersten Node anders gestalten kann?
Da es in node-VIEWNAME.tpl.php kein foreach oder for gibt, wo vielleicht die Schleife durchläuft und die einzelnen Nodes ausgibt, frage ich mich an welcher Stelle wird das Template durchlaufen? Dann könnte ich einfach per $counter++ mitzählen und nur für den ersten eine andere Breite z.b. realisieren.
Hoffe jemand versteht was ich hier tippe :D
View template
am 25.06.2009 - 09:45 Uhr
Glaube Du hast mich falsch verstanden :)
Glaub ich nicht.
Ich möchte nicht die einzelne Ansicht des Nodes themen, sondern ich möchte, dass auf der View-Seite, alles ab dem 2. Eintrag anders erscheint. [snip] Meine Frage lautet jetzt, wie ich auf der Hauptansicht des Views (also nicht die Einzelansicht des Nodes), den ersten Node anders gestalten kann? [snip] Da es in node-VIEWNAME.tpl.php kein foreach oder for gibt ...
Wie bereits erwähnt, kannst Du das über ein Template entsprechend Deines Ausgabeformates erledigen.
Nehmen wir mal beispielsweise views-view-table.tpl.php oder views-view-unformatted.tpl.php. Dort werden die einzelnen Zeilen in einem
foreach
ausgegeben.Wenn Du also eines dieser beiden Templates verwendest (oder eines, das Deinem eingestellten Ausgabeformat entspricht), kannst Du jeden vom View ausgegebenen Eintrag Deinen Wünschen entsprechend darstellen (z.B. in einen zusätzlichen Container mit spezieller CSS Klasse einbetten).
hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.