Ankündigung

Einklappen
Keine Ankündigung bisher.

Brainstorming zu verschachtelten Listen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Ok ist gelöst!

    War außerhalb der foreach-Schleife und Filter Value = "id" und addFilter hatte in der Vorlage auch gefehlt...

    Hier der funktionierende Code, falls es jemand mal benötigt...


    PHP-Code:
    <?php if(!$this->empty): ?>
            <?php foreach($this->entries as $entry): ?>
            
                                <?php
                        
    // CC objekt erstellen
                        
    $objChildCC = \PCT\CustomElements\Plugins\CustomCatalog\Core\CustomCatalogFactory::findByTableName('cc_reiseinfo_details');
                        
    // ausgabetemplate setzen, wenn nicht default
                        
    $objChildCC->setLayoutTemplate('customcatalog_layout_reiseinfo_detail');
                        
    ?>

                        <?php foreach($entry->get('fields') as $field): ?>
                                <h2 class="icon-warehouse current" href="teilnehmerinformation.html"><?php echo $field->value(); ?></h2>
                        
                            <?php endforeach; ?>
                            <?php // einen einfachen filter erstellen für das Feld PID
                
    $objChildFilter = new \PCT\CustomElements\Filters\SimpleFilter();
                            
    $options = array
                            (
                                
    'column'       => 'pid',
                                
    'operation'    => '=',
                                
    'value'        => $entry->id,
                            );
                            
                            
    $objChildFilter->setOptions($options);
                            
                            
    $objChildCC->addFilter($objChildFilter);
                
                
    // den CC rendern, durchläuft das oben gesetzte Template, wo dann auch wieder die Template-Variablen greifen.
                
    echo $entry->id;
                echo 
    $objChildCC->render();
                
                
    ?>
                        <?php endforeach; ?>
            
            
             <?php

    Kommentar


    • #32
      Das sieht doch schick aus
      http://www.premium-contao-themes.com

      Kommentar


      • #33
        Kleine Ergänzung noch zu diesem Thema.
        Die
        PHP-Code:
        $objChildCC->setLayoutTemplate('custom_template'); 
        Anweisung wirkt sich auf alle Listen aus, die auf derselben Seite integriert sind.

        Ich habe nun am Ende des Templates die Variable auf das darauf folgende Template anpassen müssen.
        Kann die Variable von vorne herein nur für diese eine Liste gesetzt werden?

        Kommentar


        • #34
          Zitat von eblick Beitrag anzeigen
          Kleine Ergänzung noch zu diesem Thema.
          Die
          PHP-Code:
          $objChildCC->setLayoutTemplate('custom_template'); 
          Anweisung wirkt sich auf alle Listen aus, die auf derselben Seite integriert sind.

          Ich habe nun am Ende des Templates die Variable auf das darauf folgende Template anpassen müssen.
          Kann die Variable von vorne herein nur für diese eine Liste gesetzt werden?

          Ist objekt bezogen, kommt aber auch dem Cache und wenn vorab bereits ein gleichnamiger CC gecached wurde, sind ggf. seine Settings noch aktiv.
          Möchte man ein rohes CC objekt haben, sollte man ein ->reset() durchführen

          PHP-Code:
          $objChildCC = \PCT\CustomElements\Plugins\CustomCatalog\Core\CustomCatalogFactory::findByTableName('cc_reiseinfo_details');
          // liefert aus dem cache, ggf. mit vorherigen settings
          $objChildCC->reset(); // leer alle vorab gesetzten settings, macht object komplett autark
          $objChildCC->setLayoutTemplate('custom_template'); 
          Alternative ist das Objekt resetted holen:
          $objChildCC = \PCT\CustomElements\Plugins\CustomCatalog\Core\Cus tomCatalogFactory::findByTableName('cc_reiseinfo_d etails',array(),true);

          Hier ruhig die Parameter der Funktionen einmal genauer anschauen. Das sind hilfreiche Sachen bei.
          Zuletzt geändert von Tim; 18.03.2016, 07:35.
          http://www.premium-contao-themes.com

          Kommentar


          • #35
            Ich habe eine ähnliche Situation wie in den oben erwähnten Beispielen, also zwei CC:

            A) cc_reisen
            B) cc_reisetermine (Kind von A)

            Die Ausgabe der entsprechenden Liste der Kindtabelle im Leser der Elterntabelle klappt gut.
            Jetzt will ich aber auf einer anderen Seite (eine Gesamt-Terminübersicht) sämtliche Kindtabellen auflisten und auf die Detailseite des jeweiligen verwandten Datensatzes der Elterntabelle verlinken.
            Möglich dass ich hier im Forum was übersehen habe, komme aber leider nicht drauf, wie im Listen-template der Kindtabelle auf dieser Übersichtsseite der link dazu gebaut sein müsste.




            Kommentar


            • #36
              Du willst von einem Kind auf die Elterndetailseite? Also, andersherum als es normal ist.

              Die ID des Eltern-Datensatzes ist die PID im Kinddatensatz. Damit kannst du den Link direkt setzen oder du holst dir vorher noch den Alias auf dem Elterndatensatz. Dann kannst du auch mit dem Alias den Link bauen. CC versteht beides im Leser.
              http://www.premium-contao-themes.com

              Kommentar


              • #37
                ... dann versteht der CC mehr als ich ;-)
                ​sorry, aber ich glaube, da brauche ich ein konkretes Code-Beispiel.

                Kommentar


                • #38
                  Zitat von Zero Beitrag anzeigen
                  ... dann versteht der CC mehr als ich ;-)
                  ​sorry, aber ich glaube, da brauche ich ein konkretes Code-Beispiel.
                  Da gibts ja bereits einiges hier im Forum zu.

                  Hier ein Auszug aus der CC Leser oder Liste Klasse, die quasi das gleiche macht -> direkt einen Eintrag finden per ID bzw. PID

                  PHP-Code:
                  $objParentCC = \CustomCatalog::findByTableName('MEINE_TABELLE');
                  $objParentEntry $objParentCC->findPublishedItemByIdOrAlias('ID-DES-ZUFINDENEN-EINTRAGS');

                  echo 
                  $objParentEntry->id
                  Kind-Listen gibt dir die CC Liste ohne Anpassungen aus. Du musst aber rückwärts denken, da du vom Kind auf den Eltern-Eintrag schauen willst.
                  http://www.premium-contao-themes.com

                  Kommentar

                  Lädt...
                  X