[Gelöst - mit Kompromiss] Blog Seitenaufrufe: Nach jedem dritten Aufruf einen Trenner einfügen
am 28.03.2009 - 23:34 Uhr in
Hi.
Habe mal wieder alles durchgetestet und auch hier nichts im Forum gefunden (auch nichts passendes in der API oder einfach nicht gefunden).
Ich habe auf der Startseite von www.fahrzeuge.net ja den Blog. Jetzt bin ich dabei die Ansicht umzuändern und drei Newsblöcke nebeneinander zu packen. Das ist ja eigentlich kein Thema, denn ich lasse die Boxen einfach floaten, jedoch möchte ich nach jedem dritten Eintrag einen Trenner einfügen inkl. nem clear.
Das Problem dabei ist aber, dass ich da nicht einfach mit einer Schleife arbeiten kann, denn die Seite wird ja immer neu aufgerufen und somit ist meine variable immer 1 (wenn ich z. B. $i++ nehme).
Auch meine Idee es mit % zu machen schlug fehl. Ich hatte mir immer die ID der News aber somit auch nur 2 Zustände (0 und 1) und sollte ich mal eine News löschen, dann habe ich z. B. zwei mal 0 oder 1 hintereinander (da ich ja dann zwei ungerade oder zwei gerade Werte habe).
Jemand eine Idee, wie ich da den Trenner rein bekomme und weiter arbeiten kann?
Schon einmal danke für eine Antwort.
Gruß
- Anmelden oder Registrieren um Kommentare zu schreiben
views template
am 29.03.2009 - 00:28 Uhr
Moin!
Mal angenommen, Du verwendest views, um die Darstellung zu erzeugen. Dann kannst Du ganz einfach eine views-view--VIEWNAME.tpl.php (bzw. ein Template für die untergeordneten Ebenen; siehe "Theme information" beim View) für diesen speziellen View erzeugen und dort den Trenner einbauen (mit einem Zähler). Bei mir sieht das für eine Galerie beispielsweise so aus:
<?php
// $Id$
/**
* @file views-view-grid--gallery.tpl.php
* view template to display gallery items in a grid.
*/
?>
<?php foreach ($rows as $row_number => $columns): ?>
<?php foreach ($columns as $column_number => $item): ?>
<?php
$itemclass = 'view-item';
if (count($columns) == ($column_number + 1)) {
$itemclass .= ' last';
}
?>
<div class="<?php print $itemclass; ?>">
<?php print $item; ?>
</div>
<?php endforeach; ?>
<?php endforeach; ?>
Du könntest dann bei Dir bei jeder 3. Spalte einen Trenner einfügen. Oder jedes 4. Element mit einer zusätzlichen Klasse versehen:
<?php
$itemclass = 'view-item';
if (($column_number + 1) % 4 == 0) { // $column_number beginnt bei 0
$itemclass .= ' clear';
}
?>
hth,
Stefan
Erst einmal danke für deine
am 29.03.2009 - 01:42 Uhr
Erst einmal danke für deine Antwort.
Ich habe gehofft, bzw. hoffe, dass ich das ohne Views lösen kann (weil das wäre nur eine Abfrage in meinem schon fertigen Blog-Template).
Der Knackpunkt zusätzlich ist, dass ich jetzt 1 Stunde an den Views rumgefingert habe, es aber nicht hinbekomme die Ausgabe zu erzeugen. Wie kann ich den den unformatierten View anzeigen lassen und ggf. noch einzeln bearbeiten (die ganzen einzelnen Elemente möchte ich ja so anordnen wie ich es haben muss). Im Blog-Template habe ich ja z. B. folgende Ausgabe für das Bild: $node->field_newspics[0][view]
Mit Views habe ich bisher nämlich noch nichts gemacht. Auch das hier im Forum empfohlene Video dazu habe ich zwar "sprachlich" verstanden (ist ja englisch), aber anscheinend kann ich das nicht umsetzen, weil es nicht so hinhaut (mag wohl an mir legen :-D).
Ich danke echt für jede verständliche Hilfe.
Gruß
Ausgabe mit Views geht jetzt aber
am 29.03.2009 - 18:49 Uhr
ich kann es einfach nicht formatieren.
Mein Code aus der views-tpl-Datei ist folgender:
<?php
// $Id: views-view-unformatted.tpl.php,v 1.6 2008/10/01 20:52:11 merlinofchaos Exp $
/**
* @file views-view-unformatted.tpl.php
* Default simple view template to display a list of rows.
*
* @ingroup views_templates
*/
?>
<?php if (!empty($title)): ?>
<h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $id => $row): ?>
<div class="<?php print $classes[$id]; ?>">
<?php print $row; ?>
</div>
<?php endforeach; ?>
Das ist ja der Standard-Code. Ich kann aber machen was ich möchte, ich kann auf die einzelnen Elemente nicht zugreifen. In der Hilfe steht z. B. mit
<?php
print $row['title'];
?>
Ist ja auch logisch, geht aber nicht, bekomme keine Anzeige.
Jemand eine Idee, wie ich das machen kann?
Schon einmal danke und Gruß
view template
am 29.03.2009 - 22:11 Uhr
Moin!
Du musst das Template für die Ebene darunter (Zeilenebene) verwenden. Wie das heisst, steht in der Auflistung unter "Theme information".
Dort kannst Du dann auf die einzelnen Spalten (sprich Elemente) zugreifen.
hth,
Stefan
Aaaah, aber
am 29.03.2009 - 23:22 Uhr
dann muss ich ja jedes Element in einer eigenen .tpl-Datei bearbeiten oder?
Bsp. bei mir steht jetzt das hier:
Feld Inhalt: Newsbilder (field_newspics) (ID: field_newspics_fid): views-view-field.tpl.php, views-view-field--field-newspics-fid.tpl.php, views-view-field--startseitennews.tpl.php, views-view-field--startseitennews--field-newspics-fid.tpl.php, views-view-field--default.tpl.php, views-view-field--default--field-newspics-fid.tpl.php, views-view-field--startseitennews--default.tpl.php, views-view-field--startseitennews--default--field-newspics-fid.tpl.php
Dann habe ich jetzt ein Template erstellt was wie folgt heißt: views-view-field--field-newspics-fid.tpl.php
Dann muss ich noch ein separates für den Text, für das Datum usw. erstellen?
Wenn ja, wie kann ich die Dinger denn später ineinander verschachteln? Bsp. ich mache das Bild in ein Div, möchte aber das Datum direkt darunter aber in der Div box haben.
oder ich habe das Prinzip immer noch nicht so recht kapiert :-D.
Ich danke dir.
View template
am 30.03.2009 - 07:46 Uhr
Moin!
Das ist jetzt wieder eine Ebene Zu weit :-). Verwende doch mal "Grid" als "Style", dann kannst Du views-view-grid.tpl.php verwenden (und umschreiben).
Stefan
So mein Gutster =). Danke,
am 30.03.2009 - 23:00 Uhr
So mein Gutster =).
Danke, mit dem Grid klappt es, sehr gute Idee.
Bloß wie ich in der Datei jetzt auf die einzelnen Elemente zugreifen kann ist mir noch schleierhaft. Mit z. B. rows['title'] gehts nämlich nicht (keine Ausgabe).
Wenn du dafür noch ne Idee hast, dann bin ich glaub ich (für kurze Zeit) zufrieden :-D.
Mein Code:
<?php
// $Id: views-view-grid.tpl.php,v 1.3 2008/06/14 17:42:43 merlinofchaos Exp $
/**
* @file views-view-grid.tpl.php
* Default simple view template to display a rows in a grid.
*
* - $rows contains a nested array of rows. Each row contains an array of
* columns.
*
* @ingroup views_templates
*/
?>
<?php if (!empty($title)) : ?>
<h3><?php print $title; ?></h3>
<?php endif; ?>
<?php foreach ($rows as $row_number => $columns): ?>
<?php foreach ($columns as $column_number => $item): ?>
<div class="blogbox">
<?php print $item; ?>
</div>
<?php endforeach; ?>
<p class="clrmiddle2"> </p>
<?php endforeach; ?>
Das ich das jemals mit einer einzelnen Datei machen muss würde ja mein Problem von oben aufwerfen, zum Einen sehr viele Dateien bei vielen Views und zum Anderen kann ich dann ja nicht direkt was verschachteln.
Vielleicht noch eine Frage, die aber nicht so wichtig ist weil es dennoch klappt:
Designausgabe: views-view-grid.tpl.php, views-view-grid--startseitennews.tpl.php, views-view-grid--default.tpl.php, views-view-grid--startseitennews--default.tpl.php
So sieht das bei mir aus, was ich ausgewählt habe. Erstellt habe ich jedoch die Datei views-view-grid--startseitennews.tpl.php und die wird auch genommen. Aber auch nach dem neu Einlesen nicht fett markiert.
Schon mal (wieder einmal ;-D), Danke.
View template
am 31.03.2009 - 07:46 Uhr
Danke, mit dem Grid klappt es, sehr gute Idee.
Ich weiss. Auch wenn sie nicht von mir ist :-).
Bloß wie ich in der Datei jetzt auf die einzelnen Elemente zugreifen kann ist mir noch schleierhaft. Mit z. B. rows['title'] gehts nämlich nicht (keine Ausgabe).
Die einzelnen Elemente werden ja über
print $item
ausgegeben. Und diese Ausgabe kannst Du dann wieder in einem untergeordneten Template (views-view--startseitennews-fields-field.tpl.php oder so ähnlich) verändern.In der ...-grid...tpl.php kannst Du (was wir ja eigentlich wollten) nun - wie schon vorher gezeigt - dem Elementcontainer eine zusätzliche Klasse hinzufügen, so dass ein
clear
auf das Element angewendet werden kann.Designausgabe: views-view-grid.tpl.php, views-view-grid--startseitennews.tpl.php, views-view-grid--default.tpl.php, views-view-grid--startseitennews--default.tpl.php
So sieht das bei mir aus, was ich ausgewählt habe. Erstellt habe ich jedoch die Datei views-view-grid--startseitennews.tpl.php und die wird auch genommen. Aber auch nach dem neu Einlesen nicht fett markiert.
Och, das ist nicht so schlimm. Solange die Datei verwendet wird, ist es mir eigentlich immer vollkommen Wurscht, was da fett markiert ist.
hth,
Stefan
Och man, oh man, ich glaubs
am 31.03.2009 - 14:06 Uhr
Och man, oh man, ich glaubs kaum.
Aber jetzt nachdem das soweit ist, dass ich da nach deiner Info weiterarbeiten könnte fällt mir auf, dass es ja noch ein Problem gibt. Wenn du auf www.fahrzeuge.net gehst, siehst du ja rechts meine Kategorien dafür ABER die werden dafür ja gar nicht genommen :-/.
Das bezieht sich ja "nur" auf eine Seite. Somit muss ich ja die Blogansicht dementsprechend abändern um das gewünschte Ergebnis zu erziehlen oder? Gibt es vielleicht eine Möglichkeit, die Ausgabe auf die Blogansicht anzuwenden (dass immer das View für alle Blogansichten genommen wird). Wobei das nicht für die Blogdetailansicht sondern nur für die Blogvorschau (halt der Teaser) gelten darf.
Man, könnte ich einfach im Blog ne Schleife laufen lassen wäre es soooo einfach :-D.
Für jede Anregung bin ich offen.
Ich weiß schon gar nicht mehr was ich schreiben soll, danke hört sich bald schon so wenig an :-D.
Gruß
Ich habe es jetzt einfach so
am 01.04.2009 - 21:05 Uhr
Ich habe es jetzt einfach so umgesetzt, dass ich auf der Startseite den View anzeigen lasse und alles sonstige noch mal in der Blogansicht überarbeite (ohne dreispaltigem Layout).
Dann passts.
Gruß