Contao-Camp 2024
Ergebnis 1 bis 13 von 13

Thema: MetaModels: Template für Liste und Detailansicht bearbeiten

  1. #1
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard MetaModels: Template für Liste und Detailansicht bearbeiten

    Hallo zusammen,

    ich möchte in MM das Template der Detailansicht für meine MetaModels bearbeiten und habe folgende Anforderungen:
    1. das Eingabefeld »name« soll immer eine H1 sein
    2. danach soll ein Grid (bootstrap) mit zwei Spalten folgen
    3. linke Spalte soll ein Foto kommen (ohne den Aufzählungs-Bollo) und auf der rechten Spalte sollen alle anderen Attribute kommen. Bei einigen Attributen soll immer vor dem eingegebenen Wert dasselbe Label stehen, bei anderen immer dieselbe h3 drüber erscheinen (z.B. Zutaten)
    4. zwei der Angaben sollen in einem Accordeon (Bootstrap) erscheinen (Überschriften der Accordeons sind »Zusatzinfos« und »Varianten«.
    5. ich möchte für jedes der Attribute die strukturierten Daten von Google einbinden (siehe hier), dazu muss ich alle Attribute ansprechen können, oder?
    Wie kann ich das Template so umbauen, dass das funktioniert? Wie kann ich die einzelnen Attribute ansprechen?
    Leider kenne ich mich mit php überhaupt nicht aus und würde mich freuen, wenn Ihr mir den Ablauf erklären könnt, damit ich später selbst weiter komme...

    Das Template für die Liste habe ich sogar schon selbst bearbeiten können, dass es in mein Layout passt, aber leider habe ich mit der Weiterleitung zur Detailseite Probleme:
    Es wird aktuelle eine Miniatur des jeweiligen Bildes und daneben der Rezept-Name angezeigt, außerdem die Weiterleitung auf die Detailseite mit dem Link »Details«.
    Nun hätte ich gerne, dass dort nicht das Wort »Details« erscheint, sondern der jeweilige Name und das Bild der Link zur Detailsansicht werden. Wie mache ich das am besten?
    Ich habe ein Div um die beiden Attribute gelegt, welches einen Rahmen hat. Könnte man vielleicht sogar dieses gesamte Div klickbar machen mit einem Hover-Effekt?

    Und eines noch: Kann man in MM Tags für einzelne Einträge vergeben, so dass man in einem Artikel nur diese Einträge aufführen kann (z.B. »Klassiker« oder »Mit Chilli«)?

    Sorry für die vielen Fragen.
    doescher

  2. #2
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Ich habe nun nach etwas Stöbern einen Beitrag von zonky gefunden, in dem er das Template etwas umbaut
    PHP-Code:
    <?php 
    // Debug items. 
    if (function_exists('dump')) { 
        
    dump($this->data); 

    ?> 
    <?php if (count($this->data)): ?> 
        <div class=""> 
            <?php foreach ($this->data as $arrItem): ?> 
            <?= $arrItem['text']['my_attribute'?> 
            <?php endforeach; ?>    
        </div> 
    <?php else : ?> 
        <?php $this->block('noItem'); ?> 
        <p class="info"><?= $this->noItemsMsg ?></p> 
        <?php $this->endblock(); ?> 
    <?php endif; ?>
    Ich habe nun versucht, das auf mein Problem umzubauen und habe folgendes gemacht:
    PHP-Code:
    <?php 
    // Debug items. 
    if (function_exists('dump')) { 
        
    dump($this->data); 

    ?> 
    <?php if (count($this->data)): ?> 
    <div class="h1"> 
        <?php foreach ($this->data as $arrItem): ?> 
        <?= $arrItem['text']['Name'?> 
        <?php endforeach; ?>    
    </div> 
    <div class=""> 
        <?php foreach ($this->data as $arrItem): ?> 
        <?= $arrItem['longtext']['Zutaten'?> 
        <?php endforeach; ?>    
    </div> 
    <?php else : ?> 
        <?php $this->block('noItem'); ?> 
        <p class="info"><?= $this->noItemsMsg ?></p> 
        <?php $this->endblock(); ?> 
    <?php endif; ?>
    Beim ersten Div ist alles gut, es wird richtig angezeigt. Aber schon beim zweiten Div wird kein Attribut mehr angezeigt.
    Muss ich noch weitere Einstellungen vornehmen?

  3. #3
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    ich komm irgendwie nicht weiter.
    Muss ich irgendwas in der DCA oder so eintragen? Wie muss das aussehen?
    Hilfe ist sehr willkommen...

  4. #4
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Kann mir wirklich niemand einen Tipp geben, wie ich einen Schritt (oder mehrere) vorankomme?
    Oder sind die Fragen zu dusselig?

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Du hast den Aufbau des Templates nicht verstanden...

    PHP-Code:
    <?php 
    // Debug items.
    if (\Contao\System::getContainer()->get('kernel')->isDebug()) {
        
    dump($this->data);

    ?> 
    <?php if (count($this->data)): ?> 
        <div class=""> 
            <?php foreach ($this->data as $arrItem): ?> 
               <?= $arrItem['text']['my_attribute_1'?>
               <?= $arrItem['text']['my_attribute_2'?>
               <?= $arrItem['text']['my_attribute_3'?>
               <?= $arrItem['text']['my_attribute_4'?>
               <?= $arrItem['text']['my_attribute_5'?> 
            <?php endforeach; ?>    
        </div> 
    <?php else : ?> 
        <?php $this->block('noItem'); ?> 
        <p class="info"><?= $this->noItemsMsg ?></p> 
        <?php $this->endblock(); ?> 
    <?php endif; ?>
    sieh Dir die dump-Ausgabe an und was in den einzelnen Knoten steht (raw, text, html5, attributes, actions)

  6. #6
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von doescher Beitrag anzeigen
    Kann mir wirklich niemand einen Tipp geben, wie ich einen Schritt (oder mehrere) vorankomme?
    Oder sind die Fragen zu dusselig?
    btw: bei anderen Foren liegt die "response time" bei einigen Tagen... da sollte man hier auch etwas Geduld mitbringen, da die Moderation als Freizeitjob läuft


    bei dringenden Sachen kannst Du gern den "E-Mail-Joker" ziehen: https://now.metamodel.me/de/unterstuetzer/kontaktieren ;-)

  7. #7
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    btw: bei anderen Foren liegt die "response time" bei einigen Tagen... da sollte man hier auch etwas Geduld mitbringen, da die Moderation als Freizeitjob läuft
    Ich weiß, ich bin aber was das angeht total vom Contao-Forum versaut worden... ;o))

    Zitat Zitat von zonky Beitrag anzeigen
    bei dringenden Sachen kannst Du gern den "E-Mail-Joker" ziehen: https://now.metamodel.me/de/unterstuetzer/kontaktieren ;-)
    Darauf komme ich gegebenenfalls gerne zurück.
    Ich denke aber bei jeder Anfrage, dass es vielleicht noch andere gibt, die irgendwann an derselben Stelle wie ich stehen und möchte den Thread bis zur Lösung weiterführen.

  8. #8
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von doescher Beitrag anzeigen
    Ich denke aber bei jeder Anfrage, dass es vielleicht noch andere gibt, die irgendwann an derselben Stelle wie ich stehen und möchte den Thread bis zur Lösung weiterführen.
    es steht Dir ja (meistens) frei, die Lösung dann hier auch zu posten - der (gern übersehene) alternative Link wäre der hier: https://now.metamodel.me/de/unterstuetzer/spenden

  9. #9
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    es steht Dir ja (meistens) frei, die Lösung dann hier auch zu posten - der (gern übersehene) alternative Link wäre der hier: https://now.metamodel.me/de/unterstuetzer/spenden
    Den habe ich gesehen und komme darauf zurück... ;o))

  10. #10
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    Du hast den Aufbau des Templates nicht verstanden...
    Da bin ich mir sogar ziemlich sicher!

    Ich möchte mir ein Template bauen, dass immer in etwa diese Vorgaben haben soll:
    Code:
    <div  itemscope itemtype="http://schema.org/Recipe">
        <h1 itemprop="name">Hier soll das Attribut Name rein</h1>
    
    
    <div class="ce_bs_gridStart Row"> // Hier startet das Grid von Bootstap
    
    
        // linke Seite ist nur ein Rezeptbild (Attribut Foto, Responsive Bilder aus Contao)
        <div class="col-md-5">
                <div class="ce_image block">
                    <figure class="image_container">
                        /* Hier soll das Attribut Foto rein, itemprop="Image"
                </div>
        </div>
         
         // Der Bootstrap Separator   
        <div class="ce_bs_gridSeparator col-md-6 offset-md-1">
            
                // Hier kommen nun die Angaben zum Rezept
                <div class="ce_text group block">
                    /* Hier soll das Attribut Gruppe rein
                </div>
    
    
                // Hier sind einige Piktogramme vorgesehen. Diese sollen nebeneinander floaten (in MM Mehrfachauswahl)
                <div class="ce_image picto float-left block">
                    /* Hier soll das Attribut picto rein
                </div>
                <div class="ce_image picto float-left block">
                    /* Hier soll das Attribut picto rein
                </div>
                <div class="ce_image picto float-left block">
                    /* Hier soll das Attribut picto rein
                </div>
                
                <div class="ce_text block" itemprop="recipeIngredient">
                    /* Hier soll das Attribut Zutaten rein
                </div>
    
    
                <div class="ce_text block" itemprop="recipeInstructions">
                    /* Hier soll das Attribut Zubereitung rein
                </div>
    
    
                // Hier kommt ein Bootstrap Accordion hin
                <section class="ce_accordionSingle ce_accordion ce_text block">
                    <div class="toggler ui-accordion-header ui-corner-top ui-accordion-header-collapsed ui-corner-all ui-state-default ui-accordion-icons" role="tab" id="ui-id-1" aria-controls="ui-id-2" aria-selected="false" aria-expanded="false" tabindex="0"><span class="ui-accordion-header-icon ui-icon ui-icon-triangle-1-e"></span>
                        <i class="icon-arrow-down"></i>&nbsp;&nbsp;Geschichte&nbsp;&nbsp;<span style="font-size:70%">(zum Öffnen klicken)</span></h4>
                    </div>
                        
                    <div class="accordion ui-accordion-content ui-corner-bottom ui-helper-reset ui-widget-content" style="display: none;" id="ui-id-2" aria-labelledby="ui-id-1" role="tabpanel" aria-hidden="true"><div>
                    <p>    /* Hier soll das Attribut Geschichte rein</p>    
                    </div>
                    </div>
                </section>
    
    </div>
    Muss ich nun Deinen PHP-Code an jeder Stelle, an der ich ein Attribut haben möchte, komplett einfügen? Also etwa so:
    HTML-Code:
    <h1>Rezeptname</h1>
    Hier kommt statt »Rezeptname« das rein:
    PHP-Code:
    <?php 
    // Debug items.
    if (\Contao\System::getContainer()->get('kernel')->isDebug()) {
        
    dump($this->data);

    ?> 
    <?php if (count($this->data)): ?> 
        <div class=""> 
            <?php foreach ($this->data as $arrItem): ?> 
               <?= $arrItem['text']['Name'?>
            <?php endforeach; ?>    
        </div> 
    <?php else : ?> 
        <?php $this->block('noItem'); ?> 
        <p class="info"><?= $this->noItemsMsg ?></p> 
        <?php $this->endblock(); ?> 
    <?php endif; ?>
    oder aber
    HTML-Code:
                <div class="ce_text group block">
                    Zutaten
                </div>
    Da kommt dann statt »Zutaten« rein:
    PHP-Code:
    <?php 
    // Debug items.
    if (\Contao\System::getContainer()->get('kernel')->isDebug()) {
        
    dump($this->data);

    ?> 
    <?php if (count($this->data)): ?> 
        <div class=""> 
            <?php foreach ($this->data as $arrItem): ?> 
               <?= $arrItem['text']['Zutaten'?>
            <?php endforeach; ?>    
        </div> 
    <?php else : ?> 
        <?php $this->block('noItem'); ?> 
        <p class="info"><?= $this->noItemsMsg ?></p> 
        <?php $this->endblock(); ?> 
    <?php endif; ?>
    Außerdem funktioniert bei mir das Ansprechen der Bilder nicht. Hier wird immer nur der Linktext ausgegben.
    Wie mache ich das richtig?

  11. #11
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    sieh Dir die dump-Ausgabe an und was in den einzelnen Knoten steht (raw, text, html5, attributes, actions)
    ... nach derzeitiger Planung gibt es den nächsten MM-Workshop im Zuge des ContaoCamp - ggf. wäre das was für Dich

  12. #12
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ... nach derzeitiger Planung gibt es den nächsten MM-Workshop im Zuge des ContaoCamp - ggf. wäre das was für Dich
    Hallo zonky,
    das ist sicher spannend, aber brennt es mir unter den Nägeln...
    Ich habe soeben den Joker gezogen.
    Grüße
    doescher

  13. #13
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Anfrage ist im Umlauf...

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
  •