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, 08: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


                  • #39
                    Guten Morgen zusammen,

                    ich habe erstmal gerade nur eine Verständnisfrage zu dieser Thematik. Wenn ich das richtig verstanden habe sollte das nach Tims Tutorial funktionieren. Wäre cool wenn ihr das fix bestätigt und ich nicht zeit verbrenne in unzähligen Versuchen

                    Ich baue ein Immo-Portal und habe zwei Konfigurationen angelegt. Eltern-Konfig A (Objekte), also Mehrfamilienhaus an der Siemensstraße. Dann gibt es Kind-Konfig B (Wohneinheiten im Haus an der Siemensstraße). Das klappt nach dem Tutorial super im Backend. Also sehe die Objekte und mit klick auf den Stift sehe ich die Wohneinheiten mit seinen Details.

                    Jetzt möchte ich auf der Homepage aber auch so navigieren können. Liste Objekte … Bei Klick soll Liste Wohneinheiten … Bei Klick sollen Details der einen Wohneinheit.
                    Bisher komme ich noch nicht von der Liste Objekte zu Liste Wohneinheiten. Von Liste Wohneinheiten zu Detials Wohneinheiten geht.

                    Denke ich richtig und ist das überhaupt lösbar? Danke für ein kurzes Feedback!

                    Kommentar


                    • #40
                      Zitat von 2pmagentur Beitrag anzeigen
                      Guten Morgen zusammen,

                      ich habe erstmal gerade nur eine Verständnisfrage zu dieser Thematik. Wenn ich das richtig verstanden habe sollte das nach Tims Tutorial funktionieren. Wäre cool wenn ihr das fix bestätigt und ich nicht zeit verbrenne in unzähligen Versuchen

                      Ich baue ein Immo-Portal und habe zwei Konfigurationen angelegt. Eltern-Konfig A (Objekte), also Mehrfamilienhaus an der Siemensstraße. Dann gibt es Kind-Konfig B (Wohneinheiten im Haus an der Siemensstraße). Das klappt nach dem Tutorial super im Backend. Also sehe die Objekte und mit klick auf den Stift sehe ich die Wohneinheiten mit seinen Details.

                      Jetzt möchte ich auf der Homepage aber auch so navigieren können. Liste Objekte … Bei Klick soll Liste Wohneinheiten … Bei Klick sollen Details der einen Wohneinheit.
                      Bisher komme ich noch nicht von der Liste Objekte zu Liste Wohneinheiten. Von Liste Wohneinheiten zu Detials Wohneinheiten geht.

                      Denke ich richtig und ist das überhaupt lösbar? Danke für ein kurzes Feedback!
                      Deine Anforderung ist mit Bordmitteln direkt lösbar, ohne diese Template-Anpassung. Sobald eine CC Liste eine Kindtabelle im Backend hat, wird ein zusätzlicher Weiterlesen Button generiert auf die Weiterleitungsseite. Auf dieser kann dann eine CC Liste für die Kindtabelle liegen und es werden nur die Kind-Einträge des geklickten Eltern-Eintrags ausgegeben.

                      ---
                      Die Anpassungen hier sind für Eltern und Kind in ein und der selben Liste.

                      http://www.premium-contao-themes.com

                      Kommentar


                      • #41
                        Leider nein … also standardmäßig auf jedenfall nicht
                        Im Anhang findest du die Seitensturktur sowie die Inhalte der beiden Module.

                        Die Temmplates sehen wie folgt aus … kannst du sehen, warum das nicht klappt?

                        Das Template für die Objekte
                        HTML-Code:
                        <?php if(!$this->empty): ?>
                        <div class="entries">
                        <?php foreach($this->entries as $entry): ?>
                        <div class="block <?= $entry->class; ?> <?php if($entry->field('top_object')->value()): ?> cc_immorealty top_object<?php endif; ?>" <?php echo $this->cssID; ?>>
                        
                        <div class="cc_immorealty_inside">
                        
                        <div class="cc_immorealty_top">
                        <?php if($entry->field('top_object')->value()): ?> <i class="top_object_icon fa fa-star"></i><?php endif; ?>
                        <h4><a href="<?php echo $entry->links('detail')->url; ?>"><?php echo $entry->field('name')->value(); ?></a></h4>
                        <div class="place"><?php echo $entry->field('plz')->value(); ?> <?php echo $entry->field('ort')->value(); ?></div>
                        </div>
                        
                        <div class="cc_immorealty_middle">
                        <a href="<?php echo $entry->links('detail')->url; ?>"><?php echo $entry->field('einzelfoto')->html(); ?></a>
                        <ul class="property-meta">
                        <li><i class="fa fa-calendar"></i><?php echo $entry->field('baujahr')->value(); ?></li>
                        <li><i class="fa fa-th-large"></i><?php echo $entry->field('wohneinheiten')->value(); ?> WE</li>
                        </ul>
                        </div>
                        
                        <div class="cc_immorealty_bottom">
                        <?php if($entry->field('preis')->value() > 0): ?>
                        <div class="price">ab &euro; <?php echo $entry->field('preis')->value(); ?></div>
                        <?php endif; ?>
                        </div>
                        
                        </div>
                        
                        </div>
                        <?php endforeach; ?>
                        </div>
                        
                        <?php else: ?>
                        <p class="info empty">Keine Objekte gefunden</p>
                        <?php endif;?>
                        Das Template für die Wohneinheiten
                        HTML-Code:
                        <?php if(!$this->empty): ?>
                        <div class="entries">
                        <?php foreach($this->entries as $entry): ?>
                        <div class="block <?= $entry->class; ?> <?php if($entry->field('top_object')->value()): ?> cc_immorealty top_object<?php endif; ?>" <?php echo $this->cssID; ?>>
                        
                        <div class="cc_immorealty_inside">
                        
                        <div class="cc_immorealty_top">
                        <h4><a href="<?php echo $entry->links('detail')->url; ?>"><?php echo $entry->field('name')->value(); ?></a></h4>
                        </div>
                        
                        </div>
                        
                        </div>
                        <?php endforeach; ?>
                        </div>
                        
                        <?php else: ?>
                        <p class="info empty">Keine Objekte gefunden</p>
                        <?php endif;?>

                        Die Testumgebung siehst du auf https://2023.octopus-immo.de

                        Kommentar


                        • #42
                          Leider nein … also standardmäßig auf jedenfall nicht
                          Du hast keine Standard-Templates im Einsatz. Auch die CC-Demos sind individualisiert und diese Templates nicht direkt für Eltern-Kind-Tabellen konzipiert.
                          Ich würde empfehlen einmal mit den customcatalog_default Templates die Liste anzuschauen. Du gibst in den Einträgen nur die direkten Detailseiten aus, nicht den Link zu weiteren Kind-Tabellen

                          Die Eltern-Liste sollte alle Buttons ausgeben: (siehe _default Template)

                          customcatalog_default, Weiterlesen Button(s) (wird aufgestockt, je Kind-Tabelle)

                          <?php if($entry->get('more')): ?>
                          <p class="more"><?php echo $entry->get('more'); ?></p>
                          <?php endif; ?>
                          ---

                          Damit wird je Kind-Tabelle ein "Einträge ansehen" Link gebildet mit Ziel auf die Weiterleitungsseite in den Eltern-Liste-Modul-Einstellungen.

                          Anbei ein Screenshot aus der CC-Konfig (CC-Test ist quasi Eltern-Tabelle und CC-Kind die Kindtabelle darin)


                          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: screenshot_1372.jpg Ansichten: 0 Größe: 62,7 KB ID: 28158
                          Angehängte Dateien
                          Zuletzt geändert von Tim; 07.11.2023, 11:39.
                          http://www.premium-contao-themes.com

                          Kommentar


                          • #43
                            Du bist einfach ein Gott Ich danke dir!

                            Kommentar


                            • #44
                              Zitat von 2pmagentur Beitrag anzeigen
                              Du bist einfach ein Gott Ich danke dir!
                              Hat geklappt, würde ich sagen Nice.
                              http://www.premium-contao-themes.com

                              Kommentar


                              • #45
                                Bekomme ich die URL schöner hin? woraus generiert er sich die ?
                                https://2023.octopus-immo.de/objekt/...werbepark.html

                                Kommentar

                                Lädt...
                                X