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 $template, ModuleModel $model, Request $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
Lesezeichen