Referenz aus Katalog mit Taxonomiewerten

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • emko
    Contao-Nutzer
    • 13.02.2012
    • 5

    #1

    Referenz aus Katalog mit Taxonomiewerten

    Hallo,
    ich habe ein ganz einfaches Setup, einen Katalog mit Kontaktpersonen und einen Katalog mit Firmen.
    Bei den Personen wählt man die Firma als Auswahl aus dem Firmenkatalog, im Firmenkatalog sind neben Eingabefeldern wie Namen und Webseite vor allem Tags aus einer Taxonomie, wie zb. Status (Partner, Angebot, Kunde) oder Typ (Händler, Produzent, ...).
    Die Referenzierung über das Referenzmodul funktioniert auch ohne Probleme. Über die anderen Module komme ich nur an die direkten Eingabefelder des Firmenkatalogs, bei den Werten aus der Taxonomie wird dagegen anscheinend der raw-Wert ausgegeben.
    PHP-Code:
     [firma] => Array
                            (
                                [label] => Firma
                                [type] => select
                                [raw] => 9
                                [value] => Rainbow Islands
                                [ref] => Array
                                    (
                                        [1] => Array
                                            (
                                                [id] => 9
                                                [pid] => 3
                                                [sorting] => 8
                                                [tstamp] => 1329215904
                                                [firmenname] => Rainbow Islands
                                                [bereich] => 8,10
                                                [status] => 2
                                                [webseite] => bubblebobble.island
                                                [land] => 15
                                                [info] => 
                                                [parentJumpTo] => 0
                                                [parentLink] => View the item details
                                                [parentUrl] => kontakte-reader/items/9
                                            )
    
                                    )
    
                            ) 
    
    Ich blick leider nicht durch (trotz Durchsicht der bisherigen Beiträge dazu..) ob ich auf diese Werte (also [bereich], [status]) wirklich nur über das Referenzmodul Zugriff habe. Was ich als Template machen wollte: eine Liste mit den Kontakten, bei der die Firma und die tags der Firma gezeigt werden.

    Vielen Dank für einen Tip, wo's bei mir hängt..
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo emko,
    hier ist ein Beispiel wie das im Template machbar ist: http://de.contaowiki.org/Catalog_Tem..._referenzieren

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

    Kommentar

    • emko
      Contao-Nutzer
      • 13.02.2012
      • 5

      #3
      Danke für die schnelle Antwort! Also, soweit is mir eben auch klar:
      PHP-Code:
      <?php foreach ($data['ref'] as $id=>$ref): ?>
                      <?php echo $ref['firmenname'] ?>
                      <?php echo $ref['bereich'] ?>
                      <?php echo $ref['status'] ?>
            <?php echo $ref['webseite'] ?>
                      <?php echo $ref['land'] ?>
      <?php endforeach; ?>
      Als Ausgabe, bekomme ich dann halt die Werte wie oben in dem Array, also für die Tags aus der Taxonomie (bereich, status, land) nur die raw-Werte. Wo ich nicht weiter komme, ist, ob/wie ich statt den raw-Werten, hier die value-Werte direkt anzeigen lassen kann.

      Kommentar

      • MacKP
        Contao-Yoda
        • 15.06.2009
        • 13315

        #4
        Ach, an der Stelle. Entweder eigene Erweiterung, die diese Verknüpfung ausgibt oder per DB Abfrage. Ich meine das wurde schon öfter hier gesagt. Eventuell mal die Suche bemühen?

        Viele Grüße
        Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
        [Arbeitet bei -> Paus Design & Medien]
        "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

        Kommentar

        • emko
          Contao-Nutzer
          • 13.02.2012
          • 5

          #5
          hallo MacKP
          naja, nachdem ich dann wusste, nach was ich suchen sollte, hab ich's schon gefunden..
          also danke für den hinweis!

          hab's jetzt mit db abfrage gemacht und falls andere nicht-cracks wie ich hier landen, es hat dann so funktioniert:
          PHP-Code:
          <?php if (count($this->entries)): ?>
          
          <table class="layout_simpletable" summary="Catalog Items" cellspacing="0" cellpadding="0">
          <thead class="header">
          <tr>
          <?php list($field, $heading) = each($this->entries); ?>
          <?php foreach ($heading['data'] as $field=>$data): ?>
          <?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
          <th class="field <?php echo $field; ?>"><?php echo $data['label']; ?></th>
          <?php endif; ?>
          <?php endforeach; ?>
          <!--eigene Header aus Firmenliste-->
          <th class="field bereich">Bereich</th>
          <th class="field status">Status</th>
          <th class="field land">Land</th>
          <th class="field webseite">Web</th>
          <!--eigene Header aus Firmenliste-->
          </tr>
          </thead>
          <tbody class="body<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>">
          <?php foreach ($this->entries as $entry): ?>
          <tr class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>">
          <?php foreach ($entry['data'] as $field=>$data): ?>
          <?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
              <td class="field <?php echo $field; ?>">
              <?php if (strlen($data['value'])): ?><?php echo $data['value']; ?><?php endif; ?>
              </td>
          <?php endif; ?>
          
          <!-- Eigene Abfrage-->
                  <?php if (array_key_exists('ref', $data)): ?>
                  <?php foreach ($data['ref'] as $ref): ?> 
                      <td class="field bereich">
                          <?php $this->import('Database'); 
                            $objData = $this->Database->prepare("SELECT name FROM tl_taxonomy WHERE id=?")->execute($ref['bereich']); 
                            echo $objData->name; ?>
                        </td>
                      <td class="field status">
                          <?php $this->import('Database'); 
                            $objData = $this->Database->prepare("SELECT name FROM tl_taxonomy WHERE id=?")->execute($ref['status']); 
                            echo $objData->name; ?>
                        </td>
                        <td class="field land">
                          <?php $this->import('Database'); 
                            $objData = $this->Database->prepare("SELECT name FROM tl_taxonomy WHERE id=?")->execute($ref['land']); 
                            echo $objData->name; ?>
                        </td>
                      <td class="field web"> 
                      <?php echo $ref['webseite']; ?>
                      </td> 
                  <?php endforeach; ?>
                  <?php endif; ?>
          <!-- Eigene Abfrage-->
          
          <?php endforeach; ?>

          Kommentar

          • MacKP
            Contao-Yoda
            • 15.06.2009
            • 13315

            #6
            Hallo emko,
            super das du das hier teilst :-)

            Würdest du das auch noch in verkürzter Form ins Wiki bringen?
            Viele tun sich schwer die DB mit Contao mitteln direkt anzusprechen.. würde denen enorm helfen (vor allem geht das im Wiki nicht so schnell unter wie hier im Forum)

            Viele Grüße
            Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
            [Arbeitet bei -> Paus Design & Medien]
            "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

            Kommentar

            • emko
              Contao-Nutzer
              • 13.02.2012
              • 5

              #7
              hab's mal probiert...

              zu lang?

              Kommentar

              • MacKP
                Contao-Yoda
                • 15.06.2009
                • 13315

                #8
                Och, kürzen kann man immer noch ;-)
                Sauber, vielen Dank!

                Viele Grüße
                Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
                [Arbeitet bei -> Paus Design & Medien]
                "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

                Kommentar

                Lädt...