Unterschiedliche teaser für views pageview und views block
am 24.11.2007 - 21:52 Uhr in
Hallo!
Ich habe zwei contenttypes mit event informationen, "event" und "ausstellung".
Mittels node-event.tpl.php file werden events in der Form ausgegeben:
am "Event_Start_Datum" um "Event_Start_Zeit"
Titel
Textkörper
mit node-ausstellung.tpl.php werden Ausstellungen in dieser Form ausgegeben:
vom "Event_Start_Datum" bis zum "Event_End_Datum"
Titel (kein link)
Textkörper
Jetzt mein Problem:
Ich benutze eine view um einen block und eine Seitenansich mit aktuellen Events zu erstellen.
Im Block soll für node_type event
am "Event_Start_Datum" um "Event_Start_Zeit"
Titel (as link)
angezeigt werden, für node_type ausstellung
vom "Event_Start_Datum" bis zum "Event_End_Datum"
Titel (as link)
angezeigt werden.
Für die Seiten Ansicht benutze ich "Liste der Ansichtstexte" und bekomme das Ergebnis, wie es sein soll.
Problem ist der Block ... benutze ich dort Liste der Anrisstexte, wird natürlich der ganze teaser ausgegeben, das ist aber viel zu lang! Außerdem ist der Titel kein link ...
Wie kann ich also den teaser für die Block Ansicht einer view anders themen?
(ich bräuchte also insgesamt 4 themes für die Teaser:
1) event teaser "normal"
2) event teaser kurz für view block
3) ausstellung teaser "normal"
4) ausstellung teaser kurz für view block
- Anmelden oder Registrieren um Kommentare zu schreiben

