Page 1 of 1

Entries unterschiedlich darstellen (Hintergrund)

Posted: Thu Aug 10, 2006 1:44 pm
by jorainbo
Hallo,

die Idee ist, die Entries auf der Startseite (oder auch einer Kategorie, eines users, etc, eben immer wenn mehrere entries auf einer Seite kommen) mit unterschiedlichen Hintrgrundfarben zu versehen, damit sie sich besser voneinander abheben...also so ne Art Schattierung.

Immer abwechselnd... hoffe das war verständlich. Am besten dafür wären unterschiedliche CSS-Klassen.

Wenn ich mir die entries.tpl anschaue, dann baut die ja die Seite über "foreach"-Schleifen zusammen (ich muss dazusagen, meine php-Kenntnisse sind rudimentär +g*). D.h. aber auch, jeder entry ist gleich und hat die gleichen CSS-Klassen.

Gibt´s da ne Möglichkeit, abwechselnd zusätzliche/andere CSS Klassen mitzugeben je entry so dass man die besser formatieren kann?

Danke und Grüße
Jorainbo

Re: Entries unterschiedlich darstellen (Hintergrund)

Posted: Thu Aug 10, 2006 2:12 pm
by garvinhicking
Hi!

Innerhalb der {foreach} schleifen kannst Du auf einen index zugreifen, und Du kannst dann prüfen ob dieser Index gerade oder ungerade ist.

Code: Select all

{foreach from=$entries item="entry" name="entryloop"}
{if $smarty.foreach.entryloop.index % 2}
<div class="odd">
{else}
<div class="even">
{/if}

...

</div>
{/foreach}
Dann kannst Du die CSS-Klassen .odd und .even einfach speziell hinterlegen.

Viele Grüße,
Garvin

Re: Entries unterschiedlich darstellen (Hintergrund)

Posted: Thu Aug 10, 2006 2:24 pm
by jorainbo
garvinhicking wrote:Hi!

Innerhalb der {foreach} schleifen kannst Du auf einen index zugreifen, und Du kannst dann prüfen ob dieser Index gerade oder ungerade ist.

Code: Select all

{foreach from=$entries item="entry" name="entryloop"}
{if $smarty.foreach.entryloop.index % 2}
<div class="odd">
{else}
<div class="even">
{/if}

...

</div>
{/foreach}
Dann kannst Du die CSS-Klassen .odd und .even einfach speziell hinterlegen.

Viele Grüße,
Garvin
perfekt, genausowas habe ich gesucht...werde ich heut abend gleich mal testen, wird aber sicher funktionieren....super, vielen Dank

Jorainbo

Posted: Thu Aug 10, 2006 6:31 pm
by call
es funktioniert!

bei mir kommt es nur vor, dass zwischendurch mal zwei einträge hintereinander farblich hinterlegt sind und das mit dem abwechselnd farbe/keine farbe nicht immer passt.
aber ich hab ne vermutung warum das bei mir so ist.

gruss,
stephan

Re: Entries unterschiedlich darstellen (Hintergrund)

Posted: Thu Aug 10, 2006 7:36 pm
by jorainbo
garvinhicking wrote:Hi!

Innerhalb der {foreach} schleifen kannst Du auf einen index zugreifen, und Du kannst dann prüfen ob dieser Index gerade oder ungerade ist.

Code: Select all

{foreach from=$entries item="entry" name="entryloop"}
{if $smarty.foreach.entryloop.index % 2}
<div class="odd">
{else}
<div class="even">
{/if}

...

</div>
{/foreach}
Dann kannst Du die CSS-Klassen .odd und .even einfach speziell hinterlegen.

Viele Grüße,
Garvin
funktioniert leider bei mir nicht richtig. Wenn ich deinen Code unterhalb von

Code: Select all

    {foreach from=$entries item="dategroup"}
in die entries.tpl einbaue,

dann hab ich zum einen massig HTML Warnungen wegen falsch geschlossenem div (frage, wo genau muss das schliessende div und das schliessende foreach hin) und zum anderen habe ich nun irgendwie alle etries doppelt und dreifach *gg* Statt meinen 12 entries zeigt er mir 78 an (alle so 5-6 mal) und die ersten ca. 15 sind schön abwechselnd schattiert, aber irgendwann hört es auf und nur noch sehr unregelmäßig sind die schattierungen drin... ???

Re: Entries unterschiedlich darstellen (Hintergrund)

Posted: Fri Aug 11, 2006 9:44 am
by garvinhicking
Hi!

call: Du musst den Loopnamen für den ersten foreach loop nehmen, nicht den zweiten. Sonst würden Einträge nur für dasselbe Datum sich abwechseln!

Jorainbo: Du hast den Code anscheinend falsch eingebaut. :-)

Viele Grüße,
Garvin

Re: Entries unterschiedlich darstellen (Hintergrund)

Posted: Fri Aug 11, 2006 12:55 pm
by jorainbo
garvinhicking wrote:Hi!
Jorainbo: Du hast den Code anscheinend falsch eingebaut. :-)

