Ergebnis 1 bis 22 von 22

Thema: Symfony 4 - Parameter für Html-Frontend-Module

  1. #1
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard Symfony 4 - Parameter für Html-Frontend-Module

    Moin,

    ich hoffe ich bin hier in der richtigen Kategorie mit meiner Frage gelandet.

    Mir kam die Frage, ob es bzw. wie es möglich ist Parameter an ein Frontend-Modul zu übergeben?
    Konkret habe ich mir ein Frontend-Modul nach dieser offiziellen Anleitung gebaut:
    https://docs.contao.org/dev/framewor...t-end-modules/.

    Das funktioniert soweit wunderbar, ich habe mein Template und ich kann Daten aus der Datenbank über meinen Symfony-Controller dort mit einfließen lassen
    Im Contao-Backend kann ich das Modul in meinem Theme einbauen und als Modul in einen Artikel einbinden, soweit so gut.
    Ebenso kann ich das Template per file-insert-tag einbinden. Normalerweise könnte ich per file-insert-tag ja auch Query-Parameter mit anhängen, so z.B.:
    Code:
    {{file::mod_some_example3.php?arg1=val}}
    Hier handelt es sich aber um kein php-file, sondern um ein html5-Template (siehe Anleitung), wo ich eigentlich keine Parameter mitgeben kann.
    Wenn ich das Template zu einem php-file mache, komme ich zwar in meinem Controller an, sehe aber keine Parameter in meinem Request-Object und Contao / Symfony
    meckert, dass er mein Template nicht findet, weil vermutlich nach einem html5-Template gesucht wird. Da ich ein Request-Object in meinem Controller habe,
    würde ich annehmen, dass ich hier auch Parameter übergeben kann und im PHP-Code entsprechend nutzen kann.

    Hat hier vielleicht Jemand eine Lösung hier für?
    Zweck des ganzen soll es sein, Frontend-Module mit Parametern zu versehen, so dass ich im Controller bestimmen kann, welche Daten ins Template gerendert werden sollen.
    Als simples, fiktives Beispiel: Ich möchte Personen (Daten aus der Db) in meinem Template anzeigen, aber nur die mit Nachnamen "A-L".
    Wenn ich nun die Personen "N-Z" ausgeben möchte, würde ich das gerne per Parameter machen, anstatt für diese Personen ein weiteres Modul / Template anzulegen.

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

    Standard

    Die Parameter holst du dir einfach aus dem Request Objekt.

  3. #3
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Hi Spooky,

    ja das würde ich gerne, aber der Parameter "test" ist nicht im Request-Objekt....

    Ich habe das hier vor:
    Code:
    {{file::mod_some_example3.html?test=1}}
    Normalerweise würde ich "test" unter "$request->query" erwarten , aber dort ist er nicht und auch sonst nirgends im Request-Objekt ($GLOBALS['_GET'] ist ebenfalls leer).
    Es sieht so aus, als wenn jegliche Parameter einfach ignoriert werden.

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    Ich habe das hier vor:
    Code:
    {{file::mod_some_example3.html?test=1}}
    Mit diesem Insert Tag bindest du Templates ein und kannst diesen Templates einen Parameter mitgeben. Deine ursprüngliche Frage bezog sich aber auf ein Frontend Modul.

  5. #5
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Sobald ich dieses Template einbinde per Insert-Tag, lande ich doch im Backend in meinem Controller meines Frontend-Moduls...
    Aber unabhängig von den Contao-Termini funktioniert es nicht.

    Bildschirmfoto 2020-11-10 um 14.48.09.png

    Ich habe mein Template in einem Artikel als File-Insert-Tag und einmal als Modul eingebunden.
    Beim File-Insert-Tag gebe ich Parameter mit, die kommen aber im Controller vom Frontend-Modul-Controller nicht an.

    Bei der zweiten Variante, die ich als Modul eingebunden habe, wüsste ich nicht mal wie ich Parameter mitgebe (weswegen ich mich erstmal auf das File-Insert-Tag konzentriert habe).

    So sieht mein Frontend-Module-Controller aus:
    PHP-Code:
    namespace App\Controller\FrontendModule;

    use 
    Contao\CoreBundle\Controller\FrontendModule\AbstractFrontendModuleController;
    use 
    Contao\CoreBundle\ServiceAnnotation\FrontendModule;
    use 
    Contao\ModuleModel;
    use 
    Contao\Template;
    use 
    Symfony\Component\HttpFoundation\Request;
    use 
    Symfony\Component\HttpFoundation\Response;

    /**
     * @FrontendModule("my_example",
     *   category="miscellaneous",
     *   template="mod_some_example3",
     *   renderer="forward"
     * )
     */
    class ExampleController extends AbstractFrontendModuleController
    {
        protected function 
    getResponse(Template $templateModuleModel $modelRequest $request): ?Response
        
    {
            
    $em $this->getDoctrine()->getManager();
            return 
    $template->getResponse();
        }

    Im Request-Objekt ist leider kein Parameter zu sehen, was mache ich hier falsch?!?!?
    Geändert von buddy274 (10.11.2020 um 14:57 Uhr)

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

    Standard

    Wie gesagt, mit dem {{file::*}} Insert-Tag kannst du Templates einbinden. Aber du willst doch ein Frontend Modul umsetzen?

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    So sieht mein Frontend-Module-Controller aus:
    Die Angabe renderer="forward" kannst du entfernen, da das ohnehin dem Default entspricht.

  8. #8
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Ja, bin grad zu blind gewesen. Hatte beides eingebunden und habe nicht mehr an das eingebundende Modul gedacht. Hab deswegen fälschlicherweise angenommen,
    dass ich durch den File-Insert auch in meinen Controller komme, was natürlich Quatsch ist. Dann ist auch klar, dass ich keine Paramter sehe

    Ok, dann verstehe ich jetzt auch deine Konfusion zu meinen Aussagen
    Dann ignorieren wir mal den File-Insert. Wie könnte ich dem Modul nun Parameter mitgeben?


    Zitat Zitat von Spooky Beitrag anzeigen
    Die Angabe renderer="forward" kannst du entfernen, da das ohnehin dem Default entspricht.
    Alles klar.

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    JWie könnte ich dem Modul nun Parameter mitgeben?
    Ich denke du musst zuerst mal definieren bzw. erklären, was du mit "Parameter" meinst. Normalerweise meint man damit ja bspw. GET Parameter, die man an die URL hängt: https://example.com/foobar.html?someparameter=foo
    An den Wert dieses Parameters kommst du dann bspw. mit $request->query->get('someparameter');

    Nachdem du aber das Beispiel mit dem {{file::*}} Insert-Tag genannt hast, wo du Pseudo-Parameter direkt im Backend angeben kannst, frage ich mich, was du denn eigentlich brauchst. Definiere daher mal konkret die Aufgabenstellung.

  10. #10
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Eigentlich will ich Html-Snippets / Templates im Symfony Backend in einem Controller mit Daten versorgen und diese dann in Contao Artikel einbinden.
    Hier bin ich auf die Frontend-Module gestoßen und habe mir mal eins zum Testen gebastelt.

    Nun habe ich mein Frontend-Modul in einem Artikel eingebunden (siehe Screenshot).
    Dies funktioniert soweit. Nun würde ich gerne dem FrontendModuleController noch Parameter mitgeben, um die Ausgabe zu variieren und nicht immer ein neues Modul mit einem neuen Controller anzulegen,
    welche prinzipiell das gleiche tun, nur vielleicht etwas andere Daten anzeigen sollen.

    Ich denke du musst zuerst mal definieren bzw. erklären, was du mit "Parameter" meinst. Normalerweise meint man damit ja bspw. GET Parameter, die man an die URL hängt: https://example.com/foobar.html?someparameter=foo
    An den Wert dieses Parameters kommst du dann bspw. mit $request->query->get('someparameter');
    Ich bin vorher, wie gesagt, gedanklich etwas falsch abgebogen mit dem Insert-Tag, wo ich versucht habe einen Get-Parameter mitzugeben, in der fälschlichen Annahme,
    dass dieses Tag dann auch zu meinem Controller führt. Führte es scheinbar auch, aber nur weil ich mein Modul noch eingebunden hatte...

    Genau, da der FrontendModuleController ein Request-Objekt hat, habe ich angenommen dass man diesem auch (wie auch immer) Parameter mitgeben kann.
    Die Frage ist nur wie? Ich hätte gedacht, dass man z.B. beim Einbinden in den Artikel evtl. noch Parameter eingeben kann oder es einen anderen Weg gibt.
    Geändert von buddy274 (10.11.2020 um 16:42 Uhr)

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

    Standard

    Sorry, ich verstehe es immer noch nicht. Wie du Parameter an eine URL anhängst weißt du ja (denke ich, siehe mein Beispiel).

    Wie gesagt, beschreibe die Aufgabenstellung genauer, vielleicht verfolgst du den falschen Ansatz und willst in Wirklichkeit ein Inhaltselement erstellen?

  12. #12
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Ja, vielleicht bin ich auf dem Holzweg. Ich bin auch, wie gesagt, auch kein Contao-Experte und muss mich hier erstmal reinfuchsen.
    Vielleicht ist es auch ein Inhaltselement, was ich brauche?!?
    Letztendlich will ich Html-Snippets mit Daten füllen und diese sollen variieren können, dazu würde ich Parameter nehmen wollen.
    Das Befüllen, möchte im Symfony Backend in meinem Controller machen.

    Ich mache mal ein kurzes Beispiel:
    - Ich baue ein FE-Modul X, welches ein HTML-Template füllt (später eher Twig, aber das ist erstmal egal), um Personen anzuzeigen
    - Artikel A bindet Modul X ein -> zeige Personen von A-L
    - Artikel B bindet Modul X ein -> zeige Personen von M-Z

    Hier hätte ich üblicherweise mit einem Parameter gearbeitet, zumal der Controller des FE-Moduls ja auch ein Request-Objekt hat, um Parameter auszulesen.
    Aber wie würde ich dem Controller Parameter aus Contao mitgeben? Wenn ich das Modul einbinde, ist es ja anscheinend immer das identische Modul, ohne dass ich variable Dinge tun kann.

    Ich hoffe es ist etwas verständlich, was ich hier vorhabe...
    Geändert von buddy274 (10.11.2020 um 16:59 Uhr)

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    Ja, vielleicht bin ich auf dem Holzweg. Ich bin auch, wie gesagt, auch kein Contao-Experte und muss mich hier erstmal reinfuchsen.
    Vielleicht ist es auch ein Inhaltselement, was ich brauche?!?
    Letztendlich will ich Html-Snippets mit Daten füllen und diese sollen variieren können, dazu würde ich Parameter nehmen wollen.
    Das Befüllen, möchte im Symfony Backend in meinem Controller machen.

    Ich mache mal ein kurzes Beispiel:
    - Ich baue ein FE-Modul X, welches ein HTML-Template füllt (später eher Twig, aber das ist erstmal egal), um Personen anzuzeigen
    - Artikel A bindet Modul X ein -> zeige Personen von A-L
    - Artikel B bindet Modul X ein -> zeige Personen von M-Z

    Hier hätte ich üblicherweise mit einem Parameter gearbeitet, zumal der Controller des FE-Moduls ja auch ein Request-Objekt hat, um Parameter auszulesen.
    Aber wie würde ich dem Controller Parameter aus Contao mitgeben?
    So wie du dein Vorhaben jetzt beschrieben hast, wäre das ein Modul, wo du im Backend beim Modul einstellen kannst, welche Range ausgegeben werden soll. Du erzeugst dann also zwei Module: beim ersten Modul stellst du ein, dass "A-L" ausgegeben werden soll (wie auch immer du das realisierst, bspw. einfach mit zwei Textfeldern, oder es sind fix vorgegebene Werte in einem Select, etc.) und beim zweiten Modul stellst du ein, dass "M-Z" ausgegeben werden soll. Dann bindest du das erste Modul im Artikel A ein und das zweite Modul im Artikel B.

    Oder du machst es als Inhaltselement, mit den selben Konfigurationsmöglichkeiten. Wann man ein Modul umsetzt und wann ein Inhaltselement kann man nicht pauschal sagen. Generell würde ich sagen, dass jegliche spezielle Funktionalität, die du einmal einstellen willst und dann ein oder mehrmals ausgeben lässt in einem Seitenlayout oder auf einer bestimmten Seite auf einer bestimmten Stelle. Inhaltselemente hingegen verwendet man typischerweise für Inhalte die von den Redakteur*innen einstellbar oder befüllbar sein sollen und wo sich ein Inhalt oder eine Konfiguration nicht an mehreren Stellen wiederholt. Wobei auch letzteres für Inhaltselemente nicht unbedingt der Fall sein muss (man könnte ja zB auch mit Nodes arbeiten, wo dann ein Node an mehreren Stellen ausgegeben wird, per Modul oder auch per Inhaltselement).


    Zitat Zitat von buddy274 Beitrag anzeigen
    Wenn ich das Modul einbinde, ist es ja anscheinend immer das identische Modul, ohne dass ich variable Dinge tun kann.
    Natürlich kannst du variable Dinge tun. Die Ausgabe eines Moduls hängt ja oft einfach vom Request ab. Beispielsweise zeigt das Nachrichtenlesermodul ja immer eine bestimmte Nachricht anhand des Pfades des Requests an. Oder wenn du ein Nachrichtenlistenmodul mit Pagination hast, hängt ja die angezeigte Seite von einem Query Parameter ab.

  14. #14
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Danke dir für die Erklärung. Dann weiss ich nicht, ob ein Frontend-Modul wirklich das richtige für mich ist

    In diesem Projekt soll es zwar auch News und Artikel mit statischem Inhalt geben, aber die sollen wie gewöhnlich in Contao von Redakteuren gepflegt werden
    und wären unabhängig von "meinen" Templates, die ich in Symfony zusammenbaue.

    Am liebsten wäre mir einfach meine eigene Route mit meinem eigenen Controller zu haben, welche mir Html generiert (also der "normale" Symfony-Weg).
    Den "Call" / die Einbindung zu dieser Route würde ich gerne mit einem Standard-Contao-Inhaltselement realisieren (analog vielleicht zum File-Tag-Insert o.ä.).
    Sprich das Html-Ergebnis einfach in das Inhalts-Element reinzuschreiben. Dieses Html soll auch nicht von Redakteuren pflegbar sein.
    Somit hätte ich die volle Kontrolle über den Inhalt von Symfony-Seite aus, was in diesem Falle völlig ok wäre.

    Einen, unschönen Weg, das so umzusetzen, sehe ich mit einem Inhaltselement, welches sich per JS und Ajax über die Route den Inhalt holt.
    Aber irgendwie scheint mir das nicht die beste Lösung zu sein.

    Ich habe aber gerade noch eine andere Idee, um ein individuelles Template in Symony zu rendern und in Contao einzubinden.
    Vielleicht könntest du mir sagen, was du davon hältst und ob es hierzu vielleicht doch eine Contao-spezifische Lösung gibt, damit ich nicht wieder 1-2 Tage in die falsche Richtung laufe

    1. Ich erstelle mir eine simple PHP-Datei und binde diese per File-Tag-Insert in einen Contao-Artikel ein (nennen wir sie mal entry.php)
    2. Der entry.php kann ich Query-Parameter mitgeben
    3. Ich baue mir eine PHP-Klasse (keinen Controller) und bestücke die per DI mit Entity Manager, Twig ....was immer ich brauche (nennen wir sie Template.php)
    4. In der entry.php instanziiere ich die Template.php und übergebe ihr die Parameter
    5. Die Tempate.php guckt sich die Parameter an, holt entsprechende Daten aus der Db und baut Html-Code zusammen
    6. Die entry.php bekommt das zusammengesetzte Html und gibt diese als Ergebnis an den Contao-Artikel / -Inhaltselement zurück

    Klingt vielleicht etwas umständlich, aber so könnte ich per File-Tag-Insert immer genau das Html bekommen, welches ich an einer bestimmten Stelle benötige.
    Es hätte auch den Vorteil, dass ich wahrscheinlich gar kein Frontend-Modul benötige und auch hier keine Derivate mit verschiedenen Optionen davon erstellen muss.
    Vermutlich würde das so funktionieren, oder?

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    In diesem Projekt soll es zwar auch News und Artikel mit statischem Inhalt geben, aber die sollen wie gewöhnlich in Contao von Redakteuren gepflegt werden
    und wären unabhängig von "meinen" Templates, die ich in Symfony zusammenbaue.
    Das mit den Nachrichtenmodulen habe ich ja auch nur als Beispiel genannt



    Zitat Zitat von buddy274 Beitrag anzeigen
    Am liebsten wäre mir einfach meine eigene Route mit meinem eigenen Controller zu haben, welche mir Html generiert (also der "normale" Symfony-Weg).
    Den "Call" / die Einbindung zu dieser Route würde ich gerne mit einem Standard-Contao-Inhaltselement realisieren (analog vielleicht zum File-Tag-Insert o.ä.).
    Sprich das Html-Ergebnis einfach in das Inhalts-Element reinzuschreiben. Dieses Html soll auch nicht von Redakteuren pflegbar sein.
    Somit hätte ich die volle Kontrolle über den Inhalt von Symfony-Seite aus, was in diesem Falle völlig ok wäre.
    Warum willst du das so machen? Ob du jetzt einen regulären Controller oder einen Fragment Controller (Inhaltselement oder Modul) machst ist doch aus dieser Sicht komplett gleich?



    Zitat Zitat von buddy274 Beitrag anzeigen
    Einen, unschönen Weg, das so umzusetzen, sehe ich mit einem Inhaltselement, welches sich per JS und Ajax über die Route den Inhalt holt.
    Aber irgendwie scheint mir das nicht die beste Lösung zu sein.
    Nein, ist es auch definitiv nicht



    Zitat Zitat von buddy274 Beitrag anzeigen
    Einen, unschönen Weg, das so umzusetzen, sehe ich mit einem Inhaltselement, welches sich per JS und Ajax über die Route den Inhalt holt.
    Aber irgendwie scheint mir das nicht die beste Lösung zu sein.

    Ich habe aber gerade noch eine andere Idee, um ein individuelles Template in Symony zu rendern und in Contao einzubinden.
    Vielleicht könntest du mir sagen, was du davon hältst und ob es hierzu vielleicht doch eine Contao-spezifische Lösung gibt, damit ich nicht wieder 1-2 Tage in die falsche Richtung laufe

    1. Ich erstelle mir eine simple PHP-Datei und binde diese per File-Tag-Insert in einen Contao-Artikel ein (nennen wir sie mal entry.php)
    2. Der entry.php kann ich Query-Parameter mitgeben
    3. Ich baue mir eine PHP-Klasse (keinen Controller) und bestücke die per DI mit Entity Manager, Twig ....was immer ich brauche (nennen wir sie Template.php)
    4. In der entry.php instanziiere ich die Template.php und übergebe ihr die Parameter
    5. Die Tempate.php guckt sich die Parameter an, holt entsprechende Daten aus der Db und baut Html-Code zusammen
    6. Die entry.php bekommt das zusammengesetzte Html und gibt diese als Ergebnis an den Contao-Artikel / -Inhaltselement zurück

    Klingt vielleicht etwas umständlich, aber so könnte ich per File-Tag-Insert immer genau das Html bekommen, welches ich an einer bestimmten Stelle benötige.
    Es hätte auch den Vorteil, dass ich wahrscheinlich gar kein Frontend-Modul benötige und auch hier keine Derivate mit verschiedenen Optionen davon erstellen muss.
    Vermutlich würde das so funktionieren, oder?
    Warum willst du diesen komplizierten und ineffizienten Weg gehen? Mach doch einfach einen Fragment Controller, so wie vorgesehen.

  16. #16
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Warum willst du das so machen? Ob du jetzt einen regulären Controller oder einen Fragment Controller (Inhaltselement oder Modul) machst ist doch aus dieser Sicht komplett gleich?
    Warum willst du diesen komplizierten und ineffizienten Weg gehen? Mach doch einfach einen Fragment Controller, so wie vorgesehen.
    An sich sehe ich das nicht viel anders. Die vom Contao-Framework vorgebenen Backend-Komponenten funktionieren ja...wenn man sie denn erstmal zum Laufen gebracht hat
    Aber mir fehlt da irgendwie die Flexibilität / einfach Parametrisierbarkeit.

    So wie du dein Vorhaben jetzt beschrieben hast, wäre das ein Modul, wo du im Backend beim Modul einstellen kannst, welche Range ausgegeben werden soll. Du erzeugst dann also zwei Module: beim ersten Modul stellst du ein, dass "A-L" ausgegeben werden soll (wie auch immer du das realisierst, bspw. einfach mit zwei Textfeldern, oder es sind fix vorgegebene Werte in einem Select, etc.) und beim zweiten Modul stellst du ein, dass "M-Z" ausgegeben werden soll. Dann bindest du das erste Modul im Artikel A ein und das zweite Modul im Artikel B.
    Brauch ich hier ein Backend-Modul? Und wenn ein Frontend-Modul, wo kann ich solche Inputfelder definieren? Vielleicht ist die Frage für nen Contao-Spezi relativ einfach,
    aber ich blicke da im Moment noch nicht ganz durch.

    So wie du dein Vorhaben jetzt beschrieben hast, wäre das ein Modul, wo du im Backend beim Modul einstellen kannst, welche Range ausgegeben werden soll. Du erzeugst dann also zwei Module: beim ersten Modul stellst du ein, dass "A-L" ausgegeben werden soll (wie auch immer du das realisierst, bspw. einfach mit zwei Textfeldern, oder es sind fix vorgegebene Werte in einem Select, etc.) und beim zweiten Modul stellst du ein, dass "M-Z" ausgegeben werden soll. Dann bindest du das erste Modul im Artikel A ein und das zweite Modul im Artikel B.

    Oder du machst es als Inhaltselement, mit den selben Konfigurationsmöglichkeiten. Wann man ein Modul umsetzt und wann ein Inhaltselement kann man nicht pauschal sagen. Generell würde ich sagen, dass jegliche spezielle Funktionalität, die du einmal einstellen willst und dann ein oder mehrmals ausgeben lässt in einem Seitenlayout oder auf einer bestimmten Seite auf einer bestimmten Stelle. Inhaltselemente hingegen verwendet man typischerweise für Inhalte die von den Redakteur*innen einstellbar oder befüllbar sein sollen und wo sich ein Inhalt oder eine Konfiguration nicht an mehreren Stellen wiederholt. Wobei auch letzteres für Inhaltselemente nicht unbedingt der Fall sein muss (man könnte ja zB auch mit Nodes arbeiten, wo dann ein Node an mehreren Stellen ausgegeben wird, per Modul oder auch per Inhaltselement).
    Hier sehe ich ingesamt wieder neuen Einarbeitungsaufwand und habe am Ende vielleicht nicht ganz was ich haben möchte.
    Schnell mal nen Parameter, am besten direkt im Inhaltselement per Insert-Tag, ist doch schon sehr schnell und flexibel.

    Generell bin ich auch immer kein Freund davon in einem Projekt einfach "loszulaufen" und immer auf neue Stolpersteine zu stoßen.
    Ich überlege mir lieber vorher alles genau, um dann auch die "beste" Lösung zu haben.
    Irgendwie nicht ganz so leicht abzuschätzen, was nun am besten für meine Wünsche passt

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    Brauch ich hier ein Backend-Modul? Und wenn ein Frontend-Modul, wo kann ich solche Inputfelder definieren? Vielleicht ist die Frage für nen Contao-Spezi relativ einfach,
    aber ich blicke da im Moment noch nicht ganz durch.
    Dazu passt du das DCA von tl_module an, damit dein Modul zusätzliche Felder hat, welche du in der Palette für dein Modul im Backend ausgeben lässt.

  18. #18
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Also ein Backend-Modul, richtig?

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    Also ein Backend-Modul, richtig?
    Nein, ein Backend Modul ist etwas anderes.

  20. #20
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Nein, ein Backend Modul ist etwas anderes.
    Eben, deswegen hab ich mich schon gewundert. Ich werd das mal versuchen mit der DCA. Vielen Dank für deine Tipps!

  21. #21
    Contao-Nutzer
    Registriert seit
    26.07.2016.
    Beiträge
    47

    Standard

    Eine Frage habe ich hier zu noch. Ich habe folgendes in der Contao Doku zu Frontend-Modulen gefunden https://docs.contao.org/dev/framewor...t-end-modules/:

    PHP-Code:
    // contao/dca/tl_module.php
    use App\Controller\FrontendModule\ExampleController;

    $GLOBALS['TL_DCA']['tl_module']['palettes'][ExampleController::TYPE] = 
        
    '{title_legend},name,type;{redirect_legend},jumpTo'

    Hier steht, dass man dies in die "contao/dca/tl_module.php" schreiben soll, die gibt es aber in meinem Projekt nicht.
    Sehe noch andere installierte Module, die eine "tl_module.php" haben unter "public/system/modules", aber mein Modul ist hier natürlich nicht vertreten.
    Ich nehme mal an, dass ich hier keinen eigenen Ordner erstellen soll und meine "tl-module.php" da reinlege, oder?
    Wo ist der richtige Ort für meine DCA-Anpassung / "tl-module.php" für mein Frontend-Modul?

    ...gleiches gilt natürlich auch für das Language-File.

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

    Standard

    Zitat Zitat von buddy274 Beitrag anzeigen
    Hier steht, dass man dies in die "contao/dca/tl_module.php" schreiben soll, die gibt es aber in meinem Projekt nicht.
    Siehe https://docs.contao.org/dev/getting-...ent/#structure
    When customizing your web application, the following files and folders will usually be of interest. Some of those will need to be created manually:

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
  •