In eigenem *.tpl Variablen Filtern, etc....
am 23.01.2009 - 16:14 Uhr in
Hallo Community,
so, meine views laufen sehr gut :) Mein view "termine" gibt mir, je nach Argument, eine Liste von Terminen aus. Klickt man auf den Titel, gelangt man auf die Node der News. Konnte auch, da ich eigene tpl einsetze, mit CSS wunderbar eingreifen (Farben, floats, usw....).
Was ich aber nicht "verstehe": Wie kann ich in meinem TPL (Ansicht "vtermine": Grid, Felder, 1 Spalte) die $rows und $items filtern? Möchte zum Beispiel den Titel kürzen, ein "weiter..." mit Link angeben, oder das Datumfeld mit "Uhr" hinten versehen.
Sehe aber keine Chance, auf meinem Weg hier einzugreifen:
views-view--termine--page-3.tpl.php Auszug:
...
<?php if ($rows): ?>
<div class="view-content">
<?php print $rows; ?>
</div>
<?php elseif ($empty): ?>
<div class="view-empty">
<?php print $empty; ?>
</div>
<?php endif; ?>
...
views-view-grid--termine--page-3.tpl.php
...
<tr class="<?php print $row_class; ?>">
<?php foreach ($columns as $column_number => $item): ?>
<td class="<?php print 'col-'. ($column_number + 1); ?>">
<?php print $item; ?>
</td>
<?php endforeach; ?>
</tr>
...
Habe zwar erfolgreich auch eine TPL views-view-field--termine--page-3--title.tpl.php und views-view-field--termine--page-3--field-time-event-value.tpl.php angelegt, ist das aber Sinn der Sache? Kann ich nicht mit den obigen beiden Dateien arbeiten? Ich frage nur: Befinde ich mich auf dem Holzweg?
LG,
goisgerl
- Anmelden oder Registrieren um Kommentare zu schreiben
Views templates
am 26.01.2009 - 09:02 Uhr
Moin!
Nein.
Prinzipiell könntest Du wohl auch nur mit den beiden Templates weiterkommen. Allerdings ist es eleganter (TM), für die einzelnen Felder (so sie denn angepasst werden sollen) weitere Templates zu verwenden. So bleibst Du flexibel und musst, falls Du weitere Felder anpassen möchtest, nicht immer das "Basis"template ändern, sondern kannst einfach ein Neues hinzufügen.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Danke Stefan, dann mach ich
am 26.01.2009 - 10:10 Uhr
Danke Stefan,
dann mach ich so weiter, mit dem time und teaser tpl klappt das sehr gut. Kann hier mit css modifzieren, das Design usw. etc.
Aber: Wie kann ich nun beispielsweise im teaser.tpl den $output mit einem "Weiterlesen...." versehen?
<?php
print '' .$output. ' Weiterlesen...';
?>
Auf die Art hat Weiterlesen ja keine Funktion - im Comment der Standardtpl steht $more - allerdings wirkt sich das hier nicht aus. Im time-field.tpl musste ich auch so tricksen:
<?php
if(ereg(":",$output)) {
print '' .$output. ' Uhr ';
} else {
print $output;
}
?>
Gibt es hier eine Lösung?
LG
goisgerl
Views templates
am 26.01.2009 - 10:49 Uhr
Aber: Wie kann ich nun beispielsweise im teaser.tpl den $output mit einem "Weiterlesen...." versehen?
<?php
print '' .$output. ' Weiterlesen...';
?>
Auf die Art hat Weiterlesen ja keine Funktion - im Comment der Standardtpl steht $more - allerdings wirkt sich das hier nicht aus.
Naja, Du musst da schon einen Link zur entsprechenden Node bauen:
<?php print $output . l(t('read more'), 'node/<IdDerNode>'); ?>
Die Id der Node müsste ja irgendwie im Template verfügbar sein (z.B. über
$node->nid
).Im time-field.tpl musste ich auch so tricksen:
<?php
if(ereg(":",$output)) {
print '' .$output. ' Uhr ';
} else {
print $output;
}
?>
Argh, was soll denn das
ereg
da? Willst Du einfach nur prüfen, ob in$output
ein ":" vorkommt?Dann nimm doch einfach strpos(). Das ist bei solch einfachen Abfragen um ein Vielfaches (!) schneller also
ereg
oder dessen Freunde.hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Danke Dir, habe den
am 26.01.2009 - 11:59 Uhr
Danke Dir,
habe den ereg-Panzer ausgetauscht, sry :)
Wegen dem Link: Genau das meinte ich, das ist mein Problem: Woher kralle ich mir die ganzen Variablen der View? Möchte auch, wenn im teaser ein Bild vorhanden ist, dieses verkleinern. Oder eben das Weiterlesen mit der richtigen ID hinterlegen, etc. Woher bekomme ich die Werte der Variablen und/oder die Definition der Variablen?
LG,
goisgerl
drupal_set_message
am 26.01.2009 - 12:08 Uhr
Woher bekomme ich die Werte der Variablen und/oder die Definition der Variablen?
Versuch mal:
<?php
drupal_set_message('<pre>' . printr(get_defined_vars(), 1). '</pre>');
?>
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Array ( [0] => stdClass
am 26.01.2009 - 13:08 Uhr
Array ( [0] => stdClass Object (
[nid] => 130
[node_revisions_title] => Treffen
[node_revisions_nid] => 130
[node_data_field_time_event_field_time_event_value] => 2009-01-21T15:00:00
[node_data_field_time_event_field_time_event_value2] => 2009-01-21T18:00:00
[node_data_field_time_event_nid] => 130
[node_type] => termine
[node_revisions_teaser] => Wir wollen uns treffen, das ist doch schön Wir wollen uns treffen, das ist doch schön Wir wollen uns treffen, das ist doch schön Wir wollen uns treffen, das ist doch schön.
Habe mir dank Deiner Info die def. Variablen ausgelesen: Allerdings klappt nirgends der Aufruf über $node->variable. Wie kann ich, da dies ja, bevor ich über Link auf den entsprechenden Node springe, die Views mit den o.g. Variablen beeinflussen?
LG,
goisgerl
$node
am 26.01.2009 - 13:18 Uhr
Hm, ein
<?php
drupal_set_message('<pre>' . print_r($node, 1). '</pre>');
?>
gibt kein Ergebnis?
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Nein, leere Seite. Hier der
am 27.01.2009 - 13:03 Uhr
Nein, leere Seite.
Hier der Link:
http://www.jjjjjjjjjjjjjjjjjjjjjjjj.de/?q=vtermine/kinder
views = termine
ansicht seite = vtermine
argument = kinder
Habe eigene tpl angelegt (siehe Threadstart), um eingreifen zu können. Eventuell liegt hier der Hund begraben?
views-view--termine--page-3.tpl.php
views-view-grid--termine--page-3.tpl.php
und dann die tpl für termin, title und teaser
Den drupal_set_message('' . print_r($node, 1). ''); baute ich zum testen in die views-view--termine--page-3.tpl.php ein.
LG,
goisgerl
Edit: Hm, der Inhaltstyp ist ein eigener: termine