Neu Kann nicht auf eigene Smartyvariable zugreifen

karabas

Gut bekanntes Mitglied
26. September 2015
177
5
Hallo zusammen.
Ich habe ein Problem mit eigens erstellten Smartyvariablen.
Ich habe in Bootstrap.php in Child-Template eine Funktion erstellt:
Code:
public function boot(): void
    {
        parent::boot();
        try {
            $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'getRating', [$this, 'getRating']);
        } catch (\SmartyException $e) {
            throw new \RuntimeException('Problems during smarty instantiation: ' . $e->getMessage());
        }
    }
Code:
    public function getRating($params, $smarty)
    {
        $erg = Shop::Container()->getDB()->queryPrepared(
            'SELECT AVG(tbewertung.nSterne) AS Durchschnitt, COUNT(*) AS Anzahl
            FROM tbewertung
            INNER JOIN tkategorieartikel ON tbewertung.kArtikel = tkategorieartikel.kArtikel
            WHERE tkategorieartikel.kKategorie = :artikelID AND tbewertung.nAktiv = 1',
            ['artikelID' => $params['artikelID']],
            ReturnType::ARRAY_OF_OBJECTS
        );
        $assocArray = get_object_vars($erg[0]);
        Shop::Smarty()->assign('Rating', $assocArray);
        /*$smarty->assign('Rating', $erg);*/
        
        return;
    }
Es wird auch im Debugger ausgegeben:
smarty.jpg
Aber wenn ich in Template darauf zugreifen will, passiert gar nicht.
So greife ich darauf zu: {$Rating.Anzahl}
Kann jemand vielleicht erkennen, was ich falsch mache?
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
529
Halle
Kann jemand vielleicht erkennen, was ich falsch mache?
Zuerst musst du natürlich dafür sorgen, dass deine eigene Smarty-Funktion (getRating) aufgerufen wird, bevor du auf die Variable zugreifst.
Das ist ungünstig:
PHP:
Shop::Smarty()->assign('Rating', $assocArray);
Das wäre richtig:
PHP:
$smarty->assign('Rating', $assocArray);
Das hier
PHP:
$assocArray = get_object_vars($erg[0]);
birgt die Gefahr eines Fatal Error, wenn es keine Bewertungen gibt. Dann ist $erg[0] undefined und get_object_vars erwartet ein Objekt als Parameter.
Das hier
SQL:
WHERE tkategorieartikel.kKategorie = :artikelID
sieht falsch aus. Entweder stimmt das Naming nicht oder du vergleichst tatsächlich die ID einer Kategorie mit der eines Artikels.

Es ist ggfs. extrem performancelastig in einer Template-Funktion SQL auszuführen!
Es ist immer ungünstig eine gesamte Liste (ARRAY_OF_OBJECTS) per SQL abzufragen, wenn man zum Schluß nur ein Element verwenden will. Hier wäre ein ReturnType::SINGLE_OBJECT und ein zusätzliches LIMT 1 im SQL in jedem Fall performanter. Für deinen konkreten Fall wäre sogar ReturnType::SINGLE_ASSOC_ARRAY empfehlenswert, da sparst du zusätzlich das get_object_vars.
 

karabas

Gut bekanntes Mitglied
26. September 2015
177
5
Zuerst musst du natürlich dafür sorgen, dass deine eigene Smarty-Funktion (getRating) aufgerufen wird, bevor du auf die Variable zugreifst.
Das ist ungünstig:
PHP:
Shop::Smarty()->assign('Rating', $assocArray);
Das wäre richtig:
PHP:
$smarty->assign('Rating', $assocArray);
Das hier
PHP:
$assocArray = get_object_vars($erg[0]);
birgt die Gefahr eines Fatal Error, wenn es keine Bewertungen gibt. Dann ist $erg[0] undefined und get_object_vars erwartet ein Objekt als Parameter.
Das hier
SQL:
WHERE tkategorieartikel.kKategorie = :artikelID
sieht falsch aus. Entweder stimmt das Naming nicht oder du vergleichst tatsächlich die ID einer Kategorie mit der eines Artikels.

