Ankündigung

Einklappen
Keine Ankündigung bisher.

4.9 Merkliste Hinzufügen funktioniert nicht, wenn "replaceInsertTags" im Template

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tim
    antwortet
    In meiner lokalen Testumgebung kann ich es nicht reproduzieren. Ich teste es noch online gegen...

    Auch online sehe ich keine Probleme: http://dev.premium-contao-themes.com/catalog-297.html

    Angehängte Dateien
    Zuletzt geändert von Tim; 09.04.2021, 11:10.

    Einen Kommentar schreiben:


  • filipt
    antwortet
    Zitat von Tim Beitrag anzeigen
    Inkludiere mal einen anderen Content zur Prüfung ob es allgemein an der replaceInsertTags Methode liegt.
    Wenn ich ein Contao Native Element per Inserttag einbinde, dann funktioniert es einwandfrei. Aber wenn ich versuche irgendein Customelement per Inserttag einzubinden, tritt der gleiche Fehler immer auf.

    Ich verwende in den inkludierten CEs auch keine Inserttags oder ähnliches, was im Cache gespeichert werden würde.

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Inkludiere mal einen anderen Content zur Prüfung ob es allgemein an der replaceInsertTags Methode liegt.

    Einen Kommentar schreiben:


  • filipt
    antwortet
    Ich füge über den Inserttag ein Customelement ein das sozusagen als Stopper in der Produktliste fungiert. Das Customelement hat nichts mit dem CC oder der Merkliste zu tun. Somit kann der Kunde an fünfter Stelle im Listenmodul einen Stopper für eine andere Aktion anzeigen lassen.

    Das Element liegt in sofern nicht in der Merkliste, das es nicht über das Listenmodul mit dem Merklisten Filter angezeigt wird, es nicht über das inserttag "customcatalognotelist::total" ausgegeben wird und wenn man auf die Item-Detailseite geht, dort der state wieder auf "Merkliste hinzufügen" steht.

    Wenn ich den Inserttag im fehlerhaften CC Listenmodul entferne, dann wird der State sozusagen wieder zurückgesetzt und der Merklisten Button ist mit allen anderen Listen/Detailseiten/Inserttags gesynced.


    Code für das CE:
    Code:
    <div class="imagebox--wrapper">
        <wbr/>
        <?php foreach($this->group('content') as $i => $fields): ?>
        <section class="flex-wrapper <?php echo $this->field('background#'.$i)->value(); ?> iconbox--content <?php if (!$this->field('img#'.$i)->value()): ?>img-icon <?php endif; ?> <?php echo $this->class; ?> <?php echo $this->field('style')->value(); ?> block" <?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
            <div class="<?php if ($this->field('img#'.$i)->value()): ?>one_half <?php endif; ?>imgicon--wrapper p-40 p-30-m p-30-t bg-darkgray invert">
                <?php echo $this->field('icon#'.$i)->html(); ?>
                <div class="iconbox--headline color-white">
                    <h4 class="mb-10"><?php echo $this->field('headline#'.$i)->value(); ?></h4>
                </div>
                <div class="iconbox--text mb-30"><?php echo $this->field('text#'.$i)->html(); ?></div>
                <div class="iconbox--link link--button of-visible">
                    <?php if ($this->field('link')->option('linkText')): ?>
                    <?php echo $this->field('link#'.$i)->html(); ?>
                    <?php endif; ?>
                </div>
            </div>
            <?php if ($this->field('img#'.$i)->value()): ?>
            <div class="one_half">
                <div class="imagebox--image h-100">
                    <?php echo $this->field('img#'.$i)->html(); ?>
                </div>
            </div>
            <?php endif; ?>
        </section>
        <wbr/>
        <?php endforeach; ?>
    </div>
    Code für die CC Liste:
    Code:
    <?php if(!$this->empty): ?>
    <?php
    if ($GLOBALS['TL_LANGUAGE'] == 'de') {
        $HTMLcontent = $this->replaceInsertTags('{{insert_content::108275}}', false);
    } else {
        $HTMLcontent = $this->replaceInsertTags('{{insert_content::108517}}', false);
    };
    $einklinker = explode("<wbr/>",$HTMLcontent);
    $objLength = count($einklinker);
    $einklinker = array_slice($einklinker, 1, $objLength-2);
    $length = count($einklinker);
    $randomArticle = random_int(0, $length-1);
    $i = 0;
    //<script>console.log(`<?php print_r($HTMLcontent); `)</script>
    ?>
    <?php foreach($this->entries as $entry): ?>
        <div class="block entry product--wrapper one_half mb-20" <?php echo $this->cssID; ?>>
            <span class="span-expand">
                <a href="<?php echo $entry->links('detail')->url; ?>"></a>
            </span>
            <div class="product--notelist notelist offsetleft">
                <?php echo $entry->field('notelist')->html("customelement_attr_notelist"); ?>
            </div>
            <div class="product--image">
                <?php //<img src="echo $entry->field('img')->generate(); " alt=""> ?>
                <?php
                // echo $entry->field('img')->generate();
                $image_path = $entry->field('img')->generate();
                $image = \Picture::create($image_path, 9)->getTemplateData(); // 1 ist die ID der Bildgröße, einfach durch Deine ID ersetzen
                $this->insert('picture_default', $image);
                ?>
            </div>
            <div class="product--content">
                <?php
                if ($entry->field('overline')->value()):
                ?>
                <div class="product--overline">
                    <?php echo $entry->field('overline')->value(); ?>
                </div>
                <?php endif; ?>
                <h2 class="product--headline"><?php echo strip_tags($entry->field('name')->value(), "<strong>");  ?></h2>
                <div class="product--teaser">
                    <?php echo $entry->field('teaser')->value(); ?>
                </div>
                <div class="product--link link--button button--gray button--text--regular">
                    <p class="link"><a href="<?php echo $entry->links('detail')->url; ?>">{{iflng::de}}Produkt ansehen{{iflng::en}}Product Details{{iflng}}</a></p>
                </div>
            </div>
        </div>
    <?php
    if($i === 3):
        echo $einklinker[$randomArticle];
    endif;
    $i++;
    ?>
    <?php endforeach; ?>
    
    <?php else: ?>
    <p class="info empty">Keine Produkte gefunden</p>
    <?php endif;?>

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Was genau fügst du denn via Inserttag ein? Liegt die Merkliste in dem CE, das via Inserttag eingefügt wird?

    Beim Hinzufügen lädt die Seite neu und der Status wird auf Entfernen gesetzt. Inwiefern liegt das Element dann nicht in der Merkliste? Wie äußert sich das bzw. woher weisst du das?

    Einen Kommentar schreiben:


  • filipt
    antwortet
    Zitat von Tim Beitrag anzeigen
    Wichtig: Seite darf nicht im Seitencache liegen!

    Falls man Merkliste-Inhalte bzw. Inhalte die irgendwie mit Sessiondaten laufen, über Inserttags holt, sollte man den Inserttag auf nocache fahren. https://github.com/contao/core-bundl...oller.php#L761
    Das Problem bleibt weiterhin bestehen, wenn ich den Inserttag so aufrufe.

    Code:
    $HTMLcontent = $this->replaceInsertTags('{{insert_content::108275}}', false);
    Benutzen ich den so richtig?

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Wichtig: Seite darf nicht im Seitencache liegen!

    Falls man Merkliste-Inhalte bzw. Inhalte die irgendwie mit Sessiondaten laufen, über Inserttags holt, sollte man den Inserttag auf nocache fahren. https://github.com/contao/core-bundl...oller.php#L761

    Einen Kommentar schreiben:


  • 4.9 Merkliste Hinzufügen funktioniert nicht, wenn "replaceInsertTags" im Template

    Hallo!

    Ich habe für einen Kunden ein schnelles Feature hinzugefügt, bei dem ich im Listen-Template "unsauber" einfach über einen Inserttag ein anderes Inhaltselement mir ziehe und das über PHP dann "zerstückle". Das Inhaltselement ist ein CE.

    Alleine wenn die folgende Zeile über dem foreach Loop im Template steht, funktioniert die Merkliste nicht mehr. Das heißt, wenn man auf "Merkliste hinzufügen" klickt, dann lädt die Seite neu, das Element "scheint" auf der Merkliste zu stehen, weil dann stattdessen "Merkliste entfernen" angezeigt wird, aber es ist nicht wirklich auf der Merkliste. Sofern man stattdessen über die Readerseite das Item auf die Merkliste hinzufügt funktioniert es normal. Wenn ich die folgende Zeile aus dem Listen-Template entferne, funktioniert die Merkliste ebenfalls normal.

    Code:
    $HTMLcontent = $this->replaceInsertTags('{{insert_content::108275}}');

    Hat jemand eine Idee woran das liegen könnte? Ich kann bei bedarf auch den Code vom CE hier reinkopieren.

    VG, Filip
Lädt...
X