Ergebnis 1 bis 19 von 19

Thema: mod_metamodel_list - items

  1. #1
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard mod_metamodel_list - items

    Hi MM User,

    nach den template-vars von mod_metamodel_list ist es mir scheinbar nicht möglich auf die einzelnen Attribute zuzugreifen weil alles aus $this->items kommt, die die komplette Ausgabe in der Detailansicht ausmachen.
    Um die Darstellung aber wie gewünscht zu formatieren wäre das für mich wichtig (z.b bestimmte items in H Elemente packen)... gibt es da einen weg der mir als MM-Neuling noch unbekannt ist das ganze dennoch zu erreichen?

    gruss
    ways

  2. #2
    Alter Contao-Hase Avatar von bizon
    Registriert seit
    16.06.2010.
    Beiträge
    1.128

    Standard

    Du kannst jede einzelne Position über den Spaltennamen, den du bei den Attributen selbst bestimmt hast, ansprechen.
    Code:
    .klasse_für_detailansicht .layout_full .dein_spaltenname { ... }
    .klasse_für_listenansicht .layout_full .dein_spaltenname { ... }
    Die Klassen für Detailansicht oder Listenansicht gibst du dem Listenmodul auf den entsprechenden Seiten.

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

    Support Contao

    Standard

    Hallo ways2web,
    warum sollte es dir nicht mehr möglich sein auf einzelne Elemente zuzugreifen?
    Was hast du denn gemacht/versucht?

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

  4. #4
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.190
    User beschenken
    Wunschliste

    Standard

    @ways2web: ich glaube, ich stand bis dato genau vor dem selben Problem...

    die Lösung ist mir beim Lesen von http://contao-konferenz.de/vortraege...googlemaps.pdf gekommen (siehe Seite 21)

    Bei dem Template mod_metamodel_list.xxx ist man schon zu spät dran - man muss eins vorher einsteigen...

    * leg mal eine Kopie von metamodels_prerendered.xxx an und brenne dieses in metamodels_pr_test
    * in Deinem Metamodel, was ausgegeben werden soll, gehst Du in die Rendereinstellungen (Buntes Icon) => FE Listenansicht > Einstellungen (Stift) > und wählst das Template metamodel_pr_test aus
    * in dem Template fügst Du folgendes ein
    PHP-Code:
    <?php $strRendersettings = isset($this->settings)? 'settings' 'view'?>
    <?php 
    if (count($this->data)): ?>

    <div class="layout_full">

    <?php 
    // hier die Ausgabe-Tests - nur eins aktivieren
    #print_r($this->data); 
    #print_r($this->items); 
    print_r($this->items->parseAll($this->getFormat(), $this->view)); 

    ?>

    <?php foreach ($this->data as $arrItem): ?>
    <div class="item <?php echo $arrItem['class']; ?>">
    ....
    wirds klarer?

  5. #5
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von MacKP Beitrag anzeigen
    Hallo ways2web,
    warum sollte es dir nicht mehr möglich sein auf einzelne Elemente zuzugreifen?
    Was hast du denn gemacht/versucht?

    Viele Grüße
    ich werde gleich mal Zonkys tip probieren... mit dem "zu spät" hab ich mir schon gedacht.
    Ich wollte sowas erreichen wie $this->items['meinattribut'] ... damit ich z.b ein Titel Attribut des MM in ein H Element setzen kann usw.

    Und zusätzlich möchte ich bestimmte Elemente (attribute) zur formatierung mit Klassen versehen... daher werde ich es mit einem eigenen metamodels_prerendered.html5 probieren.
    Vielleicht kann man attribute ja irgendwann mal direkt klassen vergeben, auch wenn dann natürlich die frage bleibt was für ein umschliessendes Tag die Klasse aufnehmen soll.

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

    Standard

    Zitat Zitat von ways2web Beitrag anzeigen
    Und zusätzlich möchte ich bestimmte Elemente (attribute) zur formatierung mit Klassen versehen...
    entweder du macht die CSS-Klassen gleich in das Template oder übernimmst die aus den Attributeinstellungen - wenn die Sache so individuell wird, kann man das mE. gleich mit einbauen...

    und welchen Tag du nimmst, ist im Prinzip wurscht - muss eh alles per CSS getunt werden...

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

    Support Contao

    Standard

    Also, du hast die Möglichkeit einmal das komplette Template anzupassen und wie früher beim Catalog alles per Hand auszugeben.. oder du passt die einzelnen Templates der Attribute an. Das geht.
    Klassen wirst du bald im BE vergeben können. Die Templates werden gerade schon angepasst für die Ausgabe. Das dauert nicht mehr lange.

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

  8. #8
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    @ways2web: ich glaube, ich stand bis dato genau vor dem selben Problem...

    die Lösung ist mir beim Lesen von http://contao-konferenz.de/vortraege...googlemaps.pdf gekommen (siehe Seite 21)

    Bei dem Template mod_metamodel_list.xxx ist man schon zu spät dran - man muss eins vorher einsteigen...

    * leg mal eine Kopie von metamodels_prerendered.xxx an und brenne dieses in metamodels_pr_test
    * in Deinem Metamodel, was ausgegeben werden soll, gehst Du in die Rendereinstellungen (Buntes Icon) => FE Listenansicht > Einstellungen (Stift) > und wählst das Template metamodel_pr_test aus
    * in dem Template fügst Du folgendes ein
    ...

    wirds klarer?
    für den ersten schritt ganz klar JA
    ich schau mal wie ich nun vorgehe.. mit $this->data[0]['raw']['meinAttribut'] komme ich dort an die einzelnen Datensätze ran.
    und könnte im prerendered natürlich alles einzelnd ausgeben lassen... ob das zu dirty ist weiß ich aber nicht.. da fehlt mir wohl Erfahrung.
    was sagen die echten Entwickler?

  9. #9
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von MacKP Beitrag anzeigen
    Also, du hast die Möglichkeit einmal das komplette Template anzupassen und wie früher beim Catalog alles per Hand auszugeben.. oder du passt die einzelnen Templates der Attribute an. Das geht.
    Klassen wirst du bald im BE vergeben können. Die Templates werden gerade schon angepasst für die Ausgabe. Das dauert nicht mehr lange.

    Viele Grüße
    ok... dann werde ich mal nicht zu viel mühe in den umbau meiner templates stecken... sonst muss das ja alles von vorne bei nem update...
    ich werde dann vorerst einfach mal die benötigten Attribute einzelnd ausgeben damit ich nen optischen Fortschritt habe.. und erfahrung.. hier teste ich grad die Ausgaben...

  10. #10
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.190
    User beschenken
    Wunschliste

    Standard

    ich denke, es kommt darauf an, inwieweit Du die Sache Individualisieren willst

    wie du an dem Quelltext gesehen hast, ist es eine relativ simple foreach-Schleife, die die Attribute ausgibt

    so kommst Du an alle Werte aus Ebene 1 - sofern Du noch was aus einem referenzierten MM benötigst, ist da schon Schluß

    ich denke, es wir die folgenden Möglichkeiten geben:

    1.) eigene CSS-Klasse dem Attribut mitgeben

    2.) Attribut-Template anpassen

    3.) Template komplett umbauen

    bei Punkt 3 ist man recht schnell, wenn z.B. einige Attribute in Divs verschachtelt werden wie
    PHP-Code:
    <div class="item>
      <div class="
    links">
        ## Attribut1 ##
        ## Attribut2 ##
      </div>
      <div class="
    rechts">
        ## Attribut3 ##
        ## Attribut4 ##
        ## Attribut5 ##
      </div>
    </div> 
    die ##...## müsen natürlich php-echos sein

    vielleicht das als "Basis"

    PHP-Code:
    <?php $strRendersettings = isset($this->settings)? 'settings' 'view'?>
    <?php 
    if (count($this->data)): ?>

    <div class="mm_list">

    <?php 
    echo "<!-- \n";
    print_r($this->items->parseAll($this->getFormat(), $this->view)); 
    echo 
    "\n -->";
    ?>

    <?php foreach($this->items->parseAll($this->getFormat(), $this->view) as $arrItem): ?>
    <div class="item <?php echo $arrItem['class']; ?>">
        <p class="myclass"><?php echo $arrItem['raw']['myattribut']; ?></p>
        <p class="myclass2"><?php echo $arrItem['text']['myattribut2']; ?></p>
    </div>
    <?php endforeach; ?>
    </div>
    <?php else: ?>
    <p class="info"><?php echo $this->noItemsMsg?></p>
    <?php endif; ?>

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

    Standard

    btw: Du kannst ja mal zum Stammtisch "in den Norden" kommen ;-)

    https://community.contao.org/de/grou...384&do=discuss

  12. #12
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    das klappte schon ganz gut... Danke!

    bei einem Attribut hab ich aber Probleme... das ist nen Select.. das mehrere Daten mitbringt.

    das ist das $arrItem['raw']['extension']...das ist kein einzelner Wert sondern ein Array...soweit ja noch ok.
    wie ich auf die zugreife weiß ich normal auch mit meinen geringen php-kenntnissen... z.B den namen ala $arrItem['raw']['extension']['extension_name']
    aber das ['extension_url'] macht mir probleme.. wie komme direkt an die urls ran???

    PHP-Code:
    Array ( [id] => [pid] => [sorting] => 384 [tstamp] => 1408581729 [extension_name] => boxes4ward 
    [puplished] => 
    [extension_url] => a:2:{i:0;s:14:"www.contao.org";i:1;s:60:"https://contao.org/de/extension-list/view/boxes4ward.de.html";} [mm_tutorials_id] => boxes4ward 
    hier fehlen mir wohl array-grundlagen

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

    Standard

    PHP-Code:
    <a href="<?php echo deserialize($arrItem['raw']['extension_url'])[1]; ?>" title="mehr"><?php echo deserialize($arrItem['raw']['extension_url'])[0]; ?></a>
    Code:
    <a href="<?php echo deserialize($arrItem['raw']['extension_url'])[1]; ?>" title="mehr"><?php echo deserialize($arrItem['raw']['extension_url'])[0]; ?></a>
    ;-)

    EDIT @Admin: hier wird der PHP-Code abgeschnitten!?!?

  14. #14
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.190
    User beschenken
    Wunschliste

    Standard

    zur Info: das du mit [1] und [0] bei deserializeauf die Elemente zugreifst, hast Du sicher bemerkt

    wenn Du eine unbekannte/variable Anzahl hast gehst du nach dem deserialize in eine foreach-Schleife oder machst ein implode zur Umwandlung in einen(!) String

  15. #15
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.190
    User beschenken
    Wunschliste

    Standard

    passend zum Thema: wenn Du durch eine Mehrfachauswahl statt eines Strings ein Array erhälst, kann man mit folgendem Code die Sache schnell in eine "CSV"-Liste überführen:

    PHP-Code:

    <?php echo implode(', 'array_map(function($el){ return $el['name']; }, $arrItem['raw']['speaker'])); ?>

    // ab PHP 5.5
    <?php echo implode(', 'array_column($arrItem['raw']['speaker']), 'name')); ?>

  16. #16
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    zur Info: das du mit [1] und [0] bei deserializeauf die Elemente zugreifst, hast Du sicher bemerkt

    wenn Du eine unbekannte/variable Anzahl hast gehst du nach dem deserialize in eine foreach-Schleife oder machst ein implode zur Umwandlung in einen(!) String
    sowas hab ich ... aber kann man den code bedenkenlos verwenden? .. php kann ich nur rudimentär

    PHP-Code:
    $test =  implode(', 'array_map(function($el){ return $el['version']; }, $arrItem['raw']['contao_version']));
    $arr  explode(',',$test);

    foreach(
    $arr AS $version){
        echo 
    $version."<br>";

    Geändert von ways2web (02.09.2014 um 22:06 Uhr)

  17. #17
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.190
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von ways2web Beitrag anzeigen
    php kann ich nur rudimentär

    dann solltest Du das ändern - ansonsten wird es seeehhhr schwer

  18. #18
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    Es funktioniert mit meinem Code. Ob der aber gut ist, Wage ich zu bezweifeln😁

    gesendet mit Tapatalk.

  19. #19
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.190
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von ways2web Beitrag anzeigen
    Es funktioniert mit meinem Code. Ob der aber gut ist, Wage ich zu bezweifeln
    ... das Bessere ist der Feind des Gutem ;-)

    kannst ja Deinen Code zum Stammtisch mitbringen

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •