Contao-Camp 2024
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 40 von 67

Thema: Ausgabe von Content Elementen

  1. #1
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard Ausgabe von Content Elementen

    Hallo zusammen,

    ich beginne gerade aufs neue mich in die Erweiterungsentwicklung mit Contao 4 (4.4.35) einzuarbeiten.
    Gerade möchte ich Contao um ein eigenenes Contentelement erweitern.
    Mehr oder weniger probiere ich gerade etwas herum. Aktuell geht es bei mir darum, quasi eine eigene Kopie des Headline Elements zu erstellen (als ein Contentelement nur mit einer Überschrift) und dies mit dem entsprechenden Template zu verknüpfen.

    Das hat soweit auch problemlos geklappt. Allerdings hapert es am Einfügen. Das neue Contentelement kann ich ganz normal auswählen und eine Überschrift hinzufügen. Das von mir hinterlegte Template wird ebenfalls gefunden und automatisch mit dem Element assoziert.
    Doch sehe ich zum einen nach dem Speichern in der Übersicht der Inhaltselemente keine Vorschau meines Eintrags. Hier steht zwar der Name meines Inhaltselements doch eine Vorschau (die eingetragene Überschrift), wie sie z.B. bei den vorhandenen Inhaltselementen angezeigt wird, erhalte ich nicht.
    Und leider wird auch im Frontend nichts ausgegeben.

    Kann mir hier vielleicht jemand weiterhelfen?

    Das neue Inhaltselement habe ich in der config über die TL_CTE hinzugefügt. Das hat ja auch problemlos geklappt.

    Den entsprechenden DCA habe ich (im tl_content) nur um eine Palette erweitert, da ich in meinem aktuellen Testfall noch keine neuen Elemente brauche.
    Dieser sieht aktuell so aus:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['palettes']['hlheadline'] = '{type_legend},type,headline;{template_legend:hide},customTpl;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID;{invisible_legend:hide},invisible,start,stop'
    Das Template welches ich hinterlegt habe ist das Standardtemplate welches auch im normalen ce_headline zum Einsatz kommt.

    Jemand eine Idee wo ich hier ansetzen könnte?

  2. #2
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Niemand der vielleicht eine Idee hat?

  3. #3
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.466
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Wie sieht denn deine ContentElement Klasse aus?
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  4. #4
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Du meinst die Erweiterung der TL_CTE in der config.php?

    Hier habe ich lediglich, die TL_CTE um das entsprechende, neue Element ergänzt:

    PHP-Code:
    $GLOBALS['TL_CTE']['texts']['hlheadline'] = 'Name\BundleName\hlheadline'
    Dies hat er ja auch richtig übernommen und zeigt mir die HLHeadline ja auch als neues Content Element an. Nur treten wie gesagt die erwähnten Probleme auf, dass im Backend die Inhaltsvorschau nichts anzeigt und auch keine Ausgabe im Frontend erfolgt...

  5. #5
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.466
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Ja die Frage war wie deine Klasse aussieht. Die hier: "Name\BundleName\hlheadline" muss ja existieren und Code enthalten.
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  6. #6
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Ich bin mir gerade nicht sicher, was genau du meinst.
    Die Dateien, die ich angelegt habe, sind eine config.php, die tl_content.php für die DCA Erweiterung, eine Languages und eine Template-Datei, und die übergeordnete Bundle.php.

    Ich habe mich versucht an den bestehenden Core-Elementen und anderen Erweiterungen zu orientieren. Aber scheinbar habe ich dann noch etwas vergessen?

  7. #7
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Du brauchst auch noch die Klasse, die das ContentElement selbst enthält. Diese klasse gibst Du mit

    Zitat Zitat von waldo Beitrag anzeigen
    PHP-Code:
    $GLOBALS['TL_CTE']['texts']['hlheadline'] = 'Name\BundleName\hlheadline'

    an. D.h. (wie in #5 von @Toflar geschrieben) muss die angegebene Klasse Name\BundleName\hlheadline existieren, ein ContentElement bereitstellen und vom Autoloader gefunden werden. Das fehlt bei Dir noch.

    Zitat Zitat von waldo Beitrag anzeigen
    Ich habe mich versucht an den bestehenden Core-Elementen und anderen Erweiterungen zu orientieren. Aber scheinbar habe ich dann noch etwas vergessen?
    Da wäre das z.B. https://github.com/contao/core-bundl...ntHeadline.php
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  8. #8
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Richtig, genau. Die Datei hatte ich noch in einem anderen Versuch von mir. Hier hatte ich allerdings keinerlei Veränderung. Mit dieser Klasse führte es zur selben Problematik.

    Die Datei sah bei mir so aus:

    PHP-Code:
    <?php


    namespace Name\BundleName;


    class 
    hlheadline extends ContentElement
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'ce_hlheadline';
        
    /**
         * Generate the content element
         */
        
    protected function compile() {}
    }
    class_alias(hlheadline::class, 'hlheadline');

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

    Standard

    In welchem Ordner befindet sich die Klasse? Hast du das autoloading in der composer.json entsprechend eingestellt?

  10. #10
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Die Klasse befindet sich im Ordner elements. Dieser liegt (wie auch die anderen Ordner wie config und dca) in: src/Name/BundleName/Resources/contao

    In der composer.json habe ich hinzugefügt:

    PHP-Code:
    "autoload": {
            
    "psr-4": {
                
    "Name\\BundleName\\""src/"
            
    }
        }, 

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

    Standard

    Das ist der falsche Ordner. Ich würde dir folgendes empfehlen:

    src/ContentElement/Headline.php
    PHP-Code:
    <?php

    namespace Name\BundleName\ContentElement;

    class 
    Headline extends \Contao\ContentElement
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'ce_hlheadline';

        
    /**
         * Generate the content element
         */
        
    protected function compile() {}
    }

    app/Resources/contao/config/config.php oder src/Resources/contao/config/config.php (je nach dem ob du nun ein wiederverwendbares Bundle programmierst)
    PHP-Code:
    $GLOBALS['TL_CTE']['texts']['hlheadline'] = \Name\BundleName\ContentElement\Headline::class; 
    Geändert von Spooky (24.03.2019 um 10:34 Uhr)

  12. #12
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Eine übergeordnete BundleName.php hatte ich zuvor in src/Name/BundleName mit folgendem Inhalt:

    PHP-Code:
    <?php
    namespace Name\BundleName;

    use 
    Symfony\Component\HttpKernel\Bundle\Bundle;

    class 
    BundleName extends Bundle
    {
    }
    Kannst du die Ordnerstruktur eventuell etwas näher erläutern? Ich verstehe noch nicht so ganz wieso nun der zusätzliche Ordner ContentElement (für die Headline.php) auftaucht und wieso die config.php nun unter app liegt?

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

    Standard

    In meinem Post war noch ein Fehler. Dein Name\BundleName Namespace befindet sich ja schon direkt im src/ Ordner.

    Prinzipiell ist es egal, wo sich deine Inhaltselementklasse befindet und wie diese heißt. Soll heißen: es ist dir überlassen. Wichtig ist nur, dass du die Inhaltselementklasse richtig registrierst und die Klasse vom Composer Autoloader laden lässt.

    Den Autoload und den PSR-4 Standard im Detail zu erklären würde jetzt zu weit führen. Jedenfalls hattest du das vorher falsch: deine Klasse war Name\BundleName\hlheadline - dem PSR-4 Standard nach und den Autoloading Anweisungen in deiner vorherigen composer.json zufolge, müsste sich die Klasse dann am folgenden Ort befinden: src/hlheadline.php

  14. #14
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Ich stehe da irgendwie gerade etwas auf dem Schlauch und bekomme das ganze auch generell irgendwie nicht mehr richtig geladen...

    Mit der Autoload muss ich also direkt auf die Klassen verweisen? Ich hatte es bisher so verstanden, dass ich damit auf den übergeordneten Ordner verweisen muss und alles weitere automatisch erkannt wird?
    In allen Erweiterungen, die ich mir so angeschaut hatte, wurde hier auch nur auf den src-Ordner verwiesen?

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

    Standard

    Zitat Zitat von waldo Beitrag anzeigen
    Mit der Autoload muss ich also direkt auf die Klassen verweisen?
    Nein, mit PSR-4 nicht.



    Zitat Zitat von waldo Beitrag anzeigen
    Ich hatte es bisher so verstanden, dass ich damit auf den übergeordneten Ordner verweisen muss und alles weitere automatisch erkannt wird?
    In allen Erweiterungen, die ich mir so angeschaut hatte, wurde hier auch nur auf den src-Ordner verwiesen?
    Genau.



    Zitat Zitat von waldo Beitrag anzeigen
    Ich stehe da irgendwie gerade etwas auf dem Schlauch und bekomme das ganze auch generell irgendwie nicht mehr richtig geladen...
    Hast du es nun so gemacht, wie von mir empfohlen?

  16. #16
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Die config.php habe ich folgendermaßen geändert:

    PHP-Code:
    <?php

    $GLOBALS
    ['TL_CTE']['texts']['hlheadline'] = \Name\BundleName\ContentElement\hlheadline::class;
    Das mit der "ContentElement"-Struktur habe ich allerdings noch nicht so ganz begriffen. Warum jetzt zusätzlich noch das ContentElement in der Struktur?

    Bisher hatte ich in meinem src-Ordner ja die Ordner "ContaoManager" und "Name" (hier liegt ja dann BundleName und darin alles weitere). Nach deiner Empfehlung sollte jetzt zusätzlich in src noch der Ordner ContentElement?

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

    Standard

    Zitat Zitat von waldo Beitrag anzeigen
    Die config.php habe ich folgendermaßen geändert:

    PHP-Code:
    <?php

    $GLOBALS
    ['TL_CTE']['texts']['hlheadline'] = \Name\BundleName\ContentElement\hlheadline::class;
    Ist das die einzige Änderung? Oder hast du auch die Klasse nach src/ verschoben?



    Zitat Zitat von waldo Beitrag anzeigen
    Das mit der "ContentElement"-Struktur habe ich allerdings noch nicht so ganz begriffen. Warum jetzt zusätzlich noch das ContentElement in der Struktur?
    Weil das so üblich ist. Du willst ja deinen Code übersichtlich strukturieren und bspw. nicht alle Klassen direkt im namespace Name\BundleName haben.



    Zitat Zitat von waldo Beitrag anzeigen
    Bisher hatte ich in meinem src-Ordner ja die Ordner "ContaoManager" und "Name" (hier liegt ja dann BundleName und darin alles weitere).
    Das wäre dann aber auch falsch, denn du hast in deiner composer.json ja folgendes geschrieben:
    Code:
        "autoload": {
            "psr-4": {
                "Name\\BundleName\\": "src/"
            }
        },
    Wenn du jetzt noch den Unterordner Name/BundleName in deinem src Ordner hast, dann würde der resultierende Namespace aller Klassen, die sich darin befinden, ja wie folgt lauten:
    PHP-Code:
    namespace Name\BundleName\Name\BundleName\... 

  18. #18
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Ist das die einzige Änderung? Oder hast du auch die Klasse nach src/ verschoben?
    Die BundleName.php habe ich nun auch in den src Ordner verschoben



    Zitat Zitat von Spooky Beitrag anzeigen

    Weil das so üblich ist. Du willst ja deinen Code übersichtlich strukturieren und bspw. nicht alle Klassen direkt im namespace Name\BundleName haben.



    Das wäre dann aber auch falsch, denn du hast in deiner composer.json ja folgendes geschrieben:
    Code:
        "autoload": {
            "psr-4": {
                "Name\\BundleName\\": "src/"
            }
        },
    Wenn du jetzt noch den Unterordner Name/BundleName in deinem src Ordner hast, dann würde der resultierende Namespace aller Klassen, die sich darin befinden, ja wie folgt lauten:
    PHP-Code:
    namespace Name\BundleName\Name\BundleName\... 
    Wie wäre es denn richtig? So habe ich es wie gesagt bei allen anderen Erweiterungen mir abgeschaut. Ich bin gerade ehrlich gesagt sowieso etwas verwirrt, da alles irgendwie von dem abweicht, was ich so in den Erweiterungen finde.

    Zur generellen Übersicht, meine aktuelle Ordnerstruktur sieht nun so aus:

    PHP-Code:
    src/
        
    ContaoManager/
            
    Plugin.php
        Name
    /
            
    BundleName/
                
    Resources/
                    
    contao/
                        
    config/
                            
    config.php
                        dca
    /
                            
    tl_content.php
                        elements
    /
                            
    hlheadline.php
                        languages
    /
                            
    de/
                                default.
    php
                        templates
    /
                            
    elements/
                                
    cl_hlheadline.html5
                BundleName
    .php 
    Geändert von waldo (24.03.2019 um 11:44 Uhr)

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

    Standard

    Zitat Zitat von waldo Beitrag anzeigen
    Ich bin gerade ehrlich gesagt sowieso etwas verwirrt, da alles irgendwie von dem abweicht, was ich so in den Erweiterungen finde.
    Nenne ein Beispiel.



    Zitat Zitat von waldo Beitrag anzeigen
    Wie wäre es denn richtig?
    Ist das nun ein lokales Bundle oder eines das du von composer installieren lässt?

  20. #20
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Beispielsweise hier

    Es ist ein lokales Bundle. Ich führe lediglich im Manager den Class Loader und den Installer für die Abhängigkeiten aus.

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

    Standard

    Zitat Zitat von waldo Beitrag anzeigen
    Beispielsweise hier
    Vergleiche die Ordnerstruktur mit deiner. Du hast es jedenfalls nicht so gemacht


    Zitat Zitat von waldo Beitrag anzeigen
    Es ist ein lokales Bundle. Ich führe lediglich im Manager den Class Loader und den Installer für die Abhängigkeiten aus.
    Bei einem lokalen Bundle ist die Vorgehensweise grundsätzlich anders - bzw. gibt es auch mehrere Möglichkeiten. Die empfohlene Struktur wäre folgende:

    composer.json
    Code:
        "autoload": {
            "psr-4": {
                "App\\": "src/"
            }
        },
    Code:
    app/
        config/
            config.yml
            services.yml
            routing.yml
        Resources
            contao/
                config/
                dca/
                languages/
    Code:
    src/
        BackendModule/
        ContentElement/
        DataContainer/
        FrontendModule/
        Model/
        Widget/
        .../
    So würde man eine "Bundle Less Application" umsetzen. Ein Contao Manager Plugin brauchst du nicht unbedingt dafür. All das wird es bald in der neuen Contao Dokumentaiton geben.

    Um den Einstieg zu erleichtern kannst du dir folgendes installieren:
    Code:
    composer require --dev inspiredminds/contao-maker-bundle
    Mit dem Command
    Code:
    vendor/bin/contao-console maker:contao-kickstart
    (https://github.com/inspiredminds/con...ntao-kickstart) wird alles nötige für die lokale Entwicklung angelegt.
    Geändert von Spooky (24.03.2019 um 12:59 Uhr)

  22. #22
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Ehrlich gesagt wird es für mich immer verwirrender...

    Mein gesamter Resources Ordner zieht also in den app/ Ordner um und ein eigenes Bundle (mit der Struktur Name/BundleName) entfällt komplett?
    Die Dateien config.yml, services.yml und routing.yml sind mir auch völlig neu.
    Genauso wie die ganzen Ordner BackendModule/, ContentElement/, DataContainer/, FrontendModule/, Model/, Widget/, die dann zusätzlich doch noch im src Ordner verbleiben.

    Ich würde mich gerne, wenn ich mal etwas neues benötige, an bestehenden Extensions orientieren, nur leider weiß ich mittlerweile nun garnicht mehr woran ich mich orientieren soll.
    Anfangs funktionierte ja zumindest das Laden der Erweiterung, nur eben mit den anfangs beschriebenen Problemen. Mittlerweile bekomme ich allerdings garnichts mehr geladen und weiß auch nun garnicht mehr, woran ich mich denn orientieren kann/sollte.

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

    Standard

    Die Ordner in src/ musst du nicht alle anlegen. Das sind nur namespace Vorschläge.

    Auch die config.yml, services.yml und routing.yml brauchst du nicht unbedingt.

  24. #24
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Warum sollten lokale Bundles denn in app/, statt wie auch die anderen Bundles unter src/, angelegt werden?

    Wie würde denn die Vorgehensweise aussehen, wenn ich mein Bundle weiterhin in src/ zum laufen bekommen möchte?

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

    Standard

    Zitat Zitat von waldo Beitrag anzeigen
    Warum sollten lokale Bundles denn in app/, statt wie auch die anderen Bundles unter src/, angelegt werden?
    In app/ kommt nur die config.

  26. #26
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Code:
    app/
        config/
            config.yml
            services.yml
            routing.yml
        Resources
            contao/
                config/
                dca/
                languages/
    Aber das hast du hier doch anders beschrieben?

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

    Standard

    Zitat Zitat von waldo Beitrag anzeigen
    Wie würde denn die Vorgehensweise aussehen, wenn ich mein Bundle weiterhin in src/ zum laufen bekommen möchte?
    Dann zB so:

    composer.json
    Code:
        "autoload": {
            "psr-4": {
                "": "src/"
            }
        },
    Code:
    src/
        FooBundle/
            BackendModule/
            ContentElement/
            DataContainer/
            FrontendModule/
            Model/
            Widget/
            .../
            Resources/
                contao/
                    config/
                    dca/
                    languages/
            FooBundle.php
        ContaoManagerPlugin.php
    ContaoManagerPlugin.php
    PHP-Code:
    <?php

    use Contao\CoreBundle\ContaoCoreBundle;
    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;
    use 
    FooBundle\FooBundle;

    /**
     * Plugin for the Contao Manager.
     */
    class ContaoManagerPlugin implements BundlePluginInterface
    {
        
    /**
         * {@inheritdoc}
         */
        
    public function getBundles(ParserInterface $parser): array
        {
            return [
                
    BundleConfig::create(FooBundle::class)
                    ->
    setLoadAfter([
                        
    ContaoCoreBundle::class,
                    ]),
            ];
        }
    }
    Geändert von Spooky (24.03.2019 um 13:43 Uhr) Grund: removed "Vendor"

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

    Standard

    Zitat Zitat von waldo Beitrag anzeigen
    Aber das hast du hier doch anders beschrieben?
    Nein, von den Übersetzungen abgesehen ist das alles "config". Im Endeffekt geht es um die Trennung von tatsächlichem Code und anderen Dingen.

  29. #29
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    In der vergangenen Zeit hatte ich es leider nicht mehr geschafft daran weiterzuarbeiten.
    Ich habe mich nun allerdings erneut daran gewagt und die Ordnerstruktur entsprechend angepasst.
    Diese sieht nun so aus:

    Code:
    src/
        TestBundle/
            Resources/
                contao/
                    config/
                        config.php
                    dca/
                        tl_content.php
                    elements/
                       hlheadline.php
                    languages/
                        de/
                            default.php
                    templates/
                        elements/
                            ce_hlheadline.html5
            TestBundle.php
        ContaoManagerPlugin.php
    Die Erweiterung läd nun wieder und ich kann das neue ContentElement wieder auswählen und speichern und auch das Template wird richtig zugeordnet.
    Dennoch habe ich wieder das ursprüngliche Problem, dass in der Artikelübersicht dann zwar das gespeicherte, neue ContentElement angezeigt wird, aber der Inhalt doch nicht darunter als Kurzbeschreibung (so wie bei den Standard-Elementen) angezeigt wird. Außerdem, und das ist ja leider das wesentliche, wird im Frontend das Element überhaupt nicht ausgegeben.

    Ich könnte hier evtl. noch eine kleine Hilfestellung gebrauchen, wie ich das in den Griff bekomme

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

    Standard

    Du verwendest nach wie vor nicht die empfohlene Struktur

  31. #31
    Contao-Nutzer
    Registriert seit
    15.03.2010.
    Ort
    AT
    Beiträge
    204

    Standard

    Ich hatte ähnliche Probleme mit der Ausgabe im BE und FE.
    Bei mir lags am return der generate Methode.

    PHP-Code:
    public function generate()
        {
            if (
    TL_MODE == 'BE')
            {
                
    $objTemplate = new \BackendTemplate('be_wildcard');
                
    $objTemplate -> wildcard 'Blabla' # bzw. $this->headline
                
    return $objTemplate -> parse();
            }
            return 
    parent::generate();
        } 
    Damit hats dann geklappt,.. und natürlich cache leeren...

  32. #32
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Code:
    src/
        FooBundle/
            BackendModule/
            ContentElement/
            DataContainer/
            FrontendModule/
            Model/
            Widget/
            .../
            Resources/
                contao/
                    config/
                    dca/
                    languages/
            FooBundle.php
        ContaoManagerPlugin.php
    Ich sehe gerade irgendwie den Unterschied nicht so ganz



    Zitat Zitat von heyho Beitrag anzeigen
    Ich hatte ähnliche Probleme mit der Ausgabe im BE und FE.
    Bei mir lags am return der generate Methode.

    PHP-Code:
    public function generate()
        {
            if (
    TL_MODE == 'BE')
            {
                
    $objTemplate = new \BackendTemplate('be_wildcard');
                
    $objTemplate -> wildcard 'Blabla' # bzw. $this->headline
                
    return $objTemplate -> parse();
            }
            return 
    parent::generate();
        } 
    Damit hats dann geklappt,.. und natürlich cache leeren...
    Gerade getestet, leider bringt dies keine Veränderung bei mir

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

    Standard

    1. Es ist üblich Klassennamen groß und in Camel Case zu schreiben. Das heißt, deine Klasse sollte nicht hlheadline heißen sondern zB HlHeadline.
    2. Dementsprechend muss die Datei auch HlHeadline.php und nicht hlheadline.php heißen.
    3. Die Datei HlHeadline.php solltest du in den Ordner TestBundle/ContentElement/ geben.
    4. Dementsprechend musst du auch den namespace der Klasse HlHeadline in der HlHeadline.php auf namespace TestBundle\ContentElement; ändern (vorausgesetzt du hast "autoload": {"psr-4": {"": "src/"}} in deiner composer.json stehen).
    5. Dementsprechend musst du auch in der TestBundle/Resources/contao/config/config.php die Registrierung des Inhaltselement auf $GLOBALS['TL_CTE']['texts']['hlheadline'] = \TestBundle\ContentElement\HlHeadline::class; ändern.


    All das wurde ja hier im Thread schon mehrmals erklärt.

  34. #34
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Ich habe die Änderungen jetzt durchgeführt. Dies ändert allerdings nichts an der Problematik. Hast du hierfür vielleicht eine Idee?

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

    Standard

    Dazu müsste man mal den gesamten Code sehen.

  36. #36
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Ich habe das ganze hier jetzt einmal hochgeladen.
    Ich hoffe du kannst mir hier noch mit dem ein oder anderen Verbesserungsvorschlag helfen

  37. #37
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    https://github.com/waldo17/Test/blob...HlHeadline.php => namespace TestBundle\ContentElement;

    und

    https://github.com/waldo17/Test/blob...fig/config.php => $GLOBALS['TL_CTE']['texts']['HlHeadline'] = \JoyIT\ContentElement\HlHeadline::class;

    passen nicht zusammen. Zweiteres müsste doch wohl

    $GLOBALS['TL_CTE']['texts']['HlHeadline'] = \TestBundle\ContentElement\HlHeadline::class; sein.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  38. #38
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Völlig richtig, das hatte ich vor dem hochladen übersehen zu korrigieren. in meiner Contao-Installation ist es richtig.
    Ist ansonsten irgendetwas auffällig, was das Problem auslösen könnte?

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

    Standard

    Dir fehlt die Funktion genFeOutput.

  40. #40
    Contao-Nutzer
    Registriert seit
    02.12.2017.
    Beiträge
    138

    Standard

    Stimmt! Wie müsste diese denn aussehen?
    Geändert von waldo (12.04.2019 um 17:53 Uhr)

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
  •