Es ist ggfs. extrem performancelastig in einer Template-Funktion SQL auszuführen!
Es ist immer ungünstig eine gesamte Liste (ARRAY_OF_OBJECTS) per SQL abzufragen, wenn man zum Schluß nur ein Element verwenden will. Hier wäre ein ReturnType::SINGLE_OBJECT und ein zusätzliches LIMT 1 im SQL in jedem Fall performanter. Für deinen konkreten Fall wäre sogar ReturnType::SINGLE_ASSOC_ARRAY empfehlenswert, da sparst du zusätzlich das get_object_vars.
Vielen Dank für deine kommentare!
Ich müsste wahrscheinlich zuerst mein Vorhaben beschreiben. Ich möchte einfach die Bewertungen von allen Produkten aus aktuelle Kategorie auf Kategorieseite anzeigen lassen. Vielleicht gibt es eine einfache Lösung dazu, ich habe aber nichts dazu gefunden.
Ich habe mir gedacht, ich frage einfach in DB alle Daten ab und stelle die in Tamplate dar. Durch DB-Abfrage:
Code:
WHERE tkategorieartikel.kKategorie = :artikelID
ermittle ich alle Produkte aus aktuelle Kategorie (die Variable "artikelID" ist die ID von aktuelle Kategorie, die ich der Funktion "getRating" mittels "$oNavigationsinfo->getCategory()->kKategorie" in Template übergebe - {getRating artikelID=$oNavigationsinfo->getCategory()->kKategorie}).
Ich habe jetzt deine Vorschläge umgesetzt und ich kann jetzt endlich auf die Daten zugreifen!!! Vielen DANK!
Allerdings werden die Daten in Debugger nicht angezeigt.

So sieht jetzt meine Code aus:
Bootstrap.php:
Code:
public function getRating($params, $smarty)
{
    $erg = Shop::Container()->getDB()->queryPrepared(
        'SELECT AVG(tbewertung.nSterne) AS Durchschnitt, COUNT(*) AS Anzahl
        FROM tbewertung
        INNER JOIN tkategorieartikel ON tbewertung.kArtikel = tkategorieartikel.kArtikel
        WHERE tkategorieartikel.kKategorie = :artikelID AND tbewertung.nAktiv = 1',
        ['artikelID' => $params['artikelID']],
        ReturnType::SINGLE_ASSOC_ARRAY
    );
    $smarty->assign('Rating', $erg);
}
Und in Template rufe ich die Daten so ab:
Code:
{getRating artikelID=$oNavigationsinfo->getCategory()->kKategorie}
<ul>
    <li class="rating-wrapper nav-it dpflex-a-center">
        <strong class="icon-wt">{lang key="catRating" section="custom"}:</strong>
        <a id="jump-to-votes-tab" class="hidden-print">
            {$Rating.Anzahl}
        </a>
    </li>
    <li class="rating-wrapper nav-it dpflex-a-center">
        <strong class="icon-wt">{lang key="catRatingStars" section="custom"}:</strong>
        <a id="jump-to-votes-tab" class="hidden-print">
            {include file='productdetails/rating.tpl' stars=$Rating.Durchschnitt total=$Rating.Anzahl}
        </a>
    </li>
</ul>

Das Ergebnis sieht dann so aus:
bewertungen.jpg
Noch mal vielen Dank!
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
529
Halle
(die Variable "artikelID" ist die ID von aktuelle Kategorie, die ich der Funktion "getRating" mittels "$oNavigationsinfo->getCategory()->kKategorie" in Template übergebe - {getRating artikelID=$oNavigationsinfo->getCategory()->kKategorie}).
Dann tu dir doch den Gefallen und nenne den Parameter auch categoryID oder kategorieID statt artikelID, wenn du darüber eine Kategorie-ID übergibst. Sonst stolpert man doch da jedesmal drüber...
Das Ergebnis deiner Abfrage kann immer noch NULL sein und wird ungeprüft im Template ausgegeben. Das wird zu einem Fehler führen, wenn eine Kategorie KEINE Bewertungen hat.
 

karabas

