Contao-Camp 2024
Ergebnis 1 bis 4 von 4

Thema: Eigenes Inserttag für Icons ohne große Programmierkenntnisse erstellen

  1. #1
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    45

    Standard Eigenes Inserttag für Icons ohne große Programmierkenntnisse erstellen

    Hallo Community,

    ich möchte ein Inserttag definieren, mit dem ich Icons z.b. bei Überschriften einbinden kann. Es soll so funktionieren, dass ich z.B. den Inserttag {{zmdi::zmdi-comment-outline::zmdi-hc-fw}} eingebe und mir das entsprechende Icon (Angabe nach dem ersten "::") mit der enstsprechenden css-Klasse (Angabe nach dem zweiten "::") angezeigt wird. So, wie man es z.B. von "netzmacht\font-awesome" kennt, nur das ich ein anderes Icon-Pack nutzen muss.

    Habe mich dazu alten Tutorials bedient, die anscheinend aber nicht funktionieren bei mir. Mein Problem ist, dass ich sehr wenige PHP Programmierkenntnisse habe und das ganze Konstrukt daher auch nicht richtig verstehe. Ich habe die Hoffnung, dass ich jemand von Euch bereit erklärt, mir das zu erklären, was ich machen muss.

    Ich habe folgende Dateien angelegt:
    Code:
    - zmdi-inserttag
    -- config
    ---> autoload.php
    ---> config.php
    -- classes
    --- contao
    ---- inserttags
    -----> InsertTagHelper.php
    Diese Ordnerstruktur habe ich in das Verzeichnis "/system/modules" geladen.

    Hier der Inhalt der Dateien:

    autoload.php
    PHP-Code:
    <?php
    /**
     * Variables
     */
    $strFolder      'zmdi_inserttag';
    $strNamespace   'mynamespace\\' $strFolder;


    /**
     * Register the namespaces
     */
    ClassLoader::addNamespaces(array
    (
        
    $strNamespace
    ));


    /**
     * Register the classes
     */
    ClassLoader::addClasses(array
    (
        
    // Classes
        
    $strNamespace '\classes\contao\inserttags\InsertTagHelper' => "system/modules/$strFolder/classes/contao/inserttags/InsertTagHelper.php"
    ));
    config.php
    PHP-Code:
    <?php
    $GLOBALS
    ['TL_HOOKS']['replaceInsertTags'][] = array('\mynamespace\zmdi_inserttag\classes\contao\inserttags\InsertTagHelper''zmdi');
    InsertTagHelper.php
    PHP-Code:
    <?php
    namespace mynamespace\zmdi_inserttag\classes\contao\inserttags;

    /**
     * Class InsertTagHelper
     * @package mynamespace\zmdi_inserttag\classes\contao\inserttags
     */
    class InsertTagHelper
    {
        public function 
    zmdi($string)
        {
            
    $arrSplit explode('::'$string);
     
            if (
    $arrSplit[0] == 'zmdi')
            {
                if (isset(
    $arrSplit[1]))
                {
                    return 
    '<i class="zmdi ' $arrSplit[1] . '"></i>';
                }
                if (isset(
    $arrSplit[1]) && isset($arrSplit[2]))
                {
                    return 
    '<i class="zmdi ' $arrSplit[1] . ' ' $arrSplit[2] . '"></i>';
                }
                if (isset(
    $arrSplit[3]))
                {
                    return 
    'Fehler! Zuviele zmdi Paramenter!';
                }
                else
                {
                    return 
    'Fehler! zmdi ohne Parameter!';
                }
            }
            
    // kein Insert-Tag
            
    return false;
        }
    }
    Die CSS-Datei für die Icons binde ich im Layout manuell ein.

    Wenn ich jetzt im Contao-Manager den "Production Cache" neu aufbaue und ein "dump autoload" durchführe, scheint Contao das was ich da geschrieben habe anzunehmen, auf der Seite wird mir dann aber "Es ist ein Fehler aufgetreten" angezeigt. In der Logdatei steht:
    Code:
    [2019-07-18 11:56:23] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ClassNotFoundException: "Attempted to load class "InsertTagHelper" from namespace "\mynamespace\zmdi_inserttag\classes\contao\inserttags". Did you forget a "use" statement for another namespace?" at serverpfad/contao/vendor/contao/core-bundle/src/Resources/contao/library/Contao/System.php line 182
    Ich checke natürlich nicht, was mein Fehler ist. Ich finde aber auch kein Tutorial, wo das besser beschrieben ist. Es hat bestimmt was mit der Contao Version zu tun, da das Tutorial glaub ich für Contao 3 geschrieben wurde, seit dem sich aber sicher viel verändert hat.

    Ich würde mich freuen, wenn mir jemand sagen könnte, wo ich was anders machen muss.

  2. #2
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Standard

    Zu Deinem Codeproblem kann ich nichts beitragen. Ich habe nur eigene 3er Inserttags unter 4.7 am Laufen. Und es ist schon eine Weile her, das ich da dran war.
    Ohne programmieren zu müssen, verwende ich https://packagist.org/packages/termi...tao-inserttags
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  3. #3
    Contao-Nutzer
    Registriert seit
    29.10.2010.
    Beiträge
    45

    Standard

    danke dir. probiere ich mal aus.

  4. #4
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Zitat Zitat von sui Beitrag anzeigen
    danke dir. probiere ich mal aus.
    Man könnte auch über versch. Inhaltselemente mittels {{file::}} Insert-Tag entsprechende SVG-Icons einbinden ...
    Sample: https://community.contao.org/de/show...l=1#post508177
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

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
  •