OK, ich benutze jetzt diese
am 25.11.2007 - 22:53 Uhr
OK, ich benutze jetzt diese Funktion in template.php:
function chameleon_php_views_view_teasers_VIEWNAME($view, $nodes, $type) {return views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaser');
}
und dies in node-event.tpl.php:
<?php if ($teaser === 'EventsViewTeaser') { ?>\\theming the teaeser for view ....
<?php }
else { ?>
\\theming the normal teaser
<?php }
Meine view hat sowohl einen block, als auch eine Seitenansicht ....
Kann ich diese Funktion auf die Block Ansicht beschränken?
Oder muss ich dazu eine zweite, eigene view für den block anlegen?
Wow das ist komplizierter,
am 26.11.2007 - 00:37 Uhr
Wow das ist komplizierter, als es aussieht ....
Ich habe jetzt folgende Funktion in meiner template.php:
function chameleon_php_views_view_teasers_VIEWNAME($view, $nodes, $type) {if ($type == block){
return views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaserBlock');
}
else {
return views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaserPage');
}
}
und entprechenden code in meinen node-node_type.tpl.php dateien (s.o.)
Jetzt habe ich alle teaser, wie sie sein sollen ....
Bleibt nur ein Problem:
Ich habe als Ansichtstyp für den Block "Liste der Anrisstexte" ausgewählt.
Wie bekomme ich die Ausgabe als richtige Liste?
(<ul><li> ...)einen Views Block (Liste der Anrisstexte) als Liste themen ....
am 26.11.2007 - 23:10 Uhr
So ich möchte jetzt einen views block mit teasern als html liste themen.
Folgendes habe ich in meine template.php geschrieben:
function chameleon_php_views_view_teasers_aktuelles($view, $nodes, $type) {
if ($type == block){ //es soll ja nur der block gethemed werden ...
return views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaserBlock'); //das brauche ich um in meiner node-CONTETNTYPE.tpl.php Datei den teaser zu themen ....
if (arg(0) == 'node' && is_numeric(arg(1))) //ab hier sollte eigentlich eine html liste entstehen.
{
$currentnode = node_load(arg(1));
}
$i = 0;
foreach ($nodes as $node) {
if ($node->nid != $currentnode->nid){
$i ++;
if ($i<= 5){
$output .= "<li>" . l($node->node_teaser, "node/$node->nid") . "</li>\n";
}
}
}
if ($output) {
return "<div class='menu'>\n<ul>\n" . $output . '</ul></div>';
}
//
}
else {
return views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaserPage');
}}
Leider funktioniert das so nicht, irgendwo muss ich das was falsch verschachtelt haben, bei den if Abfragen ....
Nur wo?
Hi florianr, dein post ist
am 27.11.2007 - 00:08 Uhr
Hi florianr,
dein post ist sehr insteressant :) wollte früher schon mal antworten aber mir ist nichts sinnvolles eingefallen... aber jetzt hab ich vielleicht nen hinweis:
http://de.php.net/return
Das steht:
"Wird die return() Anweisung innerhalb einer Funktion aufgerufen, wird die Ausführung der Funktion sofort beendet und das Argument als Wert des Funktionsaufrufs zurückgegeben."
Das heist alles was hinter
<?phpreturn views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaserBlock');
?>
steht, wird nicht ausgeführt...
Danke für Deine Antwort
am 27.11.2007 - 00:39 Uhr
Danke für Deine Antwort ...
Ja ich bin hier leider so ziemlich der Alleinunterhalter ... aber manchmal denkt es sich laut halt am besten ...
Ich habe das jetzt mal umgestellt, da fehlten auch noch zwei "'" ...
function chameleon_php_views_view_teasers_aktuell($view, $nodes, $type) {
if ($type == 'block'){
return views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaserBlock');}
else {
return views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaserPage');
}
if ($type == 'block'){
if (arg(0) == 'node' && is_numeric(arg(1)))
{
$currentnode = node_load(arg(1));
}
$i = 0;
foreach ($nodes as $node) {
if ($node->nid != $currentnode->nid){
$i ++;
if ($i<= 5){
$output .= "<li>" . l($node->node_title, "node/$node->nid") . "</li>\n";
}
}
}
if ($output) {
return "<div class='menu'>\n<ul>\n" . $output . '</ul></div>';
}
}
}
Nur leider hat die Funktion immer noch keinen effect.
@florianr, wenn ich Deinem
am 27.11.2007 - 00:37 Uhr
@florianr,
wenn ich Deinem Post bisher folge kommst Du mir wie Jemand vor dem man eine Axt geschenkt hat und der damit in den Wald gerannt ist und wie wild Baeume umhaut. Dabei hat er den grossen Stapel Holz vor seiner Haustuer uebersehen.
Also, was wuehlst Du wie wild mit PHP Code und Template rum. Es geht wohl etwas einfacher.
Wenn Du ein Problem hast einen Block-View auf bestimmte Weise mit Inhalt zu fuellen aber dies kein Problem mit einer Page-View ist dann erstelle fuer den geplanten Block einen separaten Page-View. Wenn er die Inhalte so hat wie sie im Block angezeigt werden sollen dann fuege diesen View in einem neu erstellten Block ein.
Einfuegen in den Block beispielsweise mit dem Modul Insert View, um nur eine Moeglichkeit zu nennen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
@quiptimeNun das eigentlich
am 27.11.2007 - 00:45 Uhr
@quiptime
Nun das eigentlich Problem ist eine View mit Typ "Liste der Ansichttexte" in eine html Liste zu bekommen. Der Unterschied zwischen block view und page view ist dabei doch das geringste Problem (oder übersehe ich da was?).
Ich bekomme auch eine page view nicht als liste formatiert ...
die function wird nach dem
am 27.11.2007 - 00:52 Uhr
Die Funktion wird nach dem ersten (oder else, dem zweiten) return abgebrochen! ... immernoch ... :)
Gut, was schlägst Du vor?
am 27.11.2007 - 00:58 Uhr
Ich habe einfach ein Brett vorm Kopf, was außer return kann ich denn dann verwenden?
Müsste ich ein array zurückgeben?
verwende den Viewyp Listen View !
am 27.11.2007 - 01:08 Uhr
@quiptime
Nun das eigentlich Problem ist eine View mit Typ "Liste der Ansichttexte" in eine html Liste zu bekommen. Der Unterschied zwischen block view und page view ist dabei doch das geringste Problem (oder übersehe ich da was?).
Ich bekomme auch eine page view nicht als liste formatiert ...
Ja warum nimmst Du auch als Viewtyp eine Liste der Anrisstexte?
Verwende doch als Viewyp Listen View. Dann hast Du Deine Liste.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Damit wäre ich dann wieder am Anfang ...
am 27.11.2007 - 01:22 Uhr
Mit einer Listen View für den Block habe ich ja angefangen.
Die war So angelegt:
Event_start_Date
node_title
Jetzt sollen aber einige Veranstaltungen mit einem Start und Enddatum angezeigt werden, andere aber wie bisher nur mit dem Startdatum.
Also habe ich für die Veranstaltungen zwei node types angelegt und via node-CONTENTTYPE.tpl.php file entsprechend zwei unterschiedliche teaser eingerichtet (einmal mit Start und End Zeit, einmal nur mit Startzeit.
Damit die Daten auch entsprechend in dem views block angezeigt werden, habe ich den nun von "Listenansicht" auf "Liste der Anrisstexte" umgestelt.
Ich bin offen für andere Vorschläge, aber ohne weiteres bekomme ich entsprechend unterschiedliche Datenformate in views wohl nicht hin oder?
Als Feld verwendest Body und waehlst als Handler Teaser
am 27.11.2007 - 01:33 Uhr
zwei unterschiedliche teaser eingerichtet (einmal mit Start und End Zeit, einmal nur mit Startzeit.
Damit die Daten auch entsprechend in dem views block angezeigt werden, habe ich den nun von "Listenansicht" auf "Liste der Anrisstexte" umgestelt.
Du hast Teaser eingerichtet weil Du die brauchst. Gut
Dann waehle den Typ Listview. Waehle, weil dabei erfordelich, ein Feld. Als Feld verwendest Body und waehlst als Handler Teaser. Damit hast Du in der Liste die Teaser.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Gut, dass habe ich schon
am 27.11.2007 - 01:56 Uhr
Gut, dass habe ich schon probiert ... Dann klappt es aber nicht mehr mit dieser Funktion:
function chameleon_php_views_view_list_aktuell($view, $nodes, $type) {return views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaser');
}
es wird damit wieder keine Liste augegeben. Ohne diese Funktion wird der teaser wieder nicht richtig gethemed ....
florianr wrote: Gut, dass
am 27.11.2007 - 02:08 Uhr
Gut, dass habe ich schon probiert ... Dann klappt es aber nicht mehr mit dieser Funktion:
function chameleon_php_views_view_list_aktuell($view, $nodes, $type) {return views_theme('views_view_nodes', $view, $nodes, $type, 'EventsViewTeaser');
}
es wird damit wieder keine Liste augegeben. Ohne diese Funktion wird der teaser wieder nicht richtig gethemed ....
Wozu benoetigst Du das? Was willst Du damit wo erreichen?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Damit habe ich bei der View
am 27.11.2007 - 02:22 Uhr
Damit habe ich bei der View mit View Type "liste der Anrisstexte" erreicht, dass ich in node-CONTENTTYPE.tpl.php den teaser richtig themen konnte, mit:
if ($teaser === 'EventsViewTeaser')konnte ich dann die richtige Formatierung auswählen.
Natürlich klappt das nur für view mit type teasers ...
Naja ich werde morgen daran noch etwas herumbasteln, vielleicht fällt mir ja was ein, wenn ich eine Mütze Schlaf intus habe ...
Vielen Dank soweit ...
Wenn Du mit Listview eine
am 27.11.2007 - 02:39 Uhr
Wenn Du mit Listview eine Liste erhaelst welche die Teaser erhaelt bist Du doch da wo Du hin moechtest.
Da ich nicht weiss was Du bei der Liste der Teaser noch formatieren moechtest kann ich Dir an der Stelle nicht wirklich weiter helfen. Allerdingst kannst Du mit dem View Theme Wizard auf die Viewliste Einfluss nehmen in dem Du damit ein Template fuer die Viewliste erstellst. Dieses Template ist dann aber kein node-CONTENTTYPE.tpl.php sondern ein Listentemplate fuer die Listview.
Ausserdem gibt es auch noch CSS um gewisse Formatierungen an den einzelnen Listeneintraegen, den Teasern, zu erreichen.
Entweder verstehe ich nicht was Du erreichen moechtest oder es ist einfach nur so das Du Dich gerade verrant hast. Verlasse den eingeschlagenen Loesungsweg und gehe anders vor.
Wenn ich Dir weiter helfen soll dann erklaere bitte was Du bei der Ausgabe der Teaserliste erreichen moechtest. Was willst Du formatieren? Worauf willst Du Einfluss nehmen?
Wenn Du online entwickelst kannst Du ja mal einen Link posten.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Wahrscheinlich hast du
am 27.11.2007 - 14:54 Uhr
Wahrscheinlich hast du recht, ich habe mich mit der Lösung vermutlich verrant, wäre ja im Grunde genommen auf den ersten Blick auch zu einfach gewesen.
Nochmal zusammengefasst, was ich möchte:
Ich möchte eine View, die Veranstaltungen anzeigt, es gibt zwei verschiedene Veranstaltungstypen, mit unterschiedlichen Datumsformaten.
(einmal vom DD.MM.YY. bis zum DD.MM.YY (Content type ausstellung) und einmal mit dem Datumsformat am DD.MM.YY um hh:mm Uhr)
unter dem datum soll der Titel als Link angezeigt werden.
Folgende Lösungsansätze habe ich bisher probiert:
1. View type Listview, Felder Datum und Titel (als Link):
führt nicht zum Ziel, da ich keine verschiedenen Datumsformate hinbekomme.
2. View type Teasers + entsprechend veränderte node-ContentType.tpl.php Datei:
Zeigt die Einträge eigentlich so an, wie sie sein sollen, aber nicht als html Liste ...
3. View type Listview, Feld node als Teaser:
Zeigt den "normalen" Teaser an, es soll aber nur Datum, Titel ausgegeben werden.
Zitat: 3. View type
am 27.11.2007 - 17:13 Uhr
3. View type Listview, Feld node als Teaser:
Zeigt den "normalen" Teaser an, es soll aber nur Datum, Titel ausgegeben werden.
Das hatte ich Dir vorgeschlagen.
Wenn mit 3. der "normale Teaser" an Stelle des Datum und Titel ausgegeben wird ja warum in Gottes Namen waehlst Du als Felder dann nicht Datum und Titel an Stelle von Nodebody->Teaser aus?
Damit hast Du die Liste die Du moechtest. Oder? Und es tritt Variante 1. mit Deinem Problem des Datums ein.
Das Datum zu formatieren ist wohl das eigentliche Problem bei dem was Du moechtest. Meinst Du das Datum formatieren wenn Du von formatieren der Liste sprichst?
Fuer das Datum wird es eine Loesung geben. Hattest Du deswegen nicht mal einen Thread laufen?
Kanst Du die Sache mit dem Datum noch mal genau erklaeren. Bitte einen neuen Thraed dafuer aufmachen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
quiptime, vielen Dank für
am 27.11.2007 - 17:40 Uhr
quiptime, vielen Dank für Deine geduldige hilfe ...;)
Ich habe jetzt hier nochmal einen Thread aufgemacht: http://www.drupalcenter.de/node/add/forum/412
Ich habe keine Ahnung, wie ich das Lösen sollte.
Ich neige im Moment dazu, zu versuchen eine "Liste der Anrisstexte" einfach mit css in die Optik einer Liste zu bringen, das sollte eigentlich möglich sein oder?
Oder ich verzichte eben auf die Bulletts, das kommt aber vermutlich auch nicht gut an ...
Die Lösung über http://www.drupalcenter.de/node/add/forum/412 (Liste mit Feldern) wäre vermutlich am besten ....)
Danke jedenfalls!
Gruß!
Florian
Du hast den falschen Link
am 27.11.2007 - 17:55 Uhr
Du hast den falschen Link fuer den neuen Thread gepostet - ich will keinen neuen aufmachen sondern den Link zu dem von Dir eroeffneten.
Ich habe mir eben das CCK Date Modul angesehen. Da wimmelt es nur so von Moeglichkeiten ein Datum zu formatieren.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.