Ergebnis 1 bis 2 von 2

Thema: Eigene Module und Twig

  1. #1
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard Eigene Module und Twig

    Hallo,

    da ich selbst Twig liebe möchte ich jetzt in Contao auch damit arbeiten um einfach von den html5 Templates wegzukommen... allerdings tun sich mir da ein paar Fragen auf...

    Twig-Template:
    Code:
    {% import "@ContaoCore/Image/Studio/_macros.html.twig" as studio %}
    
    <div class="mod_fs_tour_archiv block">
    	<ul class="list-group">
    	{% for data in tour %}	
    		<li class="layout_tour">
    			<div class="tour_inner">
    				<div class="image_container">
    					{% if data.href %}<a href="{{ data.href }}">{% endif %}
    					{{- studio.figure(data.figure) -}}
    					{% if data.href %}</a>{% endif %}
    				</div>
    				<div class="caption">
    					<div class="year"><span>{{ data.year }}</span></div>
    					{% if data.href %}
    					<div class="title"><span><a href="{{ data.href }}" title="{{ data.title }}">{{ data.title }}</a></span></div>
    					{% else %}
    					<div class="title"><span>{{ data.title }}</span></div>
    					{% endif %}
    				</div>
    			</div>
    		</li>
    	{% endfor %}
    	</ul>
    </div>
    Controller:
    PHP-Code:
    <?php

    ....

    /**
     * @FrontendModule("fs_tour_archiv", category="fansite-manager-core")
     */
    class FsTourArchivController extends AbstractFrontendModuleController {
        
        public function 
    __construct(private readonly Studio $studio) {}

        protected function 
    getResponse(Template $templateModuleModel $modelRequest $request) : ? Response {
                    
            global 
    $objPage;
            
            if(
    $model->fs_tour_reader 0  && (isset($_GET['items']) || (Config::get('useAutoItem') && isset($_GET['auto_item'])))) {
                
    $tourReaderModel ModuleModel::findByPk($model->fs_tour_reader);

                if (
    null !== $tourReaderModel) {
                    
    $attributes $request->attributes->all();
                    
    $attributes['model'] = $tourReaderModel;

                    return 
    $this->forward(FrontendModuleReference::TAG_NAME.'.fs_tour_archiv_reader'$attributes);
                } 
            }
                    
            
    $bands StringUtil::deserialize($model->fs_band);
            
            
    $fields = array('published=?');
            
    $values = array(1);
            
            if(
    is_array($bands)) {
                
    $fields[] = 'band IN('.implode(',',$bands).')';
            }
            
            
    $objTour FsEventTourneenModel::findby($fields,$values,array('order' => 'sorting '.$model->fs_tour_sorting));    
            if(
    $objTour !== null){
                while(
    $objTour->next()) {
                    
    $objTour->href = ($model->jumpTo) ? Controller::generateFrontendUrl(PageModel::findPublishedByIdOrAlias($model->jumpTo)->row(), "".($GLOBALS['TL_CONFIG']['useAutoItem'] ?  '/' '/items/').$objTour->alias) : '';
                    
                        
    $title StringUtil::specialchars($objTour->year.' '.$objTour->title);
                        
                        
    $metadata = new Metadata([
                            
    Metadata::VALUE_ALT => $title,
                            
    Metadata::VALUE_TITLE => $title
                        
    ]);
                        
                        
    $size StringUtil::deserialize($model->imgSize);
                        
    $figureBuilder $this->studio->createFigureBuilder();
                        
                        
    $figureBuilder
                          
    ->fromUuid($objTour->file)
                          ->
    setSize([$size[0], $size[1], $size[2]])
                          ->
    setMetadata($metadata);
                                            
                        
    $figure $figureBuilder->build();
                        
    $objTour->figure $figure;
                }
                
            }
            
            return 
    $this->render('@Contao/fs_tour_archiv.html.twig', [
                
    'tour' => $objTour,
            ]);
        }
    }
    Frage 1: brauch man noch diese "mod_templates" -> ich vermute mal nicht
    Frage 2: wie kann ich in den Modul Einstellungen ein anderes Template wählen (vermutlich in 4.13 garnicht) aber dann in der 5?
    Frage 3: wenn ich unter Templates im backend kopiere wird es dann auch in den Moduleinstellungen sichtbar?
    Frage 4: wie läuft das mit "Reader" Modulen (siehe oben alter Code im Controller) Ist das noch zeitgemäß in Contao oder lieber sowas garnicht machen bzw wie wäre das mit Twig?

    So nebenbei find ich es mega das am ende die Controller viel weniger Code beinhalten zumindest in mein Fall sehr übersichtlich werden, i love it
    Liebe Grüße
    WebRoxx


  2. #2
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Okay, ich hab jetzt zum beispiel folgendes:

    Code:
    {% extends '@Contao/block_searchable' %}
    
    {% block content %}
    	{{ dump() }}
    	
    	{% if back_link %}
    	<!-- indexer::stop -->
    	<div class="fs-back-link"><a href="{{ back_link }}">{{ 'BACK.TOURARCHIV'|trans({}, 'contao_default') }}</a></div>
    	<!-- indexer::continue -->
    	{% endif %}
    {% endblock %}
    wie bekomm ich denn die "headline" und hl automatisch gesetzt, geht das überhaupt noch? bzw muss das in der render function eventuell mit übergeben? habe dazu nichts in der doku gefunden oder ist das noch nicht soweit? auch die classe alias modulname wird nicht gestzt
    Liebe Grüße
    WebRoxx


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
  •