Gut bekanntes Mitglied
26. September 2015
177
5
Dann tu dir doch den Gefallen und nenne den Parameter auch categoryID oder kategorieID statt artikelID, wenn du darüber eine Kategorie-ID übergibst. Sonst stolpert man doch da jedesmal drüber...
Das Ergebnis deiner Abfrage kann immer noch NULL sein und wird ungeprüft im Template ausgegeben. Das wird zu einem Fehler führen, wenn eine Kategorie KEINE Bewertungen hat.
Da hast du Recht, habe die Variable in "catID" umbenannt.
In Template prüfe ich ob Bewertungsanzahl größer 0 ist und erst dann wird was ausgegeben.

Es ist ggfs. extrem performancelastig in einer Template-Funktion SQL auszuführen!
Wie kann ich den das anders lösen? Für jede Info diesbezüglich bin ich dir sehr dankbar!

Wie gesagt, ich möchte alle Bewertungen von allen Produkten aus aktuelle Kategorie auf Kategorieseite darstellen.
Mit deine Hilfe kann ich schon auf alle Daten in Template zugreifen, bin wahrscheinlich heute damit fertig und poste endgültigen Code hier rein (vielleicht braucht jemand das auch).
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
529
Halle
Wie kann ich den das anders lösen? Für jede Info diesbezüglich bin ich dir sehr dankbar!
Wenn diese Funktion nur einmalig pro Seite aufgerufen wird ist das OK - deshalb habe ich ja ggfs. geschrieben. ;)
Aufgrund der falschen Benennung des Parameters (artikelID) bin ich jedoch davon ausgegangen, dass dies für jeden Artikel auf der Seite einzeln aufgerufen werden soll. Das wäre dann als zentraler Aufruf besser gewesen.
 

karabas

Gut bekanntes Mitglied
26. September 2015
177
5
Vielen Dank für deine Unterstützung!

Wie versprochen hier das ganze Projekt. Ich muss dazu sagen, dass ich den Snackys-Template von eRock-Marketing nutze und die Anpassungen in Child-Template nur für diesen Template gelten:

Das Ergebnis kann man z.B. hier betrachten: https://www.germes.com/bankauflagen
kategoriebewertungen.jpg
PFAD_CHILD_TEMPLATE/Bootstrap.php:
Code:
public function boot(): void
{
    parent::boot();
    try {
        $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'hatPreiskonfig', [$this, 'hatPreiskonfig']);
        $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'cachePreiskonfig', [$this, 'cachePreiskonfig']);
        /*Eigene Funktion "getRating" registrieren*/
        $this->getSmarty()->registerPlugin(Smarty::PLUGIN_FUNCTION, 'getRating', [$this, 'getRating']);
    } catch (\SmartyException $e) {
        throw new \RuntimeException('Problems during smarty instantiation: ' . $e->getMessage());
    }
}

/*Eigene Funktion "getRating"*/
public function getRating($params, $smarty)
{
    $bewertungen = Shop::Container()->getDB()->queryPrepared(
        'SELECT tbewertung.cName AS Name, tbewertung.cText AS Text, tbewertung.dDatum AS Datum, tbewertung.cTitel AS Titel, tbewertung.nSterne AS Sterne
        FROM tbewertung
        INNER JOIN tkategorieartikel ON tbewertung.kArtikel = tkategorieartikel.kArtikel
        WHERE tkategorieartikel.kKategorie = :catID AND tbewertung.nAktiv = 1
        ORDER BY tbewertung.nSterne DESC',
        ['catID' => $params['catID']],
        ReturnType::ARRAY_OF_ASSOC_ARRAYS
    );
    $smarty->assign('Bewertungen', $bewertungen);
}

PFAD_CHILD_TEMPLATE/productdetails/rating.tpl (habe ich angepasst, damit der Gesamtanzahl von Bewertungen in Klammern hinter den Sternen angezeigt werden):
kategoriebewertungen-2.jpg
Code:
{extends file="{$parent_template_path}/productdetails/rating.tpl"}

