Ergebnis 1 bis 10 von 10

Thema: MetaModels getColName() wie geht dies

  1. #1
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard MetaModels getColName() wie geht dies

    Hallo,

    ich bin gerade eine Abfrage am Schreiben um bei der Ausgabe die Werte in zwei unterschiedliche DIV's zu schreiben, damit ich dann bei der weiteren Verarbeitung sauber zwischen den Wertebereichen trennen kann. Ich habe jetzt schon alles mir mögliches versucht aber ich bekomme es einfach nicht hin den Spaltenname zu bekommen. Ich kann meine Abfragen immer nur auf den Spaltentitel beziehen, was bei mir aber sau dumm ist, da ich deutsch und englisch im Backend support. Somit habe ich natürlich für die Spaltentitel deutsche und englische Werte. Ich finde es jetzt nicht wirklich elegant hier drauf meine Abfrage zu machen. Da der Spaltenname ja unabhängig von der Sprache ist hätte ich gerne die Abfrage auf diesen angewendet.

    In der Doku habe ich diesen Befehl gefunden: getColName()

    Leider bin ich zu dumm um dies mit meiner Abfrage in Einklang zu bringen:

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

    <?php if (count($this->data)): ?>
        <div class="layout_full">
        <?php foreach ($this->data as $arrItem): ?>
            <div class="item <?php echo $arrItem['class']; ?>">
                <?php foreach ($arrItem['attributes'] as $field => $strName): ?>
                    <?php if ((isset($arrItem[$this->getFormat()][$field]) && ($strValue $arrItem[$this->getFormat()][$field])
                            || (isset(
    $arrItem['text'][$field]) && ($strValue $arrItem['text'][$field])))) : ?>
                        <?php if ($strName == "work_prePicture" || $strName == "work_title"): ?>
                        
                            <div class="mmTop">
                                <div class="field inner">
                                    <?php if(!$this->$strRendersettings->get('hideLabels')): ?>
                                        <div class="label">
                                            <?php echo sprintf($GLOBALS['TL_LANG']['MSC']['field_label'], $strName); ?>
                                        </div>
                                    <?php endif; ?>
                                </div>
                            </div>
                        <?php else: ?>
                            <?php if ($strName == "work_titleMain" || $strName == "work_discription" || $strName == "work_urlHomepage" || $strName == "work_urlVideo"): ?>
                                <div class="mmTop">
                                    <div class="field inner">
                                        <?php if(!$this->$strRendersettings->get('hideLabels')): ?>
                                            <div class="label">
                                                <?php echo sprintf($GLOBALS['TL_LANG']['MSC']['field_label'], $strName); ?>
                                            </div>
                                        <?php endif; ?>
                                    </div>
                                </div>
                            <?php endif; ?>    
                        <?php endif; ?>
                    <?php endif; ?>
                <?php endforeach; ?>
            </div>
        <?php endforeach; ?>
        </div>
    <?php else: ?>
        <p class="info"><?php echo $this->noItemsMsg?></p>
    <?php endif; ?>
    Vielen Dank

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

    Standard

    mach Dir mal eine "Debug-Ausgabe" - siehe http://metamodels.readthedocs.io/de/...templates.html

    bei den "Keys" der Attribute sollte was für Dich dabei sein...

  3. #3
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    Ja dieses Vorgehen ist mir bekannt, aber ich versteh einfach nicht wie ich auf die Spalte komme.

    Wenn ich mir jetzt ['Text'] ansehe weiß ich das ich mit
    PHP-Code:
    $arrItem['text']['work_prePicture'
    an die Werte kommen sollte, aber hier wird mir nix zurückgegeben. Nicht mal der Name.

    Kann es sein das MetaModels zwei Sprachen nicht so mag?

    Davon abgesehen weiß ich jetzt leider immer noch nicht wie ich ['work_prePicture'] so hinbekomme das es als ein String "work_prePicture" ausgeben wird, damit ich abfragen kann ob es die richtige Spalte ist :-(

    PHP-Code:
    <!-- DEBUG START 
    <pre>
    Array
    (
        [
    0] => Array
            (
                [
    raw] => Array
                    (
                        [
    id] => 2
                        
    [pid] => 0
                        
    [sorting] => 128
                        
    [tstamp] => 1462968156
                        
    [work_prePicture] => Array
                            (
                                [
    bin] => Array
                                    (
                                    )

                                [
    value] => Array
                                    (
                                    )

                                [
    path] => Array
                                    (
                                    )

                            )

                        [
    work_title] => Test de
                        
    [work_titleMain] => Noch mehr title
                        
    [work_discription] => hallo
                        
    [work_urlVideo] => Array
                            (
                                [
    0] => 
                                [
    1] => 
                            )

                        [
    work_urlHomepage] => Array
                            (
                                [
    0] => 
                                [
    1] => 
                            )

                        [
    work_published] => 1
                    
    )

                [
    text] => Array
                    (
                        [
    work_prePicture] => 
                        [
    work_title] => Test de
                        
    [work_titleMain] => Noch mehr title
                        
    [work_discription] => hallo
                        
    [work_urlVideo] =>  
                        [
    work_urlHomepage] =>  
                        [
    work_published] => 1
                    
    )

                [
    attributes] => Array
                    (
                        [
    work_prePicture] => Preview Picture
                        
    [work_title] => title
                        
    [work_titleMain] => title Main
                        
    [work_discription] => description
                        
    [work_urlVideo] => URL Video Vimeo
                        
    [work_urlHomepage] => URL for movie homepage
                        
    [work_published] => publish
                    
    )

                [
    html5] => Array
                    (
                        [
    work_prePicture] => <ul class="file">
    </
    ul>

                        [
    work_title] => <span class="text">Test de</span>
                        [
    work_titleMain] => <span class="text">Noch mehr title</span>
                        [
    work_discription] => <span class="text">hallo</span>
                        [
    work_urlVideo] => <span class="url"><a target="_blank" href=""></a></span>
                        [
    work_urlHomepage] => <span class="url"><a target="_blank" href=""></a></span>
                        [
    work_published] => <span class="text">1</span>
                    )

                [class] => 
    first last even
                
    [jumpTo] => Array
                    (
                    )

            )

    )
    </
    pre>

     
    DEBUG ENDE --> 

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

    Standard

    1.) im Knoten "attributes" stehen in den Keys des Array alle Spaltennamen

    2.) mit
    PHP-Code:
    <?php echo $arrItem['text']['work_prePicture']; ?>
    kann nichts ausgegeben werden, da - wie im Array zu sehen - kein Wert (value) vorhanden ist... probier mal

    PHP-Code:
    <?php echo $arrItem['text']['work_title']; ?>
    da sollte "Test de" erscheinen


    mir ist das "Ziel der Übung" noch schleierhaft - zumindest kannst Du mit http://php.net/manual/de/function.array-key-exists.php die Keys abfragen...

  5. #5
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    So habe es mit deinem Vorschlag gemacht. Jetzt kann ich ohne Abfrage die Daten so platzieren wie ich diese brauche, das ist natürlich viel sinnvoller und spart doch etwas Rechenleistung.

    Was mir nur jetzt auffällt, das die Template somit komplett umgangen werden und ich nur noch den reinen Inhalt aus der DB bekomme. Gibt es auch einen Weg die Daten wieder mit dem Template zu bekommen? Wenn nicht müsste ich alles in dieses Template mit einbauen was mir noch fehlt ;-)

    Danke aber schon mal :-)

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

    Standard

    bei der FE-Ausgabe gibt es drei Templates

    * ce_metamodel_list
    ** metamodel_prerendered
    *** mm_attr_default
    *** mm_attr_checkbox
    *** mm_attr_* (usw. je nach Attributstypen)

    Du bist aktuell im metamodel_prerendered - hier kannst Du über die Knoten "text" und "html" dir die Daten mit den "Sub-Templates" mm_attr_* ausgeben lassen

  7. #7
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    Mh dachte ich auch aber ich bekomme immer nur reinen Text ohne irgendwelche HTML Elemente aus den Templates.

    Was mich was wundert im Standard Template ist ja folgendes drin:

    PHP-Code:
    <?php echo sprintf($GLOBALS['TL_LANG']['MSC']['field_label'], $strName); ?>
    Ich habe versucht mir meine Daten so zusammen zu bauen, dass diese hier angenommen wird, aber bis jetzt leider ohne Erfolg:

    PHP-Code:
    <?php echo sprintf($GLOBALS['TL_LANG']['MSC']['field_label'], $arrItem[$this->getFormat()][$arrItem['attributes']['work_prePicture']]); ?>

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

    Standard

    hmm... wenn ich das Array so ansehe, sollte ein

    PHP-Code:
    <?php echo $arrItem['html5']['work_title']; ?>
    die Ausgabe

    PHP-Code:
    <span class="text">Test de</span
    (als Quelltext) erzeugen - ist dem nicht so?

  9. #9
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    Das war es. Es lang am "html5" hatte nur "html" probiert :-)

    Das Thema mit den Sprachen läuft das dann auch noch korrekt oder muss ich hier noch was anpassen.

    Ich habe noch das Problem das die deutsche immer die englische Version im Backend und andersrum überschreibt. Dies ist doch bestimmt so nicht gewollt?

    Danke!!!!!!

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

    Standard

    Zitat Zitat von bongartz120 Beitrag anzeigen
    Das Thema mit den Sprachen läuft das dann auch noch korrekt oder muss ich hier noch was anpassen.
    => was auch immer mit "korrekt" bezeichnet wird... ich sag mal "ja"


    Zitat Zitat von bongartz120 Beitrag anzeigen
    Ich habe noch das Problem das die deutsche immer die englische Version im Backend und andersherum überschreibt. Dies ist doch bestimmt so nicht gewollt?
    => bestimmt nicht - trotz NSA kann ich nicht gleichzeitig auf alle Monitore sehen, um das Problem zu erkunden. Meine parapsychologischen Schulungen in Russland habe ich auch nur mit "befriedigend" abgeschlossen, so dass es zum "Erahnen" kaum reicht ;-)

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
  •