Ergebnis 1 bis 7 von 7

Thema: [GELÖST] AppBundle / lokale Extension / Managed Edition

  1. #1
    Contao-Nutzer Avatar von a.webbrand
    Registriert seit
    20.06.2017.
    Ort
    Bremen
    Beiträge
    8

    Standard [GELÖST] AppBundle / lokale Extension / Managed Edition

    Hi Freunde,

    ich setze mich gerade damit auseinander, ein paar Änderungen an Contao (managed-edition) vorzunehmen. Ich möchte beispielsweise eigene insertTags erstellen o.ä.
    Nun scheitere ich aber schon an dem initialen Anlegen des AppBundles; ich möchte lokal, nur für dieses eine Projekt Änderungen vornehmen (also kein Bundle auf Packagist o.ä.)

    Ich habe nun folgendes getan:

    app/ContaoManagerPlugin.php
    PHP-Code:
    <?php

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


    class 
    ContaoManagerPlugin implements BundlePluginInterface
    {
        
    /**
         * {@inheritdoc}
         */
        
    public function getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(AppBundle\AppBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class])
            ];
        }
    }
    src/AppBundle/Ressources/contao/config/config.php
    PHP-Code:
    <?php
    $GLOBALS
    ['TEST']= 'TEST';
    (wollte hier testen, ob überhaupt irgendwas funktioniert; $GLOBALS['TEST']= 'TEST'; und versucht im Frontend auszugeben, geht aber nicht :/)

    src/AppBundle/AppBundle.php

    PHP-Code:
    <?php

    namespace AppBundle;

    use 
    Symfony\Component\HttpKernel\Bundle\Bundle;

    class 
    AppBundle extends Bundle
    {
    }
    composer.json
    PHP-Code:
    {
        
    "name""contao/managed-edition",
        
    "type""project",
        
    "description""Contao Open Source CMS",
        
    "license""LGPL-3.0+",
        
    "authors": [
            {
                
    "name""Leo Feyer",
                
    "homepage""https://github.com/leofeyer"
            
    }
        ],
        
    "require": {
            
    "php""^5.6|^7.0",
            
    "contao/calendar-bundle""^4.4",
            
    "contao/comments-bundle""^4.4",
            
    "contao/faq-bundle""^4.4",
            
    "contao/listing-bundle""^4.4",
            
    "contao/manager-bundle""4.4.*",
            
    "contao/news-bundle""^4.4",
            
    "contao/newsletter-bundle""^4.4",
            
    "delahaye/dlh_googlemaps""^2.3",
            
    "derhaeuptling/contao-seo-serp-preview""^3.0",
            
    "do-while/contao-backupdb-bundle""^1.2",
            
    "jrgregory/m17-sticky-backend-footer""^2.0",
            
    "madeyourday/contao-rocksolid-custom-elements""^2.2",
            
    "terminal42/contao-ajaxform""^1.0",
            
    "terminal42/contao-easy_themes""^2.2",
            
    "terminal42/contao-folderpage""^2.0",
            
    "terminal42/contao-inserttags""^1.9",
            
    "terminal42/notification_center""^1.4"
        
    },
        
    "conflict": {
            
    "contao/core-bundle""<4.4.1"
        
    },
        
    "config": {
            
    "component-dir""assets"
        
    },
        
    "scripts": {
            
    "post-install-cmd": [
                
    "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            
    ],
            
    "post-update-cmd": [
                
    "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            
    ]
        },
        
    "autoload": {
            
    "psr-4": { "AppBundle\\""src/AppBundle/" },
            
    "classmap": ["app/ContaoManagerPlugin.php"]
        }


    danach composer update / install / dump-autoload

    Geht leider alles nicht. Ich bin noch totaler Anfänger; mag mir jemand helfen? Danke.
    Geändert von a.webbrand (19.01.2018 um 14:39 Uhr)

  2. #2
    Contao-Nutzer Avatar von a.webbrand
    Registriert seit
    20.06.2017.
    Ort
    Bremen
    Beiträge
    8

    Standard

    Okay; ich hatte den Ordner "Resources", "Ressources" genannt; Fail!

    Für alle die es interessiert; es geht jetzt!
    Hier nochmal alle Dateien!

    app/ContaoManagerPlugin.php
    PHP-Code:
    <?php

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


    class 
    ContaoManagerPlugin implements BundlePluginInterface
    {
        
    /**
         * {@inheritdoc}
         */
        
    public function getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(AppBundle\AppBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class])
            ];
        }
    }
    src/AppBundle/AppBundle.php
    PHP-Code:
    <?php

    namespace AppBundle;

    use 
    Symfony\Component\HttpKernel\Bundle\Bundle;

    class 
    AppBundle extends Bundle
    {
    }
    src/AppBundle/Resources/contao/config/config.php
    PHP-Code:
    <?php

    $GLOBALS
    ['TL_HOOKS']['replaceInsertTags'][] = array('AppBundle\Resources\contao\AppCustomTags''myReplaceInsertTags');
    src/AppBundle/Resources/contao/AppCustomTags.php

    PHP-Code:
    <?php

    namespace AppBundle\Resources\contao;

    class 
    AppCustomTags extends \Frontend
    {
        public function 
    myReplaceInsertTags($strTag)
        {
            
    // Parameter abtrennen
            
    $arrSplit explode('::'$strTag);

            if (
    $arrSplit[0] != 'foo' && $arrSplit[0] != 'cache_foo')
            {
                
    //nicht unser Insert-Tag
                
    return false;
            }
            
    // Parameter angegeben?
            
    if (isset($arrSplit[1]) && $arrSplit[1] == 'bar')
            {
                return 
    'Parameter bar';
            } else {
                return 
    'Fehler! foo ohne Parameter!';
            }
        }
    }
    composer.json
    HTML-Code:
    ...
        "autoload": {
            "psr-4": { "AppBundle\\": "src/AppBundle/" },
            "classmap": ["app/ContaoManagerPlugin.php"]
        }
    ...

    danach habe ich in der console einen dieser Befehle ausgeführt ich bin mir nicht mehr sicher; ne gute Mischung aus Cache leeren und composer.json ausführen

    composer install
    composer update
    composer dump-autoload
    vendor/bin/contao-console cache:clear -e dev --no-warmup


    Eventuell konnte ich damit jemandem helfen.

    VG
    Geändert von a.webbrand (19.01.2018 um 14:36 Uhr)

  3. #3
    Gesperrt
    Registriert seit
    15.02.2018.
    Ort
    58300 Wetter
    Beiträge
    24

    Standard

    Hallo,

    danke, das funktioniert bei mir auch.

    Ließt man bei deinem Beitrag raus, dass ohne packagist o.ä. nix unter system/modules/ entwickelt werden kann?!
    Ich versuche nämlich vergebens meine erste Extension in system/modules/ für Contao 4.4.x zu schreiben.

  4. #4
    Contao-Nutzer
    Registriert seit
    23.08.2013.
    Beiträge
    87

    Standard

    In der Managed Edition wird das AppBundle automatisch geladen, wenn verfügbar. Ein ContaoManager Plugin ist nicht nötig, Autoloader-Eintrag genügt.

  5. #5
    Contao-Nutzer
    Registriert seit
    23.08.2013.
    Beiträge
    87

    Standard

    Zitat Zitat von allapow Beitrag anzeigen
    Hallo,
    Ließt man bei deinem Beitrag raus, dass ohne packagist o.ä. nix unter system/modules/ entwickelt werden kann?!
    Ich versuche nämlich vergebens meine erste Extension in system/modules/ für Contao 4.4.x zu schreiben.
    Wenn du eine neue Extension schreibst, solltest du mMn den Symfony-Weg gehen und ein Bundle erstellen - entweder ein AppBundle, falls es nur deine Applikation betrifft oder ein wiederverwendbares. Für letzteres kannst du z.B. in einem externen Ordner entwicklen und diesen in deiner composer.json als Repository-Pfad deklarieren (type: path / url: dein Ordner) und die Erweiterung dann (als dev-master) requiren/installieren ohne sie bis dato veröffentlicht zu haben. Später packst du sie dann auf GitHub und reichst sie bei Packagist ein, um sie per regulär per Composer installierbar zu machen.

    (Es funktioniert auch die Entwicklung wie unter Contao 3 direkt im system/modules Verzeichnis.)

  6. #6
    Contao-Nutzer
    Registriert seit
    02.04.2021.
    Beiträge
    68

    Standard

    Halleluja wie lange habe ich danach jetzt gesucht!! Vielen vielen DANK!
    Leider sind die 1 - 2 Anleitungen die man für lokale AppBundles findet nicht ganz mit 4.9 kompatibel, da muss man schon wieder das ganze symfony-Zeugs verstehen um das dann für sich umzumünzen. Aber das hier funktioniert einfach, super!

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

    Standard

    Grundsätzlich brauchst du kein AppBundle.
    » sponsor me via GitHub or PayPal or Revolut

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
  •