Ergebnis 1 bis 17 von 17

Thema: Eigenschaften der Struktur um ein Feld erweitern

  1. #1
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.291

    Standard Eigenschaften der Struktur um ein Feld erweitern

    Moin beisammen,

    ich hätte mal ne totale DAU Frage bezüglich Modulentwicklung in Contao. Eigentlich ist es gar kein tolles Modul sondern ich würde gerne IVW Tags (Zählpixel) per Struktur integrieren. Bisher muss ich das immer unschön über die fe_page und URL Abfragen in PHP lösen. Wenn jeder Strukturpunkt ein eigenes Feld "IVW" hätte, würde mir das diesen unsauberen Lösungsweg sparen und ich könnte z.B. per $this->ivw sauber ins Template schreiben. Auf der Contao Konferenz vor zwei Jahren war ich auch schon in einem Workshop für Modulentwicklung mit Janick. Hier wurden News um zwei Felder erweitert....war eigentlich recht einfach nur is das schon zu lange her

    Kann mir jemand kurz erklären wie ich so ein Feld hinzufüge? Kann ich das Modul grundsätzlich über das Backendtool "Extension-Creator" erzeugen?

    Hab auch schon diesen Beitrag für die Erweiterung von Memberfeldern gefunden. Kriegs aber nicht auf die tl_page.php umgemünzt
    https://contao.org/de/manual/3.0/cus...tion-erweitern

    Sorry für diese Noobfrage

    VG
    Frank
    Geändert von Kahmoon (13.05.2014 um 10:52 Uhr)

  2. #2
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.291

    Standard

    Kleines Update:

    Ich habs inzwischen soweit das ich eine tl_page in meinem Modul "xx_ms_sturtuce_extend" angelegt habe, die auch im Installtool erkannt wird und die Tabelle anpasst. Leider taucht das Feld im Backend nicht auf

    tl_page.php im Ordner meinmodul/dca

    PHP-Code:
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
     
    $GLOBALS['TL_DCA']['tl_page']['fields']['ivw'] = array
    (
    'label'                   => 'IVW Test',
    'exclude'                 => true,
    'inputType'               => 'text',
    'search'                  => true,
    'eval'                    => array('mandatory'=>false'maxlength'=>255'decodeEntities'=>true),
    'sql'                     => "varchar(255) NOT NULL default ''"
    );
    Wo hängts?

    VG
    Frank
    Geändert von Kahmoon (13.05.2014 um 11:34 Uhr)

  3. #3
    Contao-Fan
    Registriert seit
    27.06.2012.
    Beiträge
    600

    Standard

    Du musst das Feld in die Palette einfügen.

    Code:
    $GLOBALS['TL_DCA']['tl_page']['palettes'][....]
    Für jeden Seitentyp gibt es eine eigene. Mit str_replace den Wert an gewünschter Position einfügen, gibt sicher ein paar Beispiele im Forum.

  4. #4
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.291

    Standard

    Danke für die Rückmeldung.

    Ich habs mir jetzt mal von einem anderen Modul angeschaut. Feld taucht im Backend auf....aber es erfolgt keine Ausgabe im Frontend.

    PHP-Code:
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');

    $GLOBALS['TL_DCA']['tl_page']['palettes']['regular'] = str_replace
    (
        
    'description',
        
    'description,ivw',
        
    $GLOBALS['TL_DCA']['tl_page']['palettes']['regular']
    );


    $GLOBALS['TL_DCA']['tl_page']['fields']['ivw'] =  array
    (
        
    'label'                   => $GLOBALS['TL_LANG']['tl_page']['ivw'] ,
        
    'exclude'                 => true,
        
    'inputType'               => 'text',
        
    'search'                  => true,
        
    'eval'                    => array('mandatory'=>false'maxlength'=>15'decodeEntities'=>true),
        
    'sql'                     => "varchar(255) NOT NULL default ''"
    );
    VG
    Geändert von Kahmoon (13.05.2014 um 12:01 Uhr)

  5. #5
    Contao-Nutzer
    Registriert seit
    25.01.2013.
    Beiträge
    42

    Standard

    Wie holst Du Dir den das Feld überhaupt ins Frontend? Ein gangbarer Weg könnte zum Beispiel der sein:

    Code:
    <?php 
    global $objPage; 
    $ivw = String::decodeEntities($objPage->ivw);
    ?>

  6. #6
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.291

    Standard

    JA, das ist ne gute Frage. Bisher gar nicht Ich dachte das passiert automatisch

    global $objPage; verwende ich eh schon im Head. Dann passt dein Beispiel ganz gut. Danke! Gibts noch Alternativen?

    vg
    Geändert von Kahmoon (13.05.2014 um 13:24 Uhr)

  7. #7
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Hi,

    na zum Glück passiert das nicht automatisch, stell dir mal vor wie der Quellcode aussehen würde, wenn Contao einfach mal alle Felder irgendwo in den Quelltext schreiben würde, die im DCA definiert wurden ;-)

    Bist du dir sicher, dass du das Feld wirklich auf einer "normalen" Seite einbauen möchtest. Sollte so ein ivw nicht in JEDER Seite angezeigt werden? Also wäre hier die Rootseite der bessere Platz um soetwas einzubauen.

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_page']['palettes']['root'
    Ansonsten, zur Ausgabe kannst bzw. musst du einen entsprechenden Hook nutzen, oder du baust dir zusätzlich noch ein Modul, welches du dann ins Seitenlayout einbindest.
    Schau dir am besten mal die Erweiterung PiwikTrackingTag an, dort siehst du wie die den PiwikCode ins Template bekommen

    HOOK generatePage

    In jedem Fall brauchst du noch eine Klasse in deinem Modul, welche den Wert jeder Seite (wie aktuell) oder den Startpunkt abfrägt nach dem Inhalt.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  8. #8
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.291

    Standard

    Ein IVW Pixel muss auf jeder Seite ausgegeben werden. Allerdings mit unterschiedlichen Werten.

    Startseite z.B. "home"
    Nachrichten z.B. "news"

    Deshalb brauche ich die Eingabeoption bei jeder Seite. Eine Vererbung von root, falls nichts eingegeben wird, wäre natürlich schön....übersteigt aber meine Fähigkeiten

    Das mit den Hooks muss ich mir noch mal anschauen...da bin ich damals (schon lange her) nicht wirklich durchgestiegen.

    VG

  9. #9
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    Ja gut, dieser Wert muss bei Piwik ja auch ausgegeben werden.

    Kannst du denn mal 2-3 Beispiele schreiben wie dieses Pixel bzw. der komplette Code pro Seite aussehen muss?
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  10. #10
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.291

    Standard

    So sieht ein IVW Tag aus. Bei diesem Beispiel "mu_cityguide"


    HTML-Code:
    <script type="text/javascript">
      if('http:' == document.location.protocol){
        var IVW = "http://xxx.ivwbox.de/cgi-bin/ivw/CP/mu_cityguide";
        document.write('<i' + 'mg s' + 'rc="' + IVW + '?r=' + escape(document.referrer) + '&amp;d='
                     + (Math.random() * 100000) + '" width="1" height="1" alt="szmtag"/>');
      }
      </script>
      <noscript><div><img alt="szmtag" height="1" width="1"  src="//xxx.ivwbox.de/cgi-bin/ivw/CP/mu_cityguide"/></div></noscript>
    Geändert von Kahmoon (19.05.2014 um 12:59 Uhr)

  11. #11
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    als Hook würde sich anbieten
    Code:
    $GLOBALS['TL_HOOKS']['parseFrontendTemplate']
    hier ein kleines Beispiel
    Angehängte Dateien Angehängte Dateien
    Geändert von magicsepp (20.05.2014 um 19:39 Uhr)

  12. #12
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.291

    Standard

    Schaut gut aus...auch wenn ich es auf Anhieb nicht verstehe . Aber ich schau es mir nachher mal in Ruhe an.

    VG

  13. #13
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    Hab das Beispiel in der zwischenzeit noch einwenig ergänzt,
    die Anwenderkennung ist jezt unter den Einstellungen und bei den Seiten kann man das Tag abschalten.

    Die Frage ist, ob es Sinn macht den Code auch konfigurierbar zur machen oder ob der SeitenTitel ausreicht?

    Viele Grüße

  14. #14
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.291

    Standard

    Den Titel braucht es eigentlich gar nicht. Das IVW Tag darf maximal 12 bzw 15 Zeichen lang sein und darf kein Leerzeichen haben. Daher ein Eingabefeld mit nur Text.

    Code via Template konfigurierbar wäre nice...erst vor kurzem hat sich das Codeschnipsel geändert.

    Edit:
    Ach ja..das ganze darf nicht im Head aufgerufen werden. Hier wird ja wirklich ein img Tag erzeugt. Das gehört im Idealfall ans Ende der Seite.

    VG
    Geändert von Kahmoon (20.05.2014 um 15:03 Uhr)

  15. #15
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    hab das Beispiel oben mal ausgetauscht
    - ein template hab ich nicht verwendet dafür kann man die szm_tag.Php ja anpassen
    - Version 2 Code snippet vorbereitet
    - die Id ist unter den Einstellungen und der Code bei der jeweiligen Seite

  16. #16
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.291

    Standard

    Danke :-)

    Wenn ich mir die Dateien anschaue hast du es generell unter Settings (Bereich Analytics) gepackt und das Feld wird in der Struktur nur angezeigt wenn es bei Einstellungen aktiviert ist!?

    Jetzt hab ich aber wieder nichts gelernt, da du es jetzt gemacht hast




    VG
    Geändert von Kahmoon (21.05.2014 um 08:35 Uhr)

  17. #17
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    Wollte deinen Lernerfolg nicht bremsen

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
  •