Ergebnis 1 bis 9 von 9

Thema: Event-Link (wieder) ausblenden

  1. #1
    Contao-Fan
    Registriert seit
    26.03.2010.
    Beiträge
    327

    Standard Event-Link (wieder) ausblenden

    Hallo mal wieder!

    Ich habe nun doch noch einen "Bug" auf meiner Seite gefunden - den ich darauf zurückführe, dass in Contao 3.5 vieles anders ist als im antiken Typolight.

    Früher hatte ich ein modifiziertes Template (damals mod_calendar), welches bei Events OHNE Details das Event nicht anklickbar darstellt. Mein Template sah an der relevanten Stelle so aus:
    PHP-Code:
    <?php if ($event['details']): ?><a href="<?php echo $event['href']; ?>" title="<?php echo $event['title']; ?> (<?php if ($event['day']): echo $event['day']; ?><?php endif; echo $event['date']; if ($event['time']): ?><?php echo $event['time']; endif; ?>)"<?php echo $event['target']; ?>><?php endif; ?><?php echo $event['link']; ?><?php if ($event['details']): ?></a><?php endif; ?>
    Nun habe ich gedacht, ich baue meine Änderungen wieder rein, dies' Mal in cal_default - denn da fand ich das "Grundgerüst". Aber leider bewirkt es nicht, was es soll. Meine besagte Zeile in cal_default schaut derzeit so aus:
    PHP-Code:
    <?php if ($event['details']): ?><a href="<?= $event['href'?>" title="<?= $event['title'?> (<?php if ($event['day']) echo $event['day'] . ', '?><?= $event['date'?><?php if ($event['time']) echo ', ' .  $event['time']; ?>)"<?= $event['target'?>><?php endif; ?><?= $event['link'?><?php if ($event['details']): ?></a><?php endif; ?>
    Trotzdem sind alle Events (auch die alten von früher, die wirklich keine Details haben) anklickbar. Ich habe mir dann mal $event['details'] ausgegeben und einen mittleren Schreck bekommen, was da jetzt alles drin steht.
    Hat jemand von den Experten einen Tipp für mich, wie ich den alten Zustand (s.o.) wieder hin kriegen?

    TIA
    purzel

  2. #2
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Wie es früher war, kann ich jetzt nicht nachvollziehen. Aber du machst in deinem Schnipsel die Ausgabe des Links abhängig davon, ob das Feld $event['details'] existiert.
    Eigentlich ist der Link ja nur sinnvoll, wenn $event['href'] belegt ist. Schau dir diese Variable in den verschiedenen Fällen mal an. Vielleicht kommst du damit weiter.

    Gruß, folkfreund

  3. #3
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Im Template event_list befindet sich doch bereits so etwas
    PHP-Code:
    <?php if ($this->hasDetails): ?>
    Im Zweifelsfall siehst du dir am besten die Variablen an mit
    PHP-Code:
    <?php $this->showTemplateVars() ?>
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  4. #4
    Contao-Fan
    Registriert seit
    26.03.2010.
    Beiträge
    327

    Standard

    Leider ist $event['href'] immer belegt, auch wenn es keine Details gibt. Schade eigentlich.

    Aber der Tipp mit
    PHP-Code:
     <?php $this->showTemplateVars() ?>
    war gut. Es kamen zwar "elendig viele" Daten, aber ich habe gefunden was ich suchte. So dermaßen viele Daten kamen auch, wenn ich via print_r() oder var_dump() das Array ausgegeben habe, weswegen ich zunächst im Heuhaufen gestochert habe (ohne <pre> zu unübersichtlich und mit <pre> passte es nicht in das Seitenlayout).
    Ist es eigentlich normal, dass mittels print_r($event) oder var_dump($event) öfter mal *RECURSION* auftaucht?

    Ich darf übrigens nicht
    PHP-Code:
     <?php if ($this->hasDetails): ?>
    machen, das führt zu nichts. Den Erfolg hat letztendlich gebracht, als ich
    PHP-Code:
     <?php if ($event['hasDetails']): ?>
    benutzt habe. Somit ist meine ganze Zeile zum Ausblenden den Links im Fall "keine Details"
    PHP-Code:
     <?php if ($event['hasDetails']): ?><a href="<?= $event['href'?>" title="<?= $event['title'?> (<?php if ($event['day']) echo $event['day'] . ', '?><?= $event['date'?><?php if ($event['time']) echo ', ' .  $event['time']; ?>)"<?= $event['target'?>><?php endif; ?><?= $event['link'?><?php if ($event['hasDetails']): ?></a><?php endif; ?>
    Damit haut's hin, vielleicht kann es ja noch jemand gebrauchen.

    Danke nochmal!

  5. #5
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    showTemplateVars() - https://github.com/contao/core/blob/...plate.php#L235

    var_dump() brauchst du im Normalfall nicht zu benutzen, das zeigt dir viel zu viel. print_r($this), oder evtl. auf das Wesentliche beschränkt print_r($this->arrData), zeigt dir auch alles. Da fehlt zwar das pre, aber im Quelltext würdest du es schön eingerückt sehen.

    Ich hatte mal einen Fall, das mir print_r() einen String zeigt, welchen ich dann manipulieren wollte, was einfach nicht funktionierte. Bis ich dann mit var_dump() gesehen habe, dass dieser String gar nicht die erwartete Zeichenlänge hatte. Stell dir vor du siehst den String 'Contao Open Source CMS' und var_dump() sagt dir dann, dieser String hätte eine Länge von 4 Zeichen. Das war seltsam.

    Du kannst die Ausgabe von print_r() auch in eine Variable zwischenspeichern und dann noch manipulieren und später ausgeben.
    PHP-Code:
    $debug print_r($myVartrue);
    $debug htmlspecialchars($debug);
    echo 
    $debug
    Ja, diese Recursions tauchen oft auf, mit der Zeit lernt man das Wesentliche rauszupicken.

    Zu deinem letzten Codefetzen: mag zwar funktionieren, aber lesbar ist das nicht mehr .
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  6. #6
    Contao-Fan
    Registriert seit
    26.03.2010.
    Beiträge
    327

    Standard

    Etwas derartiges hatte ich schon vermutet

    mit der Zeit lernt man das Wesentliche rauszupicken.
    Gut möglich, gerade bei den Datenmengen auch wichtig.

    Zu deinem letzten Codefetzen: mag zwar funktionieren, aber lesbar ist das nicht mehr .
    Da ist (leider) was dran. Die Zeile ist ja ohne meine Bedingung(en) schon nicht gerade übersichtlich.
    Ich habe das damals an die Bedingung geknotet, weil ich es sinnlos erachte(te), die Events ohne Details anklickbar zu haben. Der Betrachter denkt es kommt noch was - kommt aber nicht. Die meisten meiner Events sind "nur" Termine, ohne Details.

    Leider musste ich noch ein anderes Problem in diesem Zusammenhang entdecken: Der iCal-Import (Erweiterung calendar_ical) benimmt sich anders als früher. Damals wurde der Event-Titel und das Datum jeweils als genau solches importiert. Die Version die jetzt aktuell ist, trägt den Namen (Titel) des Events zusätzlich als Text-Artikel in die Event-Details ein, d.h., alle Events haben Details, obwohl sie eigentlich keine haben. Über "mehrere bearbeiten" kriege ich die "überflüssigen" Text-Artikel nicht gelöscht (warum eigentlich?) - also muss ich JEDES Event anklicken und den Text-Artikel löschen (bis auf die paar wenigen, die tatsächlich Details haben sollen)
    Das ist natürlich ziemlich aufwändig...

  7. #7
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Zitat Zitat von purzel Beitrag anzeigen
    Die meisten meiner Events sind "nur" Termine, ohne Details.
    Man könnte auch sagen: "Die meisten meiner Nachrichten sind 'nur' Teaser, ohne Details." und entsprechend auf eine Verlinkung verzichten. Ich finde sowas in vielen Fällen ärgerlich, weil man keinen Permalink mehr hat. Man kann dann nicht sagen "Ich schicke Dir den Link", sondern muß sagen "Ich schicke Dir einen Link. Scrolle dort hinunter bis zum Text xxx. Aber beeile Dich, in einigen Tagen könnte der Text verschwunden sein."

    Wenn der Termin nur aus Datum, Uhrzeit und Titel besteht, verzichte ich aber auch auf Permalinks. Wenn aber noch ein Text dabei steht, biete ich auch immer den Permalink an (über den verlinkten Titel).
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  8. #8
    Contao-Fan
    Registriert seit
    26.03.2010.
    Beiträge
    327

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Wenn der Termin nur aus Datum, Uhrzeit und Titel besteht, verzichte ich aber auch auf Permalinks. Wenn aber noch ein Text dabei steht, biete ich auch immer den Permalink an (über den verlinkten Titel).
    Genau deswegen ja mein "Umstand" mit dem fallabhängigen Entfernen des Links. Hat ein Event Details, gibt es einen Link. Hat er keine, eben nicht. Teaser habe ich bei Events noch nie benutzt (ging IIRC im TL auch noch nicht).

  9. #9
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    calendar_ical: Hört sich ja nicht so gut an. Da wendest du dich am besten an den Entwickler, das passt jetzt auch nicht mehr hier zu dem Thread. Die Textelemente jetzt erstmal wieder zu entfernen wird über ein MySQL-Tool, (phpMyAdmin, HeidiSQL...) wohl am einfachsten gehen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •