Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 17. Mai 2011 22:22

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

[Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Ich habe Folgendes vor:

1) Auf einer Startseite wird eine Kalenderansicht eingebunden (kein Problem).
2) Bei Klick auf ein belegtes Datum erhalte ich die zugehörige Detailansicht auf einer Detailpage (auch kein Problem).
3) Aber jetzt kommt's: Ich möchte bei Klick auf ein beliebiges Datum auf die Detailpage gelangen, diese soll aber stets alle Artikel des Kalenders chronologisch und en detail enthalten und ich möchte via Anker beim richtigen Detaileintrag landen.
Im Newsmodul gibt es dafür showall, den ich 0 setzen kann. Beim Kalender funktioniert das dummerweise nicht.
Als Parameter für den Anker könnte man die Artikel-ID in Summary und Detail verwenden, aber wie setze ich das praktisch um?

Der Ideequell dafür ist mare.de; dort mal rechts unten auf einen Kalendereintrag klicken, und die Ergebnisseite betrachten. Finde ich genial einfach für einen Veranstaltungskalender.

Hat jemand eine zündende Idee?

Daten meiner Installation:
Core 1.9.4.1
CGCalendar 1.6.1

Beitrag geändert von COR9 (19. Mai 2011 09:39)

Offline

#2 17. Mai 2011 07:30

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

COR9 schrieb:

Ich möchte bei Klick auf ein beliebiges Datum auf die Detailpage gelangen, diese soll aber stets alle Artikel des Kalenders chronologisch und en detail enthalten und ich möchte via Anker beim richtigen Detaileintrag landen.

Eigentlich beantwortest du dir die Frage bereits selbst devil - du willst eine Zusammenfassungsseite auf einer Detailseite anzeigen lassen.

Möglicherweise ist mir heute morgen meine Kreativität abhanden gekommen, aber so ad hoc sehe ich da keine Chance, dies mit Standard-Mitteln umzusetzen. Dafür müsstest du das Modul umschreiben/anpassen ...

Offline

#3 17. Mai 2011 10:05

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Danke Cyberman für die Antwort. Aber möglicherweise sind Modifikationen auf der Template-Ebene doch ausreichend, man muss nur immer so um die Ecke denken bei den »newsoiden Modulen«; ich poste hier meine Fortschritte.

Überlegungen:

1) Die Kalenderlinks (Klick auf's Datum in der Kalenderansicht) sind »zu dynamisch«. Ich werde sie so modifizieren: Statischen Link im Kalender-Template auf die Seite legen, die ich vorher als Detailpage eingerichtet hatte. Allerdings wird der Link um einen Anker ergänzt, der die Artikel-ID enthält. Das Kalendermodul wird nun auf einer beliebigen Seite in der Standard-Ansicht (Kalender) aufgerufen.

2) Auf meiner Detailseite rufe ich wiederum das Kalendermodul auf, diesmal aber als Listen-Anzeige. Damit habe ich schon mal alle Artikel auf einer Seite. Es existieren bereits zwei Listen-Templates, die sofort die Details aller Artikel resp. Termine anzeigen. Jeder Termin bekommt das Ankerziel mit und ich lande an der richtigen auf meiner Veranstaltungsliste.

Hoffe, das klappt so.

Offline

#4 17. Mai 2011 12:50

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Ich hänge unter 1), wo ich dem Link die ID des jeweiligen Artikels/Events mitgeben möchte. Wahrscheinlich ist die ID im Template gar nicht verfügbar. Im Backend hat aber jeder Artikel eine.

Wie hole ich mir jetzt die ID rein? Im Grunde müsste doch

[== Smarty ==]
{$event.event_id}

ausreichen, um die Nummer an jeden beliebigen Ausdruck anzuhängen.

Offline

#5 17. Mai 2011 13:31

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Offline

#6 17. Mai 2011 14:42

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Leider liegt das Problem darin, dass Werte für Event-IDs im Kalender-Template nicht abrufbar sind, während sie in den Listentemplates verfügbar sind. An der Stelle stehe ich auf dem Schlauch. Denn zumindest der day.url-String »weiß« ja, auf welchen Artikel er verlinken soll.

Offline

#7 17. Mai 2011 15:28

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

COR9 schrieb:

Denn zumindest der day.url-String »weiß« ja, auf welchen Artikel er verlinken soll.

Genau. Daher muss die Event-ID auch in der URL enthalten sein ...

Offline

#8 17. Mai 2011 17:12

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Aber wo finde ich die Funktion, die diese news-typischen kryptischen ellenlangen Links erzeugt? Dann könnte ich da was ändern und mir die ID von da holen.
Eigentlich brauche ich ja auch viel weniger, als da landläufig drin ist

