Dann musst du die Option
Code:
multiSelectable: false
ergänzen
und wo genau muß ich das machen? in dem Template?
Oder muß ich in den Ordner "assets > handorgel > js" gehen und dort die Datei "handorgel.js" ändern?
Das ist doch jene js, welche im Contao-BA im Seitenlayout aktivier wird, oder?
### UPDATE ####
Ich glaube, jetzt funktioniert es.
Ziel war es, dass Nachrichten als Teaser angezeigt werden in einem Accordion, siehe hier:
https://community.contao.org/de/atta...8&d=1771005160
- Accordion öffnet sich, wenn man drauf klickt, und schließt sich bei erneutem Klick oder, wenn ein anderes Accordion geöffnert wird.
PHP-Code:
<div class="layout_latest arc_<?= $this->archive->id ?> block<?= $this->class ?>" itemscope itemtype="http://schema.org/Article">
<div class="handorgel js-news-handorgel">
<h2 class="handorgel__header" itemprop="name">
<button class="handorgel__header__button" type="button">
<?= $this->headline ?>
</button>
</h2>
<div class="handorgel__content">
<div class="handorgel__content__inner" itemprop="description">
<?php $this->block('info'); ?>
<p class="info">
<time datetime="<?= $this->datetime ?>" itemprop="datePublished"><?= $this->date ?></time>
<?= $this->author ?>
</p>
<?php $this->endblock(); ?>
<?php if ($this->addImage): ?>
<?php $this->insert('image', $this->arrData); ?>
<?php endif; ?>
<div class="ce_text block">
<?= $this->cspInlineStyles($this->teaser) ?>
</div>
<?php if ($this->hasText || $this->hasTeaser): ?>
<p class="more"><?= $this->more ?></p>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php
if (!$this->hasReader) {
$this->addSchemaOrg($this->getSchemaOrgData());
}
?>
<script>
(function () {
function init() {
if (!window.handorgel) return;
// Alle Handorgel-Instanzen sammeln
var instances = [];
document.querySelectorAll('.mod_newsarchive .js-news-handorgel').forEach(function (el) {
if (el.dataset.handorgelReady) return;
el.dataset.handorgelReady = '1';
var hg = new handorgel(el, {
collapsible: true,
multiSelectable: true // wir regeln "nur eins offen" seitenweit selbst
});
instances.push(hg);
// Wenn in dieser Instanz ein Panel geöffnet wird: alle anderen schließen
el.addEventListener('click', function (ev) {
// nur reagieren, wenn Header/Button geklickt wurde
if (!ev.target.closest('.handorgel__header__button')) return;
// etwas später prüfen, damit Handorgel den Toggle erst ausführt
window.setTimeout(function () {
// ist in dieser Instanz gerade ein Panel offen?
var hasOpen = el.querySelector('.handorgel__content.handorgel__content--open');
if (!hasOpen) return;
instances.forEach(function (otherHg) {
if (otherHg === hg) return;
// alle offenen Panels in anderen Instanzen schließen
otherHg.folds.forEach(function (fold) {
fold.close();
});
});
}, 0);
});
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
</script>
Ich danke euch allen für eure Hilfe, Tipps und Anregungen.