Viele Grüße,
Garvin
Ach nee, sag bloß :-))

Die Zeile aus deinem Code:

Code: Select all

{foreach from=$entries item="entry" name="entryloop"} 
muss die zusätzlich in die entries.tpl nach dem ersten foreach? Also diekt nach:

Code: Select all

{foreach from=$entries item="dategroup"}
Habe auch versucht diese Zeile durch deinen Code zu ersetzen, aber dann wurden gar keine entries mehr angezeigt...

Re: Entries unterschiedlich darstellen (Hintergrund)

Posted: Fri Aug 11, 2006 12:58 pm
by garvinhicking
Hi!
Ach nee, sag bloß :-))
Das war nur ne Retourkutsche dafür, dass ich meine Zauberkugel nicht anwenden konnte.

Sprich, ohne dass du uns zeigst wie Dein Code aussieht (nopaste.php-q.net nutzen, bitte) können wir hier recht wenig dazu sagen, was da schief läuft :)

muss die zusätzlich in die entries.tpl nach dem ersten foreach? Also diekt nach:
Nein, nicht zusätzlich. Mein Loop greift darauf zu; Du musst nur die existierenden foreaches anpassen und einen "name" vergeben, der dann als Index genutzt wird für das Odd/Even-Zählen.

Viele Grüße,
Garvin

Re: Entries unterschiedlich darstellen (Hintergrund)

Posted: Fri Aug 11, 2006 3:55 pm
by jorainbo
garvinhicking wrote:Hi!


Das war nur ne Retourkutsche dafür, dass ich meine Zauberkugel nicht anwenden konnte.
okay okay :-))
garvinhicking wrote: Sprich, ohne dass du uns zeigst wie Dein Code aussieht (nopaste.php-q.net nutzen, bitte) können wir hier recht wenig dazu sagen, was da schief läuft :)

=> http://nopaste.php-q.net/231760

Nein, nicht zusätzlich. Mein Loop greift darauf zu; Du musst nur die existierenden foreaches anpassen und einen "name" vergeben, der dann als Index genutzt wird für das Odd/Even-Zählen.

Viele Grüße,
Garvin
er schreibt mir die div class=odd und even ja in den quelltext, aber er schliest die div´s nicht an der richtigen stelle und deshalb passt das irgendwie noch nicht....die ersten 4 artikel sind abwechselnd schattiert, dann kommen 3 in der gleichen farbe, dann nochmal 2 in der gleichen farbe und dann nochmal 4 in der gleichen farbe....sehr strange

Danke und Grüße

Jorainbo

Posted: Sat Aug 12, 2006 3:21 pm
by call
bei mir siehts auch so aus.

Posted: Sun Aug 13, 2006 1:54 pm
by garvinhicking
Hi!

Okay, die Loop-Sache hat sich innerhalb von 2 Unterschleifen in der Tat nicht bewährt. Statdessen habe ich mal versucht es mit {counter} zu machen:

http://nopaste.php-q.net/232147


Grüße,
Garvin

Posted: Sun Aug 13, 2006 4:01 pm
by call
wenn ich damit richtig liege, dass nur der folgende abschnitt angepasst werden muss,

Code: Select all

{foreach from=$entries item="dategroup" name="entryloop"}
        {counter name="entrycount" start=1 skip=1 assign="entrycount"}
        {if $entrycount % 2}
        <div class="odd">
        {else}
        <div class="even">
        {/if}
dann funzt es nicht.
bei mir werden nun alle entries hinterlegt und nur zwischendurch ist mal einer nicht hinterlegt.

mal jorainbos praxisbericht abwarten.

grüsse,
stephan

Posted: Sun Aug 13, 2006 4:13 pm
by garvinhicking
Call, kann man dein ergebnis irgendwo auf einer URL betrachten?

Grüße,
Garvin

Posted: Sun Aug 13, 2006 4:24 pm
by call
ja, auf
http://www.dailyresearch.de/
(die headlines, jetzt alle grau hinterlegt)

grüsse,
stephan

css

Code: Select all

.odd {
background-color: #f3f3f3;
	}
.even {
background-color: #ffffff;
	}
entries.tpl

Code: Select all

<!-- ENTRIES START -->
    {serendipity_hookPlugin hook="entries_header" addData="$entry_id"}

    {foreach from=$entries item="dategroup" name="entryloop"}
        {counter name="entrycount" start=1 skip=1 assign="entrycount"}
        {if $entrycount % 2}
        <div class="odd">
        {else}
        <div class="even">
        {/if}

Posted: Sun Aug 13, 2006 4:43 pm
by garvinhicking
Hi!

Die position des <div class="xxx"> musst Du auch an die Stelle legen, wo Dein einzelner Eintrag im gesamt-entries.tpl ausgegeben wird. Also als Klasse in dem Div, indem auch dein serendipity_entry body liegt.

Derzeit hast Du es oberhalb des Datums eingetragen, was halt dort ja in der Schleife nur einmal ausgegeben wird...

Leider fehlt mir etwas die Zeit dazu, das hier detailiert darzulegen.

Viele Grüße,
Garvin