Ergebnis 1 bis 8 von 8

Thema: PalettenManipulator richtig einsetzen. Wie?

  1. #1
    Contao-Nutzer Avatar von theMatrix
    Registriert seit
    19.09.2013.
    Ort
    Frankfurt
    Beiträge
    154

    Frage PalettenManipulator richtig einsetzen. Wie?

    Hallo liebe Entwickler Team,

    ich will eine alte Erweiterung aus der Contao 3.5 für Contao 4.9 optimieren.

    Ich hatte immer die Paletten mit str_replace manipuliert gehabt.
    PHP-Code:
    // selector
    $GLOBALS['TL_DCA']['tl_page']['palettes']['__selector__'][] = 'addCanonical';
    // palettes
    $GLOBALS['TL_DCA']['tl_page']['palettes']['root'] =  str_replace('{global_legend:hide}''{canonical_legend:hide},addCanonical;{global_legend:hide}'$GLOBALS['TL_DCA']['tl_page']['palettes']['root']);
    // Subpalettes
    $GLOBALS['TL_DCA']['tl_page']['subpalettes']['addCanonical'] = 'addCanonicalDomain, addCanonicalURL, selectCanonicalPage'
    Das soll jetzt über PaletteManipulator einfache gelöst werden.

    Wenn ich es richtig verstehe, kann man mit dem PalettenManipulator nur die subpalettes erweitern und Legenden hinzufügen.

    Mein Problem ist, dass ich nicht weiß, wie ich mit dem PalettenManipulator folgende Punkte umsetzen kann:
    • einen __selector__ generieren
    • Palette root in tl_page manipulieren
    • Palette rootfallback in tl_page manipulieren


    Wie kann ich diese drei Punkte oben verwirklichen?

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    __selector__ bleibt gleich, das ist ja nur ein Array. Auch die Definition der neuen Subpalette bleibt gleich, weil du ja keine existierende Palette manipulierst.

    Zum Rest:
    PHP-Code:
    use Contao\CoreBundle\DataContainer\PaletteManipulator;

    PaletteManipulator::create()
        ->
    addLegend('canonical_legend''global_legend'PaletteManipulator::POSITION_BEFORE)
        ->
    addField('addCanonical''canonical_legend'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('root''tl_page')
        ->
    applyToPalette('rootfallback''tl_page')


  3. #3
    Contao-Nutzer Avatar von theMatrix
    Registriert seit
    19.09.2013.
    Ort
    Frankfurt
    Beiträge
    154

    Daumen hoch Danke!

    Super! Vielen Dank für dein Feedback.

    Ich probiere es und melde mich ggf. falls was sein sollte.

  4. #4
    Contao-Nutzer Avatar von theMatrix
    Registriert seit
    19.09.2013.
    Ort
    Frankfurt
    Beiträge
    154

    Standard

    Ich habe jetzt folgendes gemacht und bekomme folgenden Fehler Subpalette "addCanonical" not found in table "tl_page"

    Code sieht wie folgt aus:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_page']['palettes']['__selector__'][] = 'addCanonical';

    PaletteManipulator::create()
     ->
    addLegend('canonical_legend''global_legend'PaletteManipulator::POSITION_BEFORE)
     ->
    addField('addCanonical''canonical_legend'PaletteManipulator::POSITION_APPEND)
     ->
    applyToPalette('root''tl_page')
     ->
    applyToPalette('rootfallback''tl_page')
    ;

    PaletteManipulator::create()
     ->
    addField('addCanonicalDomain''addCanonical')
     ->
    applyToSubpalette('addCanonical''tl_page'// an dieser Stelle scheitert es

    Warum findet der addCanonical nicht, obwohl es oben definiert wird?
    Geändert von theMatrix (16.12.2020 um 13:13 Uhr)

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Du hast nur den __selector__ definiert, aber keine Subpalette.

  6. #6
    Contao-Nutzer Avatar von theMatrix
    Registriert seit
    19.09.2013.
    Ort
    Frankfurt
    Beiträge
    154

    Standard

    Ich dachte das der Palettenmanipulator den Selector automatisch als Subpalette erkennt, da Selector je die Felder darunter lädt.

    Ist es den ungefähr so?

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_page']['subpalettes'][] = 'addCanonical'
    oder gibt es dafür eine andere Variante?

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Nein, ich glaube du misverstehst das Konzept. Mit dem PaletteManipulator manipulierst du bereits existierende Paletten.

    Neue Paletten (egal ob reguläre oder Subpaletten) legst du nach wie vor so wie üblich an.

  8. #8
    Contao-Nutzer Avatar von theMatrix
    Registriert seit
    19.09.2013.
    Ort
    Frankfurt
    Beiträge
    154

    Standard

    Ja, Genau. Das habe ich eben so verstanden, dass es automatisch geschieht. Dann muss ich eben anders umsetzen.
    Vielen Dank nochmal.

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
  •