{block name='productdetails-rating'}
{if $stars > 0}
{assign var=filename1 value='rate'}
{assign var=filename3 value='.png'}
{if isset($total) && $total > 1}
{lang key='averageProductRating' section='product rating' assign='ratingLabelText'}
{else}
{lang key='productRating' section='product rating' assign='ratingLabelText'}
{/if}
{block name="productdetails-rating-main"}
<div class="rating dpflex-a-center dpflex-wrap" title="{$ratingLabelText}: {$stars}/5">
    {strip}
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star-full"></use></svg>
    </div>
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star{if $stars >= 2}-full{elseif $stars > 1}-half{/if}"></use></svg>
    </div>
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star{if $stars >= 3}-full{elseif $stars > 2}-half{/if}"></use></svg>
    </div>
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star{if $stars >= 4}-full{elseif $stars > 3}-half{/if}"></use></svg>
    </div>
    <div class="img-ct icon op1">
        <svg><use xlink:href="{$ShopURL}/{if empty($parentTemplateDir)}{$currentTemplateDir}{else}{$parentTemplateDir}{/if}img/icons/icons.svg?v={$nTemplateVersion}#icon-star{if $stars >= 5}-full{elseif $stars > 4}-half{/if}"></use></svg>
    </div>
    {/strip}
    {if $nSeitenTyp === $smarty.const.PAGE_ARTIKEL && !empty($total)}
        <small>({$total})</small>
    {elseif empty($total) && !empty($total2)}
        <small>({$total2})</small>
    {/if}
</div>
{/block}
{/if}
{/block}

Snackys-Template hat eigenen Plugin, wo man eigene Inhalte auf der Seite ausgeben kann. Ich habe engender Code in Zone "after_content" bei Seitentyp "Artikelliste" eingefügt:
Code:
{getRating catID=$oNavigationsinfo->getCategory()->kKategorie}
{assign var="gesamtSterne" value=0}
{assign var="anzahlBewertungen" value=$Bewertungen|count}
{if $anzahlBewertungen > 0}
{foreach from=$Bewertungen item=bewertung}
    {assign var="gesamtSterne" value=$gesamtSterne + $bewertung.Sterne}
{/foreach}
{assign var="durchschnitt" value=$gesamtSterne / $anzahlBewertungen}
{assign var="nSterne_arr" value=[0,0,0,0,0]}
{foreach from=$Bewertungen item=bewertung}
    {assign var="index" value=$bewertung.Sterne-1}
    {$nSterne_arr[4-$index] = $nSterne_arr[4-$index]+1}
{/foreach}

<div class="tab-ct tab-pane panel-default" id="tab-votes">
<h2>Produktbewertungen aus der Kategorie "{$oNavigationsinfo->getCategory()->cName}"</h2>
<br>
    <div class="dpflex row">
        <div id="reviews-overview" class="col-xs-12 col-md-4 col-md-push-4">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h4 class="panel-title">
                        <div>
                            <span class="h1 m0">{$durchschnitt|round:1}</span>
                            <span class="h2 m0">/5</span>
                        </div>
                        <div class="float-left">{include file='productdetails/rating.tpl' stars=$durchschnitt|round:1 total2=$anzahlBewertungen}</div>
                    </h4>
                </div>
                <div class="panel-body hidden-print">
                {if $anzahlBewertungen > 0}
                    <div id="article_votes">
                    {foreach name=sterne from=$nSterne_arr item=nSterne key=i}
                        {assign var=int1 value=5}
                        {math equation='x - y' x=$int1 y=$i assign='schluessel'}
                        {assign var=int2 value=100}
                        {math equation='(a/b)*c' a=$nSterne b=$anzahlBewertungen c=$int2 assign='percent'}
                        <div class="dpflex-a-center">
                            <div class="text">
                            {if isset($bewertungSterneSelected) && $bewertungSterneSelected === $schluessel}
                                <strong>
                            {/if}
                            {if $nSterne > 0 && (!isset($bewertungSterneSelected) || $bewertungSterneSelected !== $schluessel)}
                                <a>
                                    <strong>
                                        {$schluessel}
                                        {if $i == 4}
                                            {lang key="starSingular" section="product rating"} ({$nSterne})
                                        {else}
                                            {lang key="starPlural" section="product rating"} ({$nSterne})
                                        {/if}
                                    </strong>
                                </a>
                            {else}
                                {$schluessel}
                                {if $i == 4}
                                    {lang key="starSingular" section="product rating"}
                                {else}
                                    {lang key="starPlural" section="product rating"}
                                {/if}
                            {/if}
                            {if isset($bewertungSterneSelected) && $bewertungSterneSelected === $schluessel}
                                </strong>
                            {/if}
                            </div>
                                <div class="progress">
                                    {if $nSterne > 0}
                                        <div class="progress-bar" role="progressbar" aria-valuenow="{$percent|round}" aria-valuemin="0" aria-valuemax="100" style="width: {$percent|round}%;">
                                            {$nSterne}
                                        </div>
                                    {/if}
                            </div>
                        </div>
                    {/foreach}
                    </div>
                {/if}
                </div>
            </div>
        </div>
        <div id="rv-wp" class="col-xs-12 col-md-8 col-md-pull-8">
            {foreach from=$Bewertungen item=bewertung}
                <div class="review panel panel-default mb-sm bewertung">
                    <div class="review-comment">
                        <div class="top5">
                            <div class="title dpflex-j-between dpflex-a-start row">
                                <strong class="col-xs-12">{$bewertung.Titel}</strong>
                                <span class="col-xs-12">{include file='productdetails/rating.tpl' stars=$bewertung.Sterne}</span>
                            </div>
                            {$bewertung.Text|replace:"\r\n":"<br>"}<br>
                            <small>
                                <cite><span><span>{$bewertung.Name}</span></span>.</cite>, {$bewertung.Datum|date_format:"%d.%m.%Y"}
                            </small>
                            <span class="verified-purchase">{lang key="verKauf" section="custom"}</span>
                        </div>
                    </div>
                </div>
            {/foreach}
            <nav aria-label="Page navigation"><ul id="pagination" class="pagination text-center"></ul></nav>
        </div>
    </div>

