Contao-Camp 2024
Ergebnis 1 bis 4 von 4

Thema: Eigenes Content Element - Variable $cssClass in das Template schreiben

  1. #1
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.855
    Contao-Projekt unterstützen

    Support Contao

    Standard Eigenes Content Element - Variable $cssClass in das Template schreiben

    Hallo,

    ich versuche mich in der Erstellung von Content Elementen. Und versuche ein eigenes RSCE nun als Content Element zu erstellen.
    Backendfelder via DCA ist soweit erledigt.
    Template, damit im Frontend die DCA-Felder auch dargestellt werden ist soweit erledigt.

    Im RSCE wird im Template eine Abfrage gestartet, die Klassennamen für CSS-Klassen abfragt und im Template dann via 'implode' ausgibt. Und hier stehe ich an ...
    Ich bringe diese Abfrage einfach nicht hin ...

    Hier mal das ursprüngliche Template aus dem RSCE:
    PHP-Code:
    <?php
        $cssCanvas 
    = [
            
    $this->class,
            
    'divider',
            
    $this->width,
            
    $this->styles,
            
    $this->iconbg,
        ];
        if (
    $this->outline) {
            
    $cssCanvas[] = 'divider-border';
        };
        
    $noicon 'no-icon';
    ?>

    <div class="<?php echo implode(' '$cssCanvas?>"<?php echo $this->cssID ?>>
        <?php if (($this->styles) !== $noicon): ?>
        <?php if ($this->icontotop): ?>
        <a href="#" data-scrollto="top">
        <?php endif; ?>
            <i data-icon="&#x<?php echo $this->icon ?>;"></i>
        <?php if ($this->icontotop): ?>
        </a>
        <?php endif; ?>
        <?php endif; ?>
    </div>
    Und hier meine aktuelle 'DividerController.php':
    PHP-Code:
    <?php

    //src/Controller/ContentElement/DividerController.php

    declare(strict_types=1);

    namespace 
    Berecont\ContaoDividerBundle\Controller\ContentElement;

    use 
    Contao\ContentModel;
    use 
    Contao\CoreBundle\Controller\ContentElement\AbstractContentElementController;
    use 
    Contao\CoreBundle\ServiceAnnotation\ContentElement;
    use 
    Contao\Template;
    use 
    Symfony\Component\HttpFoundation\Request;
    use 
    Symfony\Component\HttpFoundation\Response;

    /**
     * Class DividerController
     *
     * @ContentElement(DividerController::TYPE, category="werbepanorama", template="ce_divider")
     */
    class DividerController extends AbstractContentElementController
    {
        public const 
    TYPE 'divider';

        
    /**
         * Generate the content element
         */


        
    protected function getResponse(Template $templateContentModel $modelRequest $request): ?Response
        
    {
            
            
    $template->dividerWidth $model->dividerWidth;
            
    $template->dividerStyle $model->dividerStyle;
            
    $template->dividerIconbgOutline $model->dividerIconbgOutline;

            
    $cssClasses = [
                
    $template->dividerWidth,
            ];
            if (
    $template->dividerIconbgOutline) {
                
    $cssClasses[] = 'divider-border';
            };

            
            
    $cssClass implode(' ',$cssClasses);
            

            return 
    $template->getResponse();
        }
    }
    Meine, wohl naive, Vorstellung wäre, dass ich die Variable $cssClass nun im Template ausgebe. Also anstatt der Zeile aus dem RSCE:
    <div class="<?php echo implode(' ', $cssCanvas) ?>"<?php echo $this->cssID ?>>
    sollte nun
    <div class="<?= $this->cssClass ?>"<?php echo $this->cssID ?>>
    oder Ähnliches in meinem Template ce_divider.html5 stehen.

    Hilft mir jemand mit einem Beispiel weiter?
    Grüsse
    Bernhard


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

    Standard

    Wenn Du die Variable im Template ausgeben willst, musst Du sie dem atemülate übergeben:
    PHP-Code:
    $template->cssClass $cssClass
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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

    Standard

    Vorausgesetzt du extendest block_searchable, dann werden die CSS Klassen automatisch ausgegeben, wenn du das Template damit befüllst.
    PHP-Code:
    $template->class .= ' '.$cssClasses
    » sponsor me via GitHub or PayPal or Revolut

  4. #4
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.855
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Vielen DANK euch beiden!

    klappt nun!

    @spooky bzw. für Nachleser
    $template->class .= ' '.$cssClasses; hat in meinem Fall nicht funkioniert => musste auf $template->class .= ' '.$cssClass; anpassen,
    Grüsse
    Bernhard


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
  •