Der erzeugte Link soll dann etwa so aussehen:

[== Smarty ==]
{* Ausschnitt aus dem Kalender-Template *}
<a href=http://www.domain.tld/veranstaltungen#{$event.event_id}>{$key}</a>

Beitrag geändert von COR9 (17. Mai 2011 17:24)

Offline

#9 17. Mai 2011 20:15

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Notlösung, damit der Kalender erstmal online kann:

Ich habe eine dreistellige Ankerzahl aus dem Start-Datum des jeweiligen Events gebaut. Gefallen tut mir das aber nicht so richtig.

Offline

#10 18. Mai 2011 10:09

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Ähmm, du erlaubst doch, dass ich jetzt schmunzele big_smile

cyberman schrieb:

Dafür müsstest du das Modul umschreiben/anpassen ...

Vermutlich function.displaycalendar.php, Zeile 266

Offline

#11 18. Mai 2011 12:08

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

cyberman schrieb:

Ähmm, du erlaubst doch, dass ich jetzt schmunzele

Gern.
Ich hab dafür unter wildem Gebastel das Modul »besser kennengelernt«, denn mit den Handbüchern ist das ja so ne Sache.
Wobei neue Fragezeichen aufgeploppt sind. Momentan zeigt mir der Kalender die Bezeichnung einer hochgeladenen Bilddatei an anstatt sie selbst. Sieht nach einem Bug aus.

Offline

#12 19. Mai 2011 07:42

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

COR9 schrieb:

Wobei neue Fragezeichen aufgeploppt sind. Momentan zeigt mir der Kalender die Bezeichnung einer hochgeladenen Bilddatei an anstatt sie selbst.

Notfalls mal mit {gettemplatevars} bzw. einem {$variable|print_r} prüfen, was da vorhanden ist.

Offline

#13 19. Mai 2011 09:24

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Jetzt hab ich's, mein Kalender funktioniert wie er soll, und zwar ohne das Modul selbst umzuschreiben. Ich stochere noch ziemlich in Smarty rum, deshalb ist der Code vielleicht nicht ganz so geradeaus geschrieben. Und die Profis finden's sicher nicht weltbewegend. Aber eventuell erspare ich jemandem Probieren, wenn ich die Lösung hier poste:

Dynamische URL zur Detailseite habe ich durch internen Seitenlink ersetzt. Diesem wird ein Anker mitgegeben, damit sofort der richtige Eintrag in der Detailliste erreicht wird. Dafür muss die Event-ID jedes Events mit foreach verfügbar gemacht werden. Da schon beim Sprung auf den ersten Eintrag die Navigation meiner Detailseite nicht mehr zu sehen wäre, springt dieser Link auf den Seitenanfang. Alle anderen hupfen brav zu ihrem Ankerplatz.

Ausschnitt aus dem Kalendertemplate:

[== Smarty ==]
<td {if isset($day.class)}class="{$day.class}"{/if}>
{if isset($day.events.0)}<a href="index.php?page=krautwald-kalender#{foreach from=$day.events item=event}
{if $event.event_id == 1}top{else}{$event.event_id}{/if}{/foreach}">{$key}</a>
{else}{$key}{/if}
</td>

Ins Listen-Template wird ein Ankerziel eingefügt:

[== Smarty ==]
<a name="{$event.event_id}"></a>

Offline

#14 19. Mai 2011 09:27

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Gelöst?

Offline

#15 19. Mai 2011 09:33

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Schiebe gleich noch die Lösung zum Bild-Problem hinterher.  angel

Offline

#16 19. Mai 2011 09:38

COR9
Server-Pate
Ort: Dresden
Registriert: 09. November 2010
Beiträge: 281

Re: [Gelöst] CGCalendar - alle Artikel auf Detailpage chronologisch listen

Problem war, dass nicht der komplette img-Tag ausgegeben wird, sondern nur der Dateiname.

Ich habe mein Listentemplate so verändert, dass gleich noch ein Standardbild angezeigt wird, falls für das jeweilige Event keines geladen wurde. Für meine Zwecke ist das ausreichend:

[== Smarty ==]
{if $event.fields.Kalenderbild != ""}<img src="uploads/images/krautkalender/{$event.fields.Kalenderbild}" alt="Ereignisfoto" width="120" height="" />
{else}<img src="uploads/images/kraut_logo_120.png" alt="Krautwald-Logo" width="120" height="118" />{/if}

So, jetzt ist der Fall gelöst.

Offline