Ergebnis 1 bis 37 von 37

Thema: 2 Kataloge referenzieren - GELÖST

  1. #1
    Contao-Fan Avatar von okapi
    Registriert seit
    03.09.2009.
    Ort
    Wien
    Beiträge
    251

    Standard 2 Kataloge referenzieren - GELÖST

    Hallo,
    da ich mit der Referenzierung von zwei Katalogen trotz Tutorials nicht klarkomme, bitte ich euch um Hilfe.

    Ich habe 2 Kataloge, einen Katalog mit "Komponisten" und einen mit "Werken".

    Die Felder von "Komponisten" (stark vereinfacht):

    • Name des Komponisten
    • Persönliche Daten des Komponisten


    Die Felder von "Werke" (stark vereinfacht):

    • Titel des Werkes
    • Daten des Werkes
    • Komponist des Werkes


    Was ich erreichen will:
    Wenn ein Komponist ausgewählt wird, sollen sowohl die Felder aus dem Katalog "Komponisten" angezeigt werden, als auch Titel und Daten der Werke, die er geschrieben hat.

    Ich habe zwar mit Hilfe eines Tags-Feldes geschafft, dass die Werke des Komponisten bei der Eingabe aus dem Katalog Werke ausgewählt werden können. Nun kann man das Tag-Feld in Listen- und Leser-Ansicht ausgeben lassen. Was ich aber will, ist die Ausgabe des gesamten Datensatzes eines Werkes, das der Komponist geschrieben hat, nicht bloß eines Feldes.

    Geht sowas mit dem Modul "Katalog Referenz"?
    Wie müssen Referenzfelder aus zwei verschiedenen Katalogen beschaffen sein, dass sie sich referenzieren lassen?
    Oder ist das überhaupt der falsche Weg?

    Ich sitze seit Stunden an dieser wohl recht einfachen Aufgabe, und schaff das nicht.

    Gruß
    Michael
    Geändert von okapi (18.01.2010 um 12:04 Uhr) Grund: Dank toller Hilfe von MacKP gelöst

  2. #2
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo okapi,
    das geht nicht mit Referenz, das ist wieder für etwas anderes.
    Du wirst ein eigenes Template schreiben müssen, damit diese Informationen ausgegeben werden.
    Mittels
    Code:
      <?php print_r($this->entries); ?>
    Kann man schauen was wie zur Verfügung steht...

    Und ohne solche Ausgaben ist es echt kaum möglich zu helfen (am besten innerhalb einer live-Seite).

    Hier mal ein Anfang von einem Setting was so ähnlich war:

    Code:
    <?php if ($data['ref']): ?>
    	<div class="reference">
    
    <?php foreach ($data['ref'] as $id=>$ref): ?>
    		
    		<div class="beschreibung_buch"><?php echo $ref['beschreibung_buch'] ?></div>
    <?php endforeach; ?>
    	</div>
    <?php endif; ?>
    Hoffe das Hilft schon mal weiter.

    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."

  3. #3
    Contao-Fan Avatar von okapi
    Registriert seit
    03.09.2009.
    Ort
    Wien
    Beiträge
    251

    Standard

    Hallo MacKP,

    supernett von dir, dass du so schnell antwortest! Ich muss nächste Woche Bescheid geben, ob ich zu einem Projekt ja sage, wo eine kleine Datenbank übernommen werden muss, und die catalog-Erweiterung ist völlig neu für mich...

    Dass eine Abfrage aus zwei Katalogen mit templates zu verwirklichen ist, ist ein wertvoller Hinweis! Danke!
    Nur fehlt mir das Verständnis für die Syntax der Abfrage:
    Wie verknüpfe ich zwei Kataloge mit den gemeinsamen Feldern "Name des Komponisten" aus Tabelle "Komponisten" und "Name des Komponisten" in der Tabelle "Werke" - und führe dann eine tabellenübergreifende Abfrage durch?

    Das ist etwas Grundlegendes, das sicher auch andere catalog-newbies wie mich interessiert. Ich schreibe gern ein Tutorial dazu, wenn ich's einmal verstanden habe.

    Ich habe eine Live-Testinstallation... Wenn du Zeit hättest einen Blick auf die Kataloge zu werfen...? (PM)

    Gruß
    Michael
    Geändert von okapi (17.01.2010 um 17:00 Uhr)

  4. #4
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Versuchen wir es erst mal schnell hier.
    Das ist an sich erst mal nicht so schwierig. Das schwierigste ist eigentlich wie immer beim catalog das Template dann später.

    Die Felder von "Komponisten" (stark vereinfacht):
    * Name des Komponisten
    * Persönliche Daten des Komponisten
    Feld um Werke auszuwählen

    Die Felder von "Werke" (stark vereinfacht):
    * Titel des Werkes
    * Daten des Werkes
    * Komponist des Werkes

    DAs Feld um die Werke auszuwählen sollte bei dir ein Feld vom Typ 'Tag' sein (das ist dann ne Mehrfachauswahl, sonst würde auch Select gehen bei einer einzigen Möglichkeit).
    Bei Tag wählst du dann als Tabelle die Tabelle aus, die du bei Werke angelegt hast.
    Dort dann den Namen als Spalte.
    Das sollte es im groben schon gewesen sein.

    Mach das erst einmal und dann können wir weiter schauen, falls du dann noch Hilfe benötigst.

    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."

  5. #5
    Contao-Fan Avatar von okapi
    Registriert seit
    03.09.2009.
    Ort
    Wien
    Beiträge
    251

    Standard

    Vielen Dank für die Hilfe, MacKP!
    Die von dir vorgeschlagenen Struktur hatte ich schon angelegt, und die Abfrage ergab auch in der List- und Readeransicht die zum jeweiligen Komponisten gehörenden Werke.
    Allerdings möchte ich, dass die kompletten Datensätze der jeweiligen Werke ausgegeben werden, und nicht nur ein Feld davon.

    Gruß
    Michael
    Angehängte Grafiken Angehängte Grafiken

  6. #6
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ok, das ist schon mal gut.
    Dann bearbeite mal das Template und gib da das hier ein -> <?php print_r($this->entries); ?>

    Damit können wir sehen was alles zur Verfügung steht. Und das können wir dann auch bearbeiten.

    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."

  7. #7
    Contao-Fan Avatar von okapi
    Registriert seit
    03.09.2009.
    Ort
    Wien
    Beiträge
    251

    Standard

    Guten Morgen, und nochmals danke für deine Hilfe,

    ich habe jetzt nach deinen Anweisungen catalog_simple.tpl bearbeitet, indem ich
    PHP-Code:
    <?php print_r($this->entries); ?>
    hineingeschrieben habe. Wenn ich nun im Frontend einen Komponisten filtere, erhalte ich folgende, alchimistisch anmutende
    Frontend-Ausgabe:

    Array ( [0] => Array ( [id] => 4 [catalog_name] => Catalog Komponisten [parentJumpTo] => 0 [tablename] => cat_komponisten [class] => first last even [link] => View the item details [url] => katalog-reader/items/kummer-harald.html [data] => Array ( [name] => Array ( [label] => Name [type] => text [raw] => Kummer Harald [value] => Kummer Harald ) [wohnort] => Array ( [label] => Wohnort [type] => text [raw] => Wien [value] => Wien ) [hauptinstrument] => Array ( [label] => Hauptinstrument [type] => text [raw] => Gitarre [value] => Gitarre ) [tag_werke] => Array ( [label] => Werke [type] => tags [raw] => 8,4,1 [value] => Kurzes Stück für Gitarre, Nachtlied, Lied der Nachtigal [ref] => Array ( [1] => Array ( [id] => 8 [pid] => 1 [sorting] => 256 [tstamp] => 1263785626 [titel] => Kurzes Stück für Gitarre [alias] => kurzes-stueck-fuer-gitarre [instrument] => Gitarre [komponist] => Harald Kummer [sammelmappe] => 4 [parentJumpTo] => 29 [parentLink] => View the item details [parentUrl] => katalog-reader/items/kurzes-stueck-fuer-gitarre.html ) [3] => Array ( [id] => 4 [pid] => 1 [sorting] => 768 [tstamp] => 1263722108 [titel] => Nachtlied [alias] => nachtlied [instrument] => Gitarre [komponist] => Harald Kummer [sammelmappe] => 5 [parentJumpTo] => 29 [parentLink] => View the item details [parentUrl] => katalog-reader/items/nachtlied.html ) [5] => Array ( [id] => 1 [pid] => 1 [sorting] => 1152 [tstamp] => 1263722094 [titel] => Lied der Nachtigal [alias] => lied-der-nachtigal [instrument] => Oboe [komponist] => Harald Kummer [sammelmappe] => 3 [parentJumpTo] => 29 [parentLink] => View the item details [parentUrl] => katalog-reader/items/lied-der-nachtigal.html ) ) ) ) ) )

    Hier sehe ich jetzt auch die Details der Datensätze aus der Tabelle "Werke"... aber wie können sie angezeigt werden?

    Gruß
    Michael

  8. #8
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo okapi,
    dann schauen wir mal weiter.
    Ich seh auf deiner Seite irgendwie nur die Liste oder?
    Wenn ich auf 'Item Details' klicke seh ich da nix.

    Der Catalog an sich ist so aufgebaut, wie alle Module in TL. Zum Beispiel News. Erst die Liste und dann der Reader. Kannst du schön in der Online Demo sehen oder in deiner Testinstall. Wichtig ist immer die Weiterleitungsseite.

    Wäre besser, wenn du das in nen Leser einbaust mit catalog_full.tpl.
    Das kannst du dann schön bearbeiten.

    Zum Erstellen von einem Eigenen Template:

    1.
    Code:
      <?php print_r($this->entries); ?>
    Das kann man sich dann am besten im Quelltext anschauen, dann ist das sortierter. Oder mit <pre> umgeben, dann hat man es auf dem Bildschirm genau so.

    2.
    Innerhalb der foreach:
    Code:
    <?php foreach ($this->entries as $entry):
    geht es nun weiter:

    Ich mache mir in der Regel imer ein ganz individuelles Template in dem ich auch alle Einträge Einzeln ausgeben lasse:

    Code:
    <?php if($entry['data']['immo_swimmingpool']['value']):?>
       <?php echo $entry['data']['immo_swimmingpool']['value']; ?>
     <?php else: ?>-
    <?php endif;?>
    D.h. wenn ne Angabe für Swimmingpool da ist soll der die Ausgeben, wenn nicht nur nen Strich machen.
    Für dein Beispiel wäre das dann:
    Code:
    <?php if($entry['data']['name']['value']):?>
       <?php echo $entry['data']['name']['value']; ?>
       <?php else: ?>-
    <?php endif;?>
    So etwas dann zum Beispiel für den Namen.
    So gebe ich mir nach und nach an der Passenden Stelle das aus was ich haben möchte.

    3. Nun kommen wir zu dem 2. catalog der im 1. catalog drinn ist:

    Um da an alle Werte genau so einfach zu kommen wie beim 1. muss man das ganze erst einmal wieder in ein foreach packen:

    Code:
    <?php if ($data['ref']): ?>
    	<div class="reference">
                 <?php foreach ($data['ref'] as $id=>$ref): ?>
    		  <div class="beschreibung_buch"><?php echo $ref['beschreibung_buch'] ?></div>
                      </div>
                 <?php endforeach; ?>
              </div>
    <?php endif; ?>
    Hier jetzt aus einem anderen Catalog von mir. Da ist alles in dem Array 'ref' drinn. und das Array schnapp ich mir und gebe das in die Variable $ref. Dadruch komme ich dannn an die Werte.

    Für deinen Fall geht das dann genau so:
    Code:
    <?php if ($data['ref']): ?>
    	<div class="werke">
                <?php foreach ($data['ref'] as $id=>$werke): ?>
    		<div class="titel"><?php echo $werke['titel'] ?></div>
                    <div class="instrument"><?php echo $werke['instrument'] ?></div>
                <?php endforeach; ?>
            </div>
    <?php endif; ?>
    Und so weiter....

    So für mehr habe ich gerade keine Zeit.
    Probier das mal aus und gib Bescheid wie es geklappt hat.

    Viele Grüße
    Geändert von MacKP (18.01.2010 um 08:16 Uhr)
    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."

  9. #9
    Contao-Fan Avatar von okapi
    Registriert seit
    03.09.2009.
    Ort
    Wien
    Beiträge
    251

    Standard

    Ein super Lehrstück! Vielen Dank! Jetzt werden die Dinge endlich klarer für mich.
    Die selbst erstellten Abfragen aus dem ersten Katalog funtionieren schon mal wunderbar,
    die aus den zweiten Katalog krieg ich allerdings noch nicht hin.

    Wenn ich diesen Code einfüge:
    PHP-Code:
    <?php if ($data['ref']): ?>
        <div class="werke">
                <?php foreach ($data['ref'] as $id=>$werke): ?>
            <div class="titel"><?php echo $werke['titel'?></div>
                    <div class="instrument"><?php echo $werke['instrument'?></div>
                <?php endforeach; ?>
            </div>
    <?php endif; ?>
    wird nichts ausgegeben. Fehlt da noch irgendwas?
    Was ist die Variable $werke? Ist das der Tabellenname? Dann müsste ich das in $cat_werke ändern.
    Das ergibt aber trotzdem keine Ausgabe.

    Gruß
    Michael
    Geändert von okapi (18.01.2010 um 09:31 Uhr)

  10. #10
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo okapi,
    $werke wird selbst erstellt in dem foreach. Hat also erst mal nix zu tun mit dem Tabellennamen.

    Diese ganze foreach muss natürlich in die 1. foreach rein (falls du das unten drunter gemacht hast).

    Wäre nicht schlecht wenn du mal dein bisheriges Template pasten könntest.

    Wenns immer noch nicht klappt muss ich noch mal in mich gehen und überlegen ;-)

    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."

  11. #11
    Contao-Fan Avatar von okapi
    Registriert seit
    03.09.2009.
    Ort
    Wien
    Beiträge
    251

    Standard

    Wow... es hat endlich geklappt!
    Die Abfrage für den 2. Katalog muss auch noch "verpackt" werden, dann klappt es:

    PHP-Code:
    <?php if (count($this->entries)): ?>
    <?php 
    foreach ($this->entries as $entry): ?>

    <?php if ($data['ref']): ?>
        <div class="cat_werke">
                <?php foreach ($data['ref'] as $id=>$cat_werke): ?>
            <div class="titel"><?php echo $cat_werke['titel'?></div>
                    <div class="instrument"><?php echo $cat_werke['instrument'?></div>
                <?php endforeach; ?>
            </div>
    <?php endif; ?>

    <?php endforeach; ?>
    <?php 
    endif; ?>
    Herzlichen Dank für deine so ausführliche Hilfe! Du hast meinen Tag gerettet!

    Viele Grüße
    Michael

  12. #12
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo okapi,
    na, so ist das doch wunderbar.

    Hoffe das hilft dir und anderen für die Zukunft mehr als wenn ich das mal eben schnell bei dir gemacht hätte ;-)

    Jetzt noch zu einem kleinen Nachteil vom catalog:
    Man kann leider nicht mehr zurück verlinken von dem 2. auf den 1. catalog.
    Der Grund ist einfach aber fatal: man könnte sich damit ganz schnell ins Knie schießen in dem man eine Endlosschleife erhält.
    Das nur im Hinterkopf behalten beim Design des catalogs und der Seitenstruktur etc. ;-)

    Viele Grüße und weiterhin viel spaß mit dem Catalog
    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."

  13. #13
    Contao-Fan Avatar von okapi
    Registriert seit
    03.09.2009.
    Ort
    Wien
    Beiträge
    251

    Standard

    Du hast mir wirklich super geholfen!

    Nur bin ich doch noch zu ungeschickt... hab gerade eine Kleinigkeit verändert und schon geht's nicht mehr

    PHP-Code:
    <?php if (count($this->entries)): ?>

    <div class="layout_simple">
    <?php foreach ($this->entries as $entry): ?>

    +++ Komponisten-Abfragen start +++
    <br/><br/>
    <?php if($entry['data']['name']['value']):?><?php echo $entry['data']['name']['value']; ?><?php else: ?>-<?php endif;?>
    <br/><br/>
    <?php if($entry['data']['wohnort']['value']):?><?php echo $entry['data']['wohnort']['value']; ?><?php else: ?>-<?php endif;?>
    <br/><br/>
    +++ Komponisten-Abfragen stop +++
    <br/><br/>
    +++ Link zu den Details start +++
    <?php if ($entry['link']): ?>
    <div class="link"><?php echo $entry['link']; ?></div>
    <?php endif; ?>
    +++ Link zu den Details stop +++

    <br/><br/>
    <?php endforeach; ?>
    </div>
     
    <?php else: ?>
    <?php 
    if ($this->condition): ?>
    <div class="condition"><?php echo $this->condition?></div>
    <?php else: ?>
    <p class="info">There are no entries matching your search.</p>
    <?php endif; ?>

    <?php endif; ?>

    +++ Werke-Abfragen start +++

    <?php if (count($this->entries)): ?>
    <?php 
    foreach ($this->entries as $entry): ?>

    <?php if ($data['ref']): ?>
        <div class="werke">
                <?php foreach ($data['ref'] as $id=>$werke): ?>
            <div class="titel"><?php echo $werke['titel'?></div>
                    <div class="instrument"><?php echo $werke['instrument'?></div>
                <?php endforeach; ?>
            </div>
    <?php endif; ?>

    <?php endforeach; ?>
    <?php 
    endif; ?> 

    +++ Werke-Abfragen stop +++
    Wo hab ich jetzt den Fehler reingeknüpft?

    Gruß
    Michael

  14. #14
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ok, das ist noch etwas unsortiert. Die Werke sollten innerhalb des Komponisten abgefragt werden, damit du diese bekommst und nicht einfach irgendwelche:

    PHP-Code:
    <?php if (count($this->entries)): ?>

    <div class="layout_simple">
    <?php foreach ($this->entries as $entry): ?>

    +++ Komponisten-Abfragen start +++
    <br/><br/>
    <?php if($entry['data']['name']['value']):?><?php echo $entry['data']['name']['value']; ?><?php else: ?>-<?php endif;?>
    <br/><br/>
    <?php if($entry['data']['wohnort']['value']):?><?php echo $entry['data']['wohnort']['value']; ?><?php else: ?>-<?php endif;?>
    <br/><br/>
    +++ Komponisten-Abfragen stop +++
    <br/>
    +++ Werke-Abfragen start +++
    <?php if ($data['ref']): ?>
        <div class="werke">
                <?php foreach ($data['ref'] as $id=>$werke): ?>
            <div class="titel"><?php echo $werke['titel']; ?></div>
                    <div class="instrument"><?php echo $werke['instrument']; ?></div>
                <?php endforeach; ?>
            </div>
    <?php endif; ?> 
    +++ Werke-Abfragen stop +++
    <br/>
    +++ Link zu den Details start +++
    <?php if ($entry['link']): ?>
    <div class="link"><?php echo $entry['link']; ?></div>
    <?php endif; ?>
    +++ Link zu den Details stop +++

    <br/><br/>
    <?php endforeach; ?>
    </div>
     
    <?php else: ?>
    <?php 
    if ($this->condition): ?>
    <div class="condition"><?php echo $this->condition?></div>
    <?php else: ?>
    <p class="info">There are no entries matching your search.</p>
    <?php endif; ?>

    <?php endif; ?>
    Hmm eventuell lags an fehlenden ; die ich auch nicht bei einigen Angaben gemacht hatte... hab ich jetzt auch noch hier eingefügt.

    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."

  15. #15
    Contao-Fan Avatar von okapi
    Registriert seit
    03.09.2009.
    Ort
    Wien
    Beiträge
    251

    Standard

    Leider funktioniert die Abfrage für die Werke so noch nicht.
    Jetzt rätsle ich, wie ich das zuvor geschafft habe...

    Ich probier mal weiter.
    EDIT:

    PHP-Code:
    <?php if (count($this->entries)): ?>
    <div class="layout_simple">
    <?php foreach ($this->entries as $entry): ?>


    <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''?>">
    <?php foreach ($entry['data'] as $field=>$data): ?>
    <?php 
    if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
    <div class="field <?php echo $field?>">
        <div class="label"><?php echo $data['label']; ?></div>
        <div class="value"><?php echo $data['value']; ?></div>
    </div>
    <?php endif; ?>
    <?php 
    endforeach; ?>

    <?php if ($entry['link']): ?>
    <div class="link"><?php echo $entry['link']; ?></div>
    <?php endif; ?>
    </div>


    ### Komponisten-Abfragen start ###
    <br/><br/>
    <?php if($entry['data']['name']['value']):?><?php echo $entry['data']['name']['value']; ?><?php else: ?>-<?php endif;?>
    <br/><br/>
    <?php if($entry['data']['wohnort']['value']):?><?php echo $entry['data']['wohnort']['value']; ?><?php else: ?>-<?php endif;?>
    <br/><br/>
    ### Komponisten-Abfragen stop ###
    <br />
    ### Werke-Abfragen start ###
    <?php if ($data['ref']): ?>
        <div class="werke">
                <?php foreach ($data['ref'] as $id=>$werke): ?>
            <div class="titel"><?php echo $werke['titel'?></div>
                    <div class="instrument"><?php echo $werke['instrument'?></div>
                <?php endforeach; ?>
            </div>
    <?php endif; ?>
    ### Werke-Abfragen stop ###

    <?php endforeach; ?>
    </div>
    <?php else: ?>
    <?php 
    if ($this->condition): ?>
    <div class="condition"><?php echo $this->condition?></div>
    <?php else: ?>
    <p class="info">There are no entries matching your search.</p>
    <?php endif; ?>
    <?php 
    endif; ?>
    So funktioniert es jetzt.

    Danke für deine Geduld! Du hast mir sehr geholfen, aber sicher auch anderen, die diesen Thread verfolgen.

    Viele Grüße aus Wien
    Michael
    Geändert von okapi (18.01.2010 um 12:02 Uhr)

  16. #16
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Super!
    Kein Problem. Ich will eigentlich seit Ewigkeiten ein Tutorial zum neuen catalog schreiben.. da werd ich sowas dann auch einbringen und dann ist das schon mal ein guter Start ;-)

    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."

  17. #17
    Contao-Nutzer
    Registriert seit
    02.12.2009.
    Beiträge
    8

    Standard Aus [ref] nur 'raw' nicht 'value'?

    Hallo MacKP!

    Dank dieses Posts wurde ich erleuchtet, wie ich 2 Kataloge referenziere, herzlichen Dank noch einmal!

    Jetzt stosse ich aber leider an eine Grenze von der ich mal checken wollte ob sie eine ist oder ich nur zu blöd.
    Möglicher Weise interessiert das noch andere Leser, daher dache ich, ich klebe das hier an das Post mit dran, weil es passt.


    Ich verwende mal für meinen Fall das Beispiel von okapi.

    Knackpunkt: In meinem Katalog "Werke" gibt es neben Text auch ein Bild und wenn ich eben dieses über die Methode ziehen will (wäre hier $werke['bild']), dann erhalte ich immer die RAW-Daten. Das war mir bei den Feldern die nur Text enthalten gar nicht aufgefallen, weil ja identisch aber bei einem Bild erhält man ja als "Value" gleich den schön vorgebastelten Code mit Lightbox.

    Mal dahingestellt, dass man sich das mit den RAW Daten hinbasteln könnte wäre Value halt bequemer auch für andere Fälle daher meine grundlegende Frage: Kommt man nur an RAW oder auch an "value", "name" etc. aus dem referenzierten Katalog dran?


    Ich erläutere doch kurz mal meine beiden Kataloge:

    1. Menschen
    Dort sind Menschen hinterlegt, mit Name, Vorname, etc.. und eben auch einem Bild.

    2. Veranstaltungen
    Und dort gibt es einen Punkt ("beteiligt") wo per Tagliste Menschen aus Katalog 1 ausgewählt werden können.

    Also habe ich analog okapis Fall einen Reader der (nach Auswahl über einen Lister) die Details zu einer Veranstaltung anzeigt und mit der hier im Post beschriebenen Methode von allen die an der Veranstaltung "beteiligt" sind ein Teil von deren jeweiligen Datensätzen ausgibt, u.a. auch das Bild.

    Dabei ergibt sich oben beschriebenes, darum habe ich natürlich mal geschaut was überhaupt alles da ist und <?php print_r($this->entries); ?> sagt an entscheidender Stelle:

    PHP-Code:

    ...

    [
    beteiligt] => Array
                            (
                                [
    label] => Beteiligte Personen
                                
    [type] => tags
                                
    [raw] => 7,6
                                
    [value] => Person1Person2
                                
    [ref] => Array
                                    (
                                        [
    1] => Array
                                            (
                                                [
    id] => 7
                                                
    [pid] => 2
                                                
    [sorting] => 4
                                                
    [tstamp] => 1282126175
                                                
    [name] => Person
                                                
    [taetigkeiten] => ...hier diverse Tätigkeiten
                                                
    [bild] => tl_files/content/bilderunddownloads/Menschen/Person1.jpg
                                                
    [vita] => ... hier die Vita
                                                
    [titel] => Dr.
                                                [
    vorname] => Vorname
                                                
    [gueltig_bis] => 1256515200
                                                
    [parentJumpTo] => 58
                                                
    [parentLink] => Die Details des Eintrags ansehen
                                                
    [parentUrl] => gaeste/items/7.html
                                            
    )

                                        [
    3] => Array
                                            (
    ... 
    In dem Array sind also von Hause aus nur aus den [ref] Arrays deren RAW Daten?

    Oder mache ich da nur einen Denkfehler?

    Oder wie bekomme ich das sonst hin, dass ich an alle Daten aus dem 2. Katalog dran komme.

    Ich habe auch dieses Post gefunden http://www.contao-community.de/showt...-related-Items aber dazu muss man ja Globals registieren können/dürfen. Das lässt der Hoster aber nicht zu und "soll man ja auch nicht", erst recht nicht als PHP-Fussgänger.

    Ich hoffe du (oder jemand anders) kann mir dazu was Klärendes sagen.

    Ich verbleibe mit Zeitdruck im Nacken und erwartungsvoll.

    Vuk.

  18. #18
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Vuk Beitrag anzeigen
    Mal dahingestellt, dass man sich das mit den RAW Daten hinbasteln könnte wäre Value halt bequemer auch für andere Fälle daher meine grundlegende Frage: Kommt man nur an RAW oder auch an "value", "name" etc. aus dem referenzierten Katalog dran?
    Nein, das ist auch aus gutem Grunde so.
    Stelle dir mal vor, dass der referenzierte Katalog (von dem der eigene Katalog btw. gar nichts weiss, er nimmt nur die entsprechende Zeile aus der referenzierten Tabelle) selbst wieder Referenzen enthalten koennte. Diese wiederum wieder welche usw.
    Ganz schlimm koenntest du dir hierbei auch noch zirkulaere Bezyge bauen, welche dann aufgeloest werden myssten. Also Katalog A verweist auf B, B verweist auf C und C wiederum verweist auf A.
    Das ist immenser rechenpower fyr Daten die meist nicht angezeigt werden.
    Daher wird dies auch nicht implementiert werden. Ich muss dich enttaeuschen.

    Zitat Zitat von Vuk Beitrag anzeigen
    Ich habe auch dieses Post gefunden http://www.contao-community.de/showt...-related-Items aber dazu muss man ja Globals registieren können/dürfen. Das lässt der Hoster aber nicht zu und "soll man ja auch nicht", erst recht nicht als PHP-Fussgänger.
    Da missverstehst du etwas.
    Das Array $GLOBALS hat nichts mit der Option register_globals zu tun.
    Das Array ist immer beschreibbar, wie auch im von dir zitierten Posting beschrieben.
    Deine Referenzen wirst du dir jedoch nur von Hand zusammenbasteln koennen (bzw. aehnlich wie im anderen Post beschrieben).

    Gruss
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  19. #19
    Contao-Nutzer
    Registriert seit
    02.12.2009.
    Beiträge
    8

    Standard

    Zitat Zitat von xtra Beitrag anzeigen
    Nein, das ist auch aus gutem Grunde so.
    Daher wird dies auch nicht implementiert werden. Ich muss dich enttaeuschen.
    Ahhh, das leuchtet ein.

    Zitat Zitat von xtra Beitrag anzeigen
    Da missverstehst du etwas.
    Das Array $GLOBALS hat nichts mit der Option register_globals zu tun.
    Ahsooo.
    Ich sag ja, PHP-Fussgänger... dafür klappt's aber recht gut. <g>
    Bzw. ich hatte das mit den $GLOBALS an anderer Stelle ausprobiert und es ging nicht und dacher daher das läge an register_globals.
    Fehler war wohl ähnlich wie der in dem Posting, nach dessem Vorbild ich das dann machen werde ($_GLOBALS, statt $GLOBALS).

    Mal morgen sehen, ob es klappt.

    Vielen Dank für die Infos, in atemberaubender Antwortgeschwindigkeit!

  20. #20
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Nunja, ab und an haben wir die, kommt aber auf's timing an. Gelegentlich vergehen auch ein paar Stunden bis wir dazu kommen.

    Viel Erfolg bei deiner Loesung

    Gruss
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  21. #21
    Contao-Nutzer
    Registriert seit
    22.08.2010.
    Beiträge
    8

    Standard gelöst

    Problem gelöst
    Geändert von maro (22.08.2010 um 14:09 Uhr) Grund: gelöst

  22. #22
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo maro,
    dann versuch das doch mal mit Catalog Referenz. Das ist genau für solche Fälle angedacht. Und falls du es nicht schon kennst: http://de.contaowiki.org/Kategorie:Catalog

    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."

  23. #23
    Contao-Nutzer
    Registriert seit
    22.08.2010.
    Beiträge
    8

    Standard Danke

    Zitat Zitat von MacKP Beitrag anzeigen
    Hallo maro,
    dann versuch das doch mal mit Catalog Referenz. Das ist genau für solche Fälle angedacht. Und falls du es nicht schon kennst: http://de.contaowiki.org/Kategorie:Catalog

    Viele Grüße
    Danke. Genau mit Catalog Referenz hatte iches mittlerweile schon gelöst. Gruß

  24. #24
    Contao-Fan
    Registriert seit
    28.06.2009.
    Ort
    Steffisburg
    Beiträge
    473

    Frage Referenzverbindung?

    Hallo zusammen

    Habe da ein Problem mit einer referenzverbindung.

    So funktioniert die Ausgabe, leider nur als timestamp
    PHP-Code:
    <?php foreach ($entry['data'] as $field=>$data): ?>
     <?php if ($data['ref']): ?>
      <?php foreach ($data['ref'] as $id=>$kunde): ?>
       <?php echo $kunde['kv_eroeffnungsdatum']; ?>
      <?php endforeach; ?>
     <?php endif; ?>
    <?php 
    endforeach; ?>
    So bekomme ich leider mehrer Ausgaben, etwa so "11 70 70"
    PHP-Code:
    <?php foreach ($entry['data'] as $field=>$data): ?>
     <?php if ($data['ref']): ?>
      <?php foreach ($data['ref'] as $id=>$kunde): ?>
       <?php $datum date("y"$kunde['kv_eroeffnungsdatum']); ?>
       <?php echo $datum?>
      <?php endforeach; ?>
     <?php endif; ?>
    <?php 
    endforeach; ?>
    Aber mir würde "11" schon reichen.

    Was mache ich falsch? Danke für die Hilfe

    Gruss
    Steven

  25. #25
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo tognit,
    wenn nur der Timestamp ausgegeben wird, musst du beim Feldtyp noch die Konfiguration vornehmen (d.m.Y zum Beispiel als Formatierung eintragen).

    Was das jetzt aber genau mit Referenzen zu tun hat weiß ich nicht. Da brauch man vllt etwas mehr Infos.

    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."

  26. #26
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Die Ausgabe bedeutet, dass die Schleife dreimal durchlaufen wird, aber es nur einen richtigen Wert gibt.
    Die invaliden Werte geben alle das "Default" Datum aus, 01.01.1970.

    Hast du mal testweise das Array ausgegeben und geschaut wieviele Daten da rauskommen?

  27. #27
    Contao-Fan
    Registriert seit
    28.06.2009.
    Ort
    Steffisburg
    Beiträge
    473

    Standard

    Hallo zusammen

    @MacKP
    Die Formatierung beim Feldtyp habe ich schon. Genau auf d.m.Y

    @Flex
    Ich bekomme drei Ausgaben. Aber bekomme ich so nur eine Ausgabe
    PHP-Code:
    <?php $kunde['kv_eroeffnungsdatum']; ?>
    und so drei Ausgaben?
    PHP-Code:
    <?php $datum date("y"$kunde['kv_eroeffnungsdatum']); ?>

  28. #28
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Könntest du mal statt

    PHP-Code:
    <?php foreach ($entry['data'] as $field=>$data): ?>
     <?php if ($data['ref']): ?>
      <?php foreach ($data['ref'] as $id=>$kunde): ?>
       <?php $datum date("y"$kunde['kv_eroeffnungsdatum']); ?>
       <?php echo $datum?>
      <?php endforeach; ?>
     <?php endif; ?>
    <?php 
    endforeach; ?>
    folgendes einsetzen:

    PHP-Code:
    <?php foreach ($entry['data'] as $field=>$data): ?>
     <?php if ($data['ref']): ?>
      <?php print_r($data['ref']); ?>
     <?php endif; ?>
    <?php 
    endforeach; ?>
    Und die Ausgabe hier posten?

  29. #29
    Contao-Fan
    Registriert seit
    28.06.2009.
    Ort
    Steffisburg
    Beiträge
    473

    Standard

    Hallo Flex

    Hier die Ausgabe:
    HTML-Code:
    	KN-
    
        Array
    (
        [1] => Array
            (
                [id] => 3
                [pid] => 1
                [sorting] => 128
                [tstamp] => 1303837163
                [kv_name] => Max Muster
                [kv_strassenr] => Musterstrasse
                [kv_plz] => 1234
                [kv_ort] => Musterhausen
                [kv_telefon] => 012 345 67 89
                [kv_natel] => 012 345 67 89
                [kv_notiz] => 26.04.2011 Ein neuer Notiz!
                [kv_land] => Musterland
                [kv_anrede] => 18
                [kv_email] => 
                [kv_kundenkontaktdatum] => 1301180400
                [kv_geraete] => 2,3
                [kv_sachbearbeiterin] => 1
                [kv_alias] => max-muster
                [kv_eroeffnungsdatum] => 1299020400
                [parentJumpTo] => 20
                [parentLink] => Details
                [parentUrl] => kundendetails/items/max-muster.html
            )
    
    )
     
    
        Array
    (
        [0] => Array
            (
                [id] => 22
                [pid] => 19
                [tstamp] => 1301679283
                [sorting] => 384
                [type] => 
                [alias] => rechnung
                [name] => Rechnung
            )
    
    )
     
    
        Array
    (
        [0] => Array
            (
                [id] => 25
                [pid] => 24
                [tstamp] => 1302260008
                [sorting] => 128
                [type] => 
                [alias] => offen
                [name] => offen
            )
    
    )
    Hoffe Du hast eine Lösung für mich! Wäre einfach TipTop

    Greez

  30. #30
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    <?php foreach ($entry['data'] as $field=>$data): ?>
     <?php if ($data['ref']): ?>
      <?php echo date('y'$data['ref'][1]['kv_eroeffnungsdatum']); ?>
     <?php endif; ?>
    <?php 
    endforeach; ?>
    Versuch es mal so.

  31. #31
    Contao-Fan
    Registriert seit
    28.06.2009.
    Ort
    Steffisburg
    Beiträge
    473

    Gesicht zeigt die Zunge

    Klappt auch nicht! Immer noch drei Ausgaben. "11 70 70"

  32. #32
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Mein Fehler, sollte besser aufpassen.

    PHP-Code:
    <?php if ($entry['data']['ref']): ?>
      <?php echo date('y'$entry['data']['ref'][1]['kv_eroeffnungsdatum']); ?>
    <?php 
    endif; ?>

  33. #33
    Contao-Fan
    Registriert seit
    28.06.2009.
    Ort
    Steffisburg
    Beiträge
    473

    Standard

    Guten Morgen zusammen
    Guten Morgen Flex

    Jetzt wird nichts ausgegeben

  34. #34
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo tognit,
    könntest du uns da mehr Infos zu kommen lassen?
    Die Array Ausgabe oben wirkt ein wenig unfertig... da am besten direkt aus dem Quellcode kopieren, sonst geht die hälfte eventuell flöten ;-)

    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."

  35. #35
    Contao-Nutzer
    Registriert seit
    26.07.2009.
    Beiträge
    64

    Standard

    Hallo zusammen,

    ich frage mich, wie ich am besten drei Kataloge miteinander verknüpfe. Grob skizziert möchte ich folgendes abbilden:

    • Sportabteilung
      • Name
      • Beschreibung
    • Trainingsort
      • Name
      • Anschrift
    • Trainingstermin
      • Wochentag
      • Trainingsort
      • Sportabteilung


    Ausgeben möchte ich Sportabteilung & Trainingstermine und Trainingsorte & -termine.

    Wenn ich das Beispiel von MacKP richtig verstehe, dürfte ich nicht nur vom Trainingstermin auf Sportabteilung und Sportstätte referenzieren, sondern müsste zusätzlich von der Abteilung und dem Ort auf den Termin verweisen.
    Zitat Zitat von MacKP Beitrag anzeigen
    Die Felder von "Komponisten" (stark vereinfacht):
    * Name des Komponisten
    * Persönliche Daten des Komponisten
    Feld um Werke auszuwählen

    Die Felder von "Werke" (stark vereinfacht):
    * Titel des Werkes
    * Daten des Werkes
    * Komponist des Werkes
    Das zu pflegen finde ich eher umständlich. Ließe sich das auch so lösen, dass ich z.B. eine Seite mit Abteilungsleser & Terminleser (oder eine Liste) erstelle und im Template für die Termine die Abteilung abfrage? Wenn nichts dagegen spricht - wie müsste sowas aussehen (in nicht so gut unterwegs in PHP)?

    Besten Dank schonmal für die Hilfe!

  36. #36
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo olivgruen,
    du brauchst die doppelte Verknüpfung nicht unbedingt.
    Das kommt eben darauf an, was du genau wo darstellen möchtest.

    Fang erst mal an, Trainingstermine mit einem Select für Ort und Abteilung zu erstellen.
    Danach kannst du dir das Modul Catalog Referenz anschauen, was für die Darstellung der Verknüpften Items da ist.
    Dann kann man weiter sehen ^^

    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."

  37. #37
    Contao-Nutzer
    Registriert seit
    26.07.2009.
    Beiträge
    64

    Standard

    Hallo MacKP,

    wollte soeben schreiben, dass es nicht notwendig ist, 'doppelt' referenzieren. Das Template 'catalog_full_ref' hilft beim Finden der richtige Schleifen.

    Hab das Beispiel (Verknüpfung zweier Kataloge und Ausgabe der Koordinaten aus dem referenzierten Katalog in einer GoogleMap) hier gepostet: Link

    Tolle Sache, dieser Catalog!

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
  •