Anzahl der angzeigten Artikel stimmt bei neuer Funktion nicht, Pagination

Hallo,

ich habe in unserem Shop einen Schieberegler für den Preis eingebaut. Dieser funktioniert problemlos.

Nun wollte ich die Anzeige um einen Schieberegler erweitern. Mit diesem soll in einer Kategorie (Objektive) die Brennweite wählbar sein. Der Schieberegler funktioiniert an sich problemlos, nur die Anzahl der in der Artikelliste angezeigten Artikel weicht von der _artperPage Menge ab, sprich bei _artperpage = 10 werden nur 7 angezeigt, bei gefilterter Liste wechselt die Anzahl sogar.

Ich habe die Funktion _getCategoryCountSelect angepasst, sie erhält die gleiche Anzahl wie _getCategorySelect.

Ich habe, um auf den Wert für die Brennweite (Kategorie Objektive) zugreifen zu können, den Query erweitert.

Standard Query:

$sSelect = "SELECT $sFields FROM ($sO2CView as oc left join $sArticleTable
                    ON $sArticleTable.oxid = oc.oxobjectid) inner join oxobject2attribute on oxobject2attribute.oxobjectid = oc.oxobjectid
                    WHERE ".$this->getBaseObject()->getSqlActiveSnippet()." and $sArticleTable.oxparentid = ''
                    and oc.oxcatnid = ".$oDb->quote($sCatId)." $sFilterSql ";
  

angepasster Query


        
        $sSelect = "SELECT $sFields FROM $sO2CView as oc left join $sArticleTable
                    ON $sArticleTable.oxid = oc.oxobjectid
                    WHERE ".$this->getBaseObject()->getSqlActiveSnippet()." and $sArticleTable.oxparentid = ''
                    and oc.oxcatnid = ".$oDb->quote($sCatId)." $sFilterSql ";

Der angepasste Query wird nur in der bestimmten Kategorie genutzt, in den übrigen der Standard.

Der Schiebregler für den Preis kam ja ohne eine Anpassung des Querys aus. Kann jemand sehen ob es da bereits einen Fehler gibt?

Oder wird die Pagination an anderer Stelle erstellt?

Falls noch mehr Code benötigt wird, werde ich den natürlich bereitstellen.

Vielen Dank schonmal.

VG Thomas

oxarticlelist::loadCategoryArticles

        // calc count - we can not use count($this) here as we might have paging enabled
        // #1970C - if any filters are used, we can not use cached category article count
        $iArticleCount = null;
        if ( $aSessionFilter) {
            $iArticleCount = oxDb::getDb()->getOne( $this->_getCategoryCountSelect( $sCatId, $aSessionFilter ) );
        }

"if ( $aSessionFilter) " musst du erweitern oder rausschmeissen damit die richtige Anzahl gezählt wird.

Hallo,

vielen Dank schonmal. Das werde ich prüfen. Die Funkion _getCategoryCountSelect hatte ich bereits angepasst. Die Funkion erhält die gefilterten Artikel.

Wie gesagt, ich prüfe das nochmalund melde mich.

VG Thomas

Hallo nochmal,

ich habe die Abfrage jetzt umgebaut. Ich habe auch beim anpassen des Sessionfilter eine fehlerhafte Anzahl erhalten.

Die Werte werden jetzt in der oxarticles gespeichert, nicht mehr in der oxobject2attribute. Dies ermöglicht die Daten zu nutzen, ohne den query für _getCategorySelect und _getCategoryCountSelect zu erweitern.

Der Schieberegler für die Brennweite der Objektive funktioniert jetzt mit der korrekten Pagination.

VG Thomas