</div>
<style>
#article_votes .progress {
    flex-grow: 1;
}
#tab-votes .progress, #tab-votes .progress-bar {
    border-radius: 1rem;
    font-size: 0;
    height: 0.5rem;
    background: #ddd;
}
#tab-votes .progress-bar {
    background: #666;
}
#tab-votes .progress, #tab-votes .progress-bar {
    border-radius: 1rem;
    font-size: 0;
    height: 0.5rem;
}
#article_votes .text {
    width: 7rem;
}
/*#reviews-overview {
    min-width: 25rem;
    order: 1;
}
#rv-wp {
    flex-grow: 1;
    margin-right: 4rem;
}*/
.lh-4rem {
    line-height: 4rem;
}
.bewertung {
    display: none;
}
#pagination {
    padding: 0;
}
.pagination li {
    display: inline;
}

.pagination li a {
    width: 40px;
    height: 40px;
    line-height: 40px;
    border-radius: 50%;
    display: inline-block;
    text-align: center;
    margin-right: 5px;
    border: 1px solid #ddd;
}

.pagination li.active a {
    background-color: #900;
    color: white;
    border-color: #900;
}

.pagination li.disabled a {
    color: #ddd;
    cursor: not-allowed;
    background-color: #f5f5f5;
}

/* Styles für Hover-Effekte */
.pagination li a:hover:not(.active) {
    background-color: #ddd;
}
</style>
<script>
$(document).ready(function() {
    var itemsPerPage = 4; // Anzahl der Bewertungen pro Seite
    var totalItems = $('.bewertung').length; // Gesamtzahl der Bewertungen
    var totalPages = Math.ceil(totalItems / itemsPerPage); // Anzahl der Seiten
    var visiblePages = 5; // Anzahl der sichtbaren Paginationslinks

    // Funktion zum Anzeigen der Bewertungen für eine bestimmte Seite
    function showPage(page) {
        $('.bewertung').hide();
        var start = (page - 1) * itemsPerPage;
        var end = start + itemsPerPage;
        $('.bewertung').slice(start, end).show();
    }

    // Funktion zum Erstellen der Pagination-Links
    function renderPagination(currentPage) {
        var startIndex = (currentPage - Math.floor(visiblePages / 2) > 0) ? currentPage - Math.floor(visiblePages / 2) : 1;
        var endIndex = (startIndex + visiblePages <= totalPages) ? startIndex + visiblePages : totalPages + 1;
        if (endIndex - startIndex < visiblePages) {
            startIndex = endIndex - visiblePages > 0 ? endIndex - visiblePages : 1;
        }

        var paginationHtml = '<li class="page-item ' + (currentPage === 1 ? 'disabled' : '') + '"><a class="page-link" href="#" aria-label="Previous" data-page="' + (currentPage - 1) + '"><span aria-hidden="true">&laquo;</span></a></li>';
        
        for (var i = startIndex; i < endIndex; i++) {
            paginationHtml += '<li class="page-item ' + (i === currentPage ? 'active' : '') + '"><a class="page-link" href="#" data-page="' + i + '">' + i + '</a></li>';
        }
        
        paginationHtml += '<li class="page-item ' + (currentPage === totalPages ? 'disabled' : '') + '"><a class="page-link" href="#" aria-label="Next" data-page="' + (currentPage + 1) + '"><span aria-hidden="true">&raquo;</span></a></li>';
        
        $('#pagination').html(paginationHtml);
    }

    // Klick-Event für die Pagination-Links
    $('#pagination').on('click', 'a.page-link', function(e) {
        e.preventDefault();
        var page = $(this).data('page');
        if (page >= 1 && page <= totalPages) {
            renderPagination(page);
            showPage(page);
        }
    });

    // Initialisieren der Pagination und Anzeigen der ersten Seite
    renderPagination(1);
    showPage(1);
});
</script>
{/if}

