Ergebnis 1 bis 12 von 12

Thema: Dynamisch generierte Inserttags für Events

  1. #1
    Contao-Nutzer
    Registriert seit
    05.01.2014.
    Beiträge
    31

    Standard Dynamisch generierte Inserttags für Events

    Hallo,

    ich habe auf meiner Seite in der Sidebar einen Minikalender der mir die Events anzeigt. In der Hauptspalte befindet sich ein Akkordeon, welches die Informationen zu den Events zeigt.

    Ich möchte nun, dass wenn ich auf einen Event klicke, sich das Akkordeon an der richtigen Stelle öffnet und die Seite zur richtigen Position springt.

    Mein Akkordeon habe ich bereits so angepasst, dass es mit einer ID aufrufbar ist. In meinem cal_mini.html5 konnte ich die href ändern durch den Inserttag {{event_url::*}} wobei ich den * statisch gesetzt habe zum testen. In meinen Event Einstellungen habe ich den richtigen Link eingegeben mit der ID des Akkordeon-Abschnittes. Mein Ziel ist es, diesen Stern dynamisch mit der richtigen Event ID generieren zu lassen und da komme ich nicht mehr weiter.

    Hat da jemand eine Idee wie das zu bewerkstelligen ist? über jede HIlfe wäre ich sehr zufrieden

    Danke

  2. #2
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    bei der Verwendung der Eventliste als Accordion wäre die event-id über
    Code:
    $this->id
    erreichbar.

  3. #3
    Contao-Nutzer
    Registriert seit
    05.01.2014.
    Beiträge
    31

    Standard

    Also verstehe ich dies nun richtig? Kann ich den Inserttag so schreiben?

    {{event_url::<?php $this->id ?>}}

  4. #4
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    fast - da fehlt noch ein echo...
    PHP-Code:
    {{event_url::<?php echo $this->id?>}}
    Geändert von magicsepp (25.01.2014 um 21:18 Uhr)

  5. #5
    Contao-Nutzer
    Registriert seit
    05.01.2014.
    Beiträge
    31

    Standard klappt leider immer noch nicht

    ach ja genau, das echo habe ich vergessen, dies habe ich nun so eingefügt und leider klappt es immer noch nicht. Die links im Kalender linken nun auf die Startseite

    Hier der Code vom cal_mini.htm5

    HTML-Code:
    <a href="#" name="calendar" style="position:relative;top:-80px;"></a>
    <table class="minicalendar" >
    <thead>
      <tr>
        <th class="head previous"><?php if ($this->prevHref): ?><a href="<?php echo $this->prevHref; ?>#calendar" rel="nofollow" title="<?php echo $this->prevTitle; ?>"><?php echo $this->prevLabel; ?></a><?php else: ?>[nbsp]<?php endif; ?></th>
        <th colspan="5" class="head current"><?php echo $this->current; ?></th>
        <th class="head next"><?php if ($this->nextHref): ?><a href="<?php echo $this->nextHref; ?>#calendar" rel="nofollow" title="<?php echo $this->nextTitle; ?>"><?php echo $this->nextLabel; ?></a><?php else: ?>[nbsp]<?php endif; ?></th>
      </tr>
      <tr>
        <?php foreach ($this->days as $i=>$day): ?>
          <th class="label<?php echo $day['class']; ?>"><?php echo utf8_substr($day['name'], 0, $this->substr); ?><span class="invisible"><?php echo utf8_substr($day['name'], $this->substr); ?></span></th>
        <?php endforeach; ?>
      </tr>
    </thead>
    <tbody>
      <?php foreach ($this->weeks as $class=>$week): ?>
        <tr class="<?php echo $class; ?>">
          <?php foreach ($week as $day): ?>
            <?php if ($day['href']): ?>
              <td class="<?php echo $day['class']; ?>"><a href="{{event_url::<?php echo $this->id ?>}}" title="<?php echo $day['title']; ?>"><?php echo $day['label']; ?></a></td>
            <?php else: ?>
              <td class="<?php echo $day['class']; ?>"><?php echo $day['label']; ?></td>
            <?php endif; ?>
          <?php endforeach; ?>
        </tr>
      <?php endforeach; ?>
    </tbody>
    </table>

  6. #6
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    wie schaut den der HTML Source Code vom generierten Link aus?

  7. #7
    Contao-Nutzer
    Registriert seit
    05.01.2014.
    Beiträge
    31

    Standard

    der generierte HTML Code sieht so aus:

    HTML-Code:
    <a href="" title="1 Event(s)">14</a>
    Es wird also nichts als URL übergeben.

    Wenn ich {{event_url::6}} eingebe, gerneriert es den richtigen Link

  8. #8
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    autschen - im mini_cal müsste das
    PHP-Code:
    {{event_url::<?php echo $day['id']; ?>}}
    sein -aber das klappt nur solange nur ein Termin am Tag vorhanden ist.

  9. #9
    Contao-Nutzer
    Registriert seit
    05.01.2014.
    Beiträge
    31

    Standard

    Leider geht es immer noch nicht...

    im calender Template habe ich nun diese Zeile:

    HTML-Code:
    <td class="<?php echo $day['class']; ?>"><a href="{{event_url::<?php echo $day['id']; ?>}}" title="<?php echo $day['title']; ?>"><?php echo $day['label']; ?></a></td>
    Der generierte HTML Code sieht immer noch gleich aus:

    HTML-Code:
    <td class="days active"><a href="" title="1 Event(s)">14</a></td>
    23:00:
    Wenn ich einen alert ausgebe mit <?php echo $day['id']; ?> gibt es mir "undefined" aus sowie auch bei {{event_url::<?php echo $this->id; ?>}}

    Ich habe immer nur ein Event pro Tag, das wäre also kein Problem...
    Geändert von bauralex (25.01.2014 um 23:12 Uhr)

  10. #10
    Contao-Nutzer
    Registriert seit
    05.01.2014.
    Beiträge
    31

    Standard Template Variablen

    So habe nun mal die Template Variablen ausgegeben und folgendes wurde ausgegeben:

    PHP-Code:
    [19] => Array
    (
    [
    label] => 14
    [class] => days active
    [href] => xxx/xxx/kochatelier/kochkurse-fuer-erwachsene.html?day=20140214
    [title] => 1 Event(s)
    [
    events] => Array
    (
    [
    0] => Array
    (
    [
    id] => 5
    [pid] => 2
    [tstamp] => 1390666475
    [title] => Valentinstags-Kochkurs
    [alias] => valentinstags-kochkurs
    [author] => 6
    [addTime] =>
    [
    startTime] => 1392336000
    [endTime] => 1392422399
    [startDate] => 1392336000
    [endDate] => 1392336000
    [location] => xxx Kochatelier
    [teaser] =>
    [
    addImage] =>
    [
    singleSRC] =>
    [
    alt] =>
    [
    size] =>
    [
    imagemargin] =>
    [
    imageUrl] =>
    [
    fullsize] =>
    [
    caption] =>
    [
    floating] => above
    [recurring] =>
    [
    repeatEach] =>
    [
    repeatEnd] => 0
    [recurrences] => 0
    [addEnclosure] =>
    [
    enclosure] =>
    [
    source] => external
    [jumpTo] => 0
    [articleId] => 0
    [url] => http://xxx.ch/xxx/kochatelier/kochkurse-fuer-erwachsene.html?aid=0#acc_0
    [target] =>
    [
    cssClass] =>
    [
    noComments] =>
    [
    published] => 1
    [start] => 1392336000
    [stop] =>
    [
    ser_register] =>
    [
    ser_places] => 0
    [ser_email] =>
    [
    ser_date] => 0
    [ser_groups] =>
    [
    ser_show] =>
    [
    ser_showheadline] =>
    [
    ser_showgroups] =>
    [
    time] =>
    [
    date] => 14.02.2014
    [day] => Freitag
    [month] => Februar
    [parent] => 2
    [link] => Valentinstags-Kochkurs
    [href] =>  http://xxx.ch/xxx/kochatelier/kochkurse-fuer-erwachsene.html?aid=0#acc_0
    [class] =>  upcoming
    [end] => 1392422399
    [details] => 1
    )

    )


    Ich bin ein ziemlicher Anfänger in PHP aber nach testen habe ich bemerkt, dass ich die Values im Array 19 über <?php echo $day['value']; ?> ansprechen kann. Zudem denke ich, dass das darunterliegende Array 0 ein Subarray von 19 ist und ich somit tiefer hinein muss um z.b die [ID] oder die [url]. Stimmt mein Gedankengang so in etwa?

    Leider habe ich es noch nicht fertig gebracht die Values vom Array 0 auszugeben, bin aber auch schon ziemlich müde um noch erfolgreich Google zu nutzen. Wäre also froh wenn du mir helfen könntest magicsepp...

    Danke

  11. #11
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    versuch bitte mal ob das geht...
    {{event_url::<?php echo $day['events']['0']['id']; ?>}}
    bzw. der Link ist da ja schon
    per
    PHP-Code:
    <a href="<?php echo $day['href']; ?> ...
    das spart den umweg über den inserttag
    Geändert von magicsepp (26.01.2014 um 11:25 Uhr)

  12. #12
    Contao-Nutzer
    Registriert seit
    05.01.2014.
    Beiträge
    31

    Standard Danke !!

    Super Danke viel mals mit diesem Tag hat es geklappt:

    HTML-Code:
    {{event_url::<?php echo $day['events']['0']['id']; ?>}}
    Ich fasse nochmals alles zusammen wie ich es erstellt habe für die Nachwelt

    Was ich gemacht habe sieht so aus:
    Bildschirmfoto 2014-01-26 um 15.10.32.png

    Ich habe die Kalendereinträge so verlinkt, dass es direkt an die richtige Position beim Akkordeon springt und das richtige Akk-Element auch öffnet.

    Im cal_mini.html5 habe ich folgende Veränderungen durchgeführt:

    HTML-Code:
    <td class="<?php echo $day['class']; ?>"><a href="<?php echo $day['href']; ?>}}" title="<?php echo $day['title']; ?>"><?php echo $day['label']; ?></a></td>
    zu:

    HTML-Code:
    <td class="<?php echo $day['class']; ?>"><a href="{{event_url::<?php echo $day['events']['0']['id']; ?>}}" title="<?php echo $day['title']; ?>"><?php echo $day['label']; ?></a></td>
    Das Akkorden (moo_accordion.html5) habe ich abgeändert, sodass es von Beginn an immer geschlossen ist und zudem über einen Hilfsparameter die einzelnen Element aufgerufen werden können:

    Ganz am Beginn des Files folgende Zeilen eingefügt:
    PHP-Code:
    <?php
    $aid 
    '-1'// default all closed
    //$aid = '0'; // default first open
    if ( is_numeric($this->Input->get('aid')) ) 
    {
      
    $aid=(int)$this->Input->get('aid');
    }
    ?>
    Zudem noch folgende Zeile nach: new FX.Accordion

    HTML-Code:
    display: <?php echo $aid; ?>,

    Im ce_accordion.html5 habe ich den Anker für das jeweilige Element gleich unter dem section Tag definiert:

    HTML-Code:
    <a href="" name="<?php echo substr($this->class,-5); ?>" class="<?php echo $this->class; ?>"></a>
    Ich habe dann jedem Akkordeonelement eine Klasse gegeben: acc_x

    Da es mir als Klasse "ce_accordion acc_x" ausgegeben hat und ich nur acc_x brauchte, habe ich den substring verwendet.

    Nun kann ich die einzelnen Element mit ?aid=x#acc_x aufrufen. Damit dies auch über den Kalender funktioniert, muss ich nun den einzelnen Events ein externe Weiterleitung übergeben zu der Seite, wo sich das Akkordeon und Kalender befindet mit den entsprechenen Parametern am Schlus. Bsp: xxx.ch/kochatelier.html?aid=4#acc_4

    Besten Dank an MagicSepp für die Unterstützung

    ps. Ich weiss das ganze ist nicht perfekt gelöst, aber für den Anfang reicht es mir und falls jemand Verbesserungsvorschläge hat, wie das ganze noch dynamischer Umgesetzt werden kann, bin ich sehr froh darüber.

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
  •