Bin kein richtiger Programmierer, daher würde ich für jede Art an Verbesserungsvorschläge dankbar.
 
Ähnliche Themen
Titel Forum Antworten Datum
Ameise (1.11.11.0) Export auf Clients nicht möglich - Das Dezimaltrennzeichen kann nicht die leere Zeichenfolge sein JTL-Wawi 1.11 5
Zugriff verweigert nach Umzug auf neuen Rechner, X-Rechnung kann nicht gespeichert werden JTL-Wawi 1.11 4
Neu Retourenetikett für Briefe kann unter Internetmarke 2.0 nicht erstellt werden JTL-ShippingLabels - Fehler und Bugs 3
Neu Widerrufsbutton: Jeder, der den Button betätigt, kann das Widerrufsformular ausfüllen und absenden - auch ohne Bestellung? Allgemeine Fragen zu JTL-Shop 90
Neu Rücknahmebedingungen werden nicht aktualisiert - Widerrufsbutton - V1.11.9 eBay-Anbindung - Fehler und Bugs 1
Beantwortet Shop Abgleich nach Update auf 5.7.2 nicht mehr möglich JTL-Shop - Fehler und Bugs 1
Neu Rechnungen zeigen Paypal Text an, obwohl er in der Vorlage nicht ausgewählt ist JTL-Wawi 2.0 3
Neu E-Rechnungen werden von DATEV nicht akzeptiert JTL-Wawi 2.0 0
Neu DHL funktioniert nicht JTL-ShippingLabels - Fehler und Bugs 5
Neu Produktionsaufträge tauchen nicht in der Workbench auf JTL-Plan&Produce - Fehler und Bugs 2
Login Wawi nicht möglich nach Update auf 1.11.11 JTL-Wawi 1.11 1
Neu JSON-Download nicht möglich - Gibt es eine andere Quelle? Schnittstellen Import / Export 1
Neu Sortierung der Variationswerte funktioniert nicht mehr Shopify-Connector 4
Neu Hinweis zum Auftrag wird seit Update auf die 1.11 nicht mehr angezeigt JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu Zahlungstart nicht anzeigen JTL-Shop - Fehler und Bugs 1
Neu Plugin: JTL Exportformat Google Shopping gibt <g:google_product_category> unter Shop 5.7.1 und Wawi 2.0.4 nicht aus Plugins für JTL-Shop 1
Neu Produktionsdatenblatt erstellen nicht möglich JTL-Plan&Produce - Fehler und Bugs 0
Skonto wird bei Zahlung setzen nicht berücksichtigt JTL-Wawi 1.11 2
Retourenetikett Internetmarke funktioniert nicht mehr JTL-Wawi 2.0 1
Neu Laut Backend Shop Update für Shop 5.71 - Download nicht zu finden? Betrieb / Pflege von JTL-Shop 3
Neu Fesnter lässt sich unter Vorlage bearbeiten nicht vergrößern oder ändern eBay-Anbindung - Fehler und Bugs 7
Neu OPC - Rich Text Änderungen werden nicht übernommen Allgemeine Fragen zu JTL-Shop 1
Neu Kategorie erscheint nicht im Shop Allgemeine Fragen zu JTL-Shop 5
Neu WMS-APP funktioniert nicht - Fehlermeldung: andere Edition wird benötigt JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Eigener Drittshop-Connector (jtl/connector 5.3): valide Variationskombinationen werden mit „besitzt keine Variationen" nicht gesendet JTL-Wawi 1.11 1
Neu Erstellung der Sitemap bei WaWi Abgleich funktioniert nicht Allgemeine Fragen zu JTL-Shop 0
Neu DHL 4.0 mit JTL-ShippingLabels funktioniert nicht JTL-ShippingLabels - Fehler und Bugs 2
Neu JTL Lizensserver ist nicht erreichbar eBay-Anbindung - Fehler und Bugs 0
Wawi 1.11. Rechnungsanhang funktioniert nicht mehr bei Versandmail JTL-Wawi 1.11 6
Neu Konfigurator konfigurieren - ich schaffe es nicht Allgemeine Fragen zu JTL-Shop 1
Neu eBay Vorlage lässt sich nicht mehr öffnen JTL-Wawi - Fehler und Bugs 0
Dashboard Statistik lädt nicht mehr JTL-Wawi 1.11 9
Neu Amazon Bestellungen werden angezeigt aber nicht übernommen User helfen Usern - Fragen zu JTL-Wawi 4
Neu Herstellerbilder werden nicht angezeigt JTL-Shop - Fehler und Bugs 0
Neu Apple Pay über PayPal nicht zu verbinden (Die Domain-Verifizierungsdatei wurde nicht gefunden.) Technische Fragen zu Plugins und Templates 26
Neu Shop-Update auf 5.7.1: Sprachvariablen im Widerrufsformular werden nicht erkannt, obwohl vorhanden?! JTL-Shop - Fehler und Bugs 3
Neu JTL PayPal Checkout 2.3.0 ... 1. Update klappte nicht, 2. Update nun Eintrag doppelt Plugins für JTL-Shop 22
Probleme beim Shopify-Abgleich: Artikel trotz erfolgreichem Abgleich nicht in Shopify auffindbar JTL-Wawi 1.11 1
Neu Warnung: Attribute via JTL Funktion JTL_GetProductAttribute() funktioniert nicht zuverlässig Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu CCV Pax A920 Terminal über O.P.I klappt nicht Allgemeine Fragen zu JTL-POS 0
Nach dem Update werden die Drucker nicht mehr erkannt JTL-Wawi 2.0 1
Neu shopvote bild geht nicht weg Allgemeine Fragen zu JTL-Shop 0
Neu Update von Modul DHL 3.0 aud 4.0 - Versandlabels lassen sich nicht erstellen JTL-ShippingLabels - Fehler und Bugs 17
Neu JTL Shop 5.7.1 mit Fehlern - versandarten zahlungsarten nicht änderbar, leere weiße Seite JTL-Shop - Fehler und Bugs 5
Neu Stückliste bestellbar obwohl Einzelteile NICHT bestellbar Betrieb / Pflege von JTL-Shop 16
Kontrollkästchen "Export" bei Zahlungen nicht mehr angehakt JTL-Wawi 2.0 0
Automatische Pickliste geht nicht mehr seit Update JTL-Wawi 2.0 0
Berechnung des Bruttobetrages stimmt nicht JTL-Wawi 2.0 2
Manche Produkte werden nicht erkannt JTL/ Shopify JTL-Wawi 2.0 3
Beantwortet [WAWI-85758] Nach Update auf 1.11.10 klappt stornieren über ios Wawi App nicht mehr JTL-Workflows - Fehler und Bugs 1

Ähnliche Themen