# Einer Kategorie eine feste anzahl artikel pro Seite vorgeben

**URL:** <https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074>\
**Category:** Shopware 3.5\
**Tags:** templates--design\
**Created:** [9. Mai 2012 um 19:23 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074 "2012-05-09T19:23:38Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![rattatui](https://avatars.discourse-cdn.com/v4/letter/r/49beb7/32.png) [@rattatui](https://forum.shopware.com/u/rattatui)\
**Post date:** [9. Mai 2012 um 19:23 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/1 "2012-05-09T19:23:38Z")

</div>

Hallo, ich würde gerne einem eigenen Listing-Template vorgeben, wie viele Artikel (pro Seite) angezeigt werden sollen - das wird wohl in der \frontend\listing\listing\_actions.tpl festgelegt, oder? Zurzeit kann man ja nur global im Backend die Anzahl vorgeben, aber das betrifft dann unerwünschterweise ja alle Kategorien… Da es ein eigenes Template ist könnte ich also eine eigene listing\_actions\_xyz.tpl anlegen und laden. Auch kann diese Vorgabe gerne direkt “fest verdrahtet” im Template stehen - nur was muss wie geändert werden? Hat Jemand eine Idee? Grüße rattatui

---

<div class="post-metadata">

**Author:** ![rattatui](https://avatars.discourse-cdn.com/v4/letter/r/49beb7/32.png) [@rattatui](https://forum.shopware.com/u/rattatui)\
**Post date:** [11. Mai 2012 um 10:42 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/2 "2012-05-11T10:42:55Z")

</div>

(push…) Keiner eine Idee? ☹ Grüße rattaui

---

<div class="post-metadata">

**Author:** ![Klingelbeutel](https://avatars.discourse-cdn.com/v4/letter/k/f08c70/32.png) [@Klingelbeutel](https://forum.shopware.com/u/Klingelbeutel)\
**Post date:** [11. Mai 2012 um 12:01 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/3 "2012-05-11T12:01:31Z")

</div>

Ich bin zwar kein Templater AAAABER es müsste sich ja hier irgendwo verstecken 😉 [code] {\* Article per page \*} {block name=‘frontend\_listing\_actions\_items\_per\_page’} {if $sPerPage}

 {s name='ListingLabelItemsPerPage'}{/s} {foreach from=$sPerPage item=perPage} {$perPage.value} {/foreach} 
 {/if} {/block}[/code] Oder? So ganz Blick ich es noch nicht aber mal schauen, ob ich mich reinfuchsen kann ;-)

---

<div class="post-metadata">

**Author:** ![rattatui](https://avatars.discourse-cdn.com/v4/letter/r/49beb7/32.png) [@rattatui](https://forum.shopware.com/u/rattatui)\
**Post date:** [11. Mai 2012 um 14:08 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/4 "2012-05-11T14:08:59Z")

</div>

Hi Klingelbeutel, ich vermute auch das dies die richtige Stelle ist… Wäre klasse wenn Du da etwas rausfindest :thumbup: Grüße rattatui

---

<div class="post-metadata">

**Author:** ![Klingelbeutel](https://avatars.discourse-cdn.com/v4/letter/k/f08c70/32.png) [@Klingelbeutel](https://forum.shopware.com/u/Klingelbeutel)\
**Post date:** [11. Mai 2012 um 15:44 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/5 "2012-05-11T15:44:42Z")

</div>

Hab mich jetzt durchgezappt und das Ergebnis: Ich finds nicht 😃 Habe dann doch zu lange nichts in diesem Bereich gemacht… Ggf. hilft dir dieser Artikel weiter: [http://wiki.shopware.de/Ausgabe-bestimmter-Artikel-auf-der-Startseite\_detail\_468.html](http://wiki.shopware.de/Ausgabe-bestimmter-Artikel-auf-der-Startseite%5C_detail%5C_468.html) Besten Gruß

---

<div class="post-metadata">

**Author:** ![tetri999](https://avatars.discourse-cdn.com/v4/letter/t/ccd318/32.png) [@tetri999](https://forum.shopware.com/u/tetri999)\
**Post date:** [11. Mai 2012 um 15:46 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/6 "2012-05-11T15:46:51Z")

</div>

hallo, da das auf mich wohl auch zukommt, hab ich mal ein bißchen experimentiert. Das Hauptproblem ist, den Wert von sPerPage wieder auf den Standartwert zurückzusetzen, wenn Du von dem speziellen Template auf die anderen gehst. Das geht wohl nur mit einem Plugin: siehe [http://wiki.shopware.de/Einfuehrung-Hook-System\_detail\_615.html](http://wiki.shopware.de/Einfuehrung-Hook-System%5C_detail%5C_615.html) Ich habe in engine\Shopware\Plugins\Local\Frontend[b]sPerPageHook[/b] folgende Bootstrap.php angelegt: [code]\<?php class Shopware\_Plugins\_Frontend\_sPerPageHook\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap {

public function install() {  
$hook = $this-\>createHook( ‘sArticles’, ‘sGetArticlesByCategory’, ‘set\_sPerPage’, Enlight\_Hook\_HookHandler::TypeBefore, 0 ); $this-\>subscribeHook($hook); return true; } static function set\_sPerPage(Enlight\_Hook\_HookArgs $args) { $id = $args-\>getArgs(); if (!empty(Shopware()-\>System()-\>\_POST[‘sPerPage’])){ Shopware()-\>System()-\>\_SESSION[‘tempPerPage’] = Shopware()-\>System()-\>\_POST[‘sPerPage’]; } if($id[0] == 2157) { Shopware()-\>System()-\>\_GET[‘sPerPage’] = ;  
unset(Shopware()-\>System()-\>\_SESSION[‘sPerPage’]);  
} else {  
Shopware()-\>System()-\>\_GET[‘sPerPage’] = Shopware()-\>System()-\>\_SESSION[‘tempPerPage’];  
}  
}

}[/code]In \_SESSION[‘tempPerPage’] (Zeile 23) liegt der Wert von sPerPage, falls man ihn über die Auswahlbox Artikel pro Seite umgeschaltet hat.  
if($id[0] == 2157) fängt das bewußte Template ab, über die categoryId, für die anderen Templates wird der alte Wert wieder eingesetzt.  
Den Rest macht die Funktion sGetArticlesByCategory aus engine\core\class\sArticles.

Beste Grüße

---

<div class="post-metadata">

**Author:** ![rattatui](https://avatars.discourse-cdn.com/v4/letter/r/49beb7/32.png) [@rattatui](https://forum.shopware.com/u/rattatui)\
**Post date:** [11. Mai 2012 um 16:40 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/7 "2012-05-11T16:40:35Z")

</div>

Hi Klingelbeutel, [quote]Ggf. hilft dir dieser Artikel weiter:…[/quote] Das hilft mir hier zwar nicht direkt, ist aber trotzdem sehr interessant und bis SW 3.0.5 (diese Funktion ist ab 3.5 auch im Backend vorhanden), aber gut zu wissen wo da geschraubt wird 😉 danke Dir. Hi tetri999, In meinem (speziellen) Listing-Template wird die Auswahlbox „Artikel pro Seite“ nicht mehr angezeigt, momentan wird ja automatisch der Standardwert aus dem Backend übernommen. Die standard-Listing-Templates benutze ich an anderer Stelle aber auch. Ich müsste Deinen Plugin Code mal nachher ausprobieren - eben trägst Du die Kategorie-ID ja fest ein - könnte man hier nicht auch einen Wert von einem Kategorie Freitext-Feld (z.B. `$sCategory.ac\_attr6` nehmen? Dann wäre man ja recht flexibel… …Weiterhin, damit ich das richtig verstehe, fängt Dein Code eine andere gewählte Voreinstellung ab und stellt bei Kategorie(template-)wechsel wieder auf den Standardwert zurück - wie kann ich aber in meinem Fall überhaupt erstmal etwas eigenes vorgeben? …alle Artikel einer Kategorie anzuzeigen, würde mir auch schon helfen :wtf: Grüße rattatui

---

<div class="post-metadata">

**Author:** ![tetri999](https://avatars.discourse-cdn.com/v4/letter/t/ccd318/32.png) [@tetri999](https://forum.shopware.com/u/tetri999)\
**Post date:** [11. Mai 2012 um 18:20 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/8 "2012-05-11T18:20:37Z")

</div>

zunächst zu [quote]könnte man hier nicht auch einen Wert von einem Kategorie Freitext-Feld[/quote] in der Funktion set\_sPerPage vor die Abfrage folgendes: `... $category = $args-\>getSubject()-\>sSYSTEM-\>\_GET['sCategory']; $catContent = Shopware()-\>Modules()-\>Categories()-\>sGetCategoryContent($category); if ( !empty($catContent['ac\_attr6']) ){ $sPerPage = $catContent['ac\_attr6']; } if( !empty($sPerPage) ) { Shopware()-\>System()-\>\_GET['sPerPage'] = $sPerPage; unset(Shopware()-\>System()-\>\_SESSION['sPerPage']); } else { Shopware()-\>System()-\>\_GET['sPerPage'] = Shopware()-\>System()-\>\_SESSION['tempPerPage']; }`Damit wird sPerPage auf den Wert von ac\_attr6 gesetzt, wenn leer -\> dann der Standardwert. zu [quote]wie kann ich aber in meinem Fall überhaupt erstmal etwas eigenes vorgeben[/quote] das eigene wird ja durch das plugin bzw. jetzt durch den Wert ac\_attr6 gesteuert, die anderen Templates nehmen den Standardwert aus dem Backend. daß die Auswahlbox “Artikel pro Seite” auf Deinem eigenen Listing nicht angezeigt wird, könnte daran liegen, daß das Template nicht unter den $defaultViews registriert ist. Das hab ich in der engine/Shopware/Controllers/Frontend/Listing.php gefunden, undzwar zweimal: in Zeile 56 und 67. Da hab ich einfach zum Testen in array(‘article\_listing\_1col.tpl’, ‘article\_listing\_2col.tpl’, ‘article\_listing\_3col.tpl’, ‘article\_listing\_4col.tpl’) hinten das eigene Template angehängt (müßte man natürlich auch mit plugin lösen). Aber diese Auswahlbox brauchst Du ja eigentlich gar nicht für den speziellen Wert. Beste Grüße Nachtrag: Ich habe das frontend/listing/index.tpl überschrieben. Da muß das eigene Template natürlich auch rein: [code]{\* Main content \*} {block name=‘frontend\_index\_content’}

… {\* Change / Logic move to controller \*} {if $sCategoryContent.template eq “article\_listing\_1col.tpl”} {assign var=“sTemplate” value=“listing-1col”} {assign var=“sBoxMode” value=“list”} … {elseif $sCategoryContent.template eq “my\_special\_template.tpl”} {assign var=“sTemplate” value=“my\_special\_template”} {assign var=“sBoxMode” value=“table”} {else} {assign var=“sTemplate” value=“listing-3col”} {assign var=“sBoxMode” value=“table”} {/if} …[/code]weil das darunter in `{\* Listing \*} {block name="frontend\_listing\_index\_listing"} {include file='frontend/listing/listing.tpl' sTemplate=$sTemplate} {/block}`mit übergeben wird.

---

<div class="post-metadata">

**Author:** ![rattatui](https://avatars.discourse-cdn.com/v4/letter/r/49beb7/32.png) [@rattatui](https://forum.shopware.com/u/rattatui)\
**Post date:** [11. Mai 2012 um 19:17 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/9 "2012-05-11T19:17:34Z")

</div>

Hallo, danke sehr :thumbup: …also ab Zeile 22 Deine Ergänzung dazwischenschieben und der andere/restliche Code bleibt so? Sonst wäre ja der Wert der Kategorie ID weg… Das die Auswahlbox bei mir nicht erscheint ist beabsichtigt - war missverständlich von mir geschrieben. Was Du im Nachtrag geschrieben hast: Ich habe das Listing Template ja nach dem Wiki [hier](http://wiki.shopware.de/Tutorial-Angepasstes-Artikellisting-Darstellung-der-Artikelboxen%5C_detail%5C_559%5C_484.html) erstellt, dabei musste auch nichts in der frontend/listing/index.tpl eingetragen werden - ist das jetzt zwingend notwendig? [quote]Ich habe das frontend/listing/index.tpl überschrieben.[/quote] hiermit, oder?: `Enlight\_Hook\_HookHandler::TypeBefore,` …wäre das auch möglich in diesem Fall und die Änderung in der index.tpl nicht nötig?: `Enlight\_Hook\_HookHandler::TypeAfter,` Grüße rattaui

---

<div class="post-metadata">

**Author:** ![tetri999](https://avatars.discourse-cdn.com/v4/letter/t/ccd318/32.png) [@tetri999](https://forum.shopware.com/u/tetri999)\
**Post date:** [11. Mai 2012 um 19:48 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/10 "2012-05-11T19:48:35Z")

</div>

um Mißverständnissen vorzubeugen, hier nochmal die ganze set\_sPerPage aus dem sPerPageHook: `static function set\_sPerPage(Enlight\_Hook\_HookArgs $args) { if (!empty(Shopware()-\>System()-\>\_POST['sPerPage'])){ Shopware()-\>System()-\>\_SESSION['tempPerPage'] = Shopware()-\>System()-\>\_POST['sPerPage']; } $category = $args-\>getSubject()-\>sSYSTEM-\>\_GET['sCategory']; $catContent = Shopware()-\>Modules()-\>Categories()-\>sGetCategoryContent($category); if ( !empty($catContent['ac\_attr6']) ){ $sPerPage = $catContent['ac\_attr6']; } if( !empty($sPerPage) ) { Shopware()-\>System()-\>\_GET['sPerPage'] = $sPerPage; unset(Shopware()-\>System()-\>\_SESSION['sPerPage']); } else { Shopware()-\>System()-\>\_GET['sPerPage'] = Shopware()-\>System()-\>\_SESSION['tempPerPage']; } }`Die aktuelle KategorieID wird in Zeile 6 ermittelt, und wenn im zugehörigen categoryContent ac\_attr6 gesetzt ist, wird dieser Wert als sPerPage verwendet, sonst der Standardwert. Das frontend/listing/index.tpl ist eine Smarty-Template-Datei, keine .php, da ist nichts mit TypeBefore oder TypeAfter. Wenn man dort in {include file=‘frontend/listing/listing.tpl’ sTemplate=$sTemplate} den Template-Namen übergibt, kann man ihn z.B. als CSS-Klasse einbauen und darüber dann auch ein spezielles Layout dieses Kategorie-Templates steuern. Das mit den $defaultViews in engine/Shopware/Controllers/Frontend/Listing.php am besten vergessen … Beste Grüße Entschuldigung, Du meintest TypeAfter in der sPerPageHook, das geht aber nicht - der Wert Shopware()-\>System()-\>\_GET[‘sPerPage’] muß am Anfang gesetzt werden, weil im weiteren Verlauf der sGetArticlesByCategory daraus die DB-Abfrage zusammengebaut wird.

---

<div class="post-metadata">

**Author:** ![rattatui](https://avatars.discourse-cdn.com/v4/letter/r/49beb7/32.png) [@rattatui](https://forum.shopware.com/u/rattatui)\
**Post date:** [11. Mai 2012 um 20:35 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/11 "2012-05-11T20:35:27Z")

</div>

danke Dir vielmals. [quote]Die aktuelle KategorieID wird in Zeile 6 ermittelt, und wenn im zugehörigen categoryContent ac\_attr6 gesetzt ist, wird dieser Wert als sPerPage verwendet, sonst der Standardwert.[/quote] Ahh gut jetzt verstehe ich. [quote]Entschuldigung, Du meintest TypeAfter in der sPerPageHook, das geht aber nicht - der Wert Shopware()-\>System()-\>\_GET[‚sPerPage‘] muß am Anfang gesetzt werden, weil im weiteren Verlauf der sGetArticlesByCategory daraus die DB-Abfrage zusammengebaut wird.[/quote] Ja genau so meinte ich 🙂 Danke für die Aufklärung. [quote]{include file=‚frontend/listing/listing.tpl‘ sTemplate=$sTemplate} den Template-Namen übergibt, kann man ihn z.B. als CSS-Klasse einbauen und darüber dann auch ein spezielles Layout dieses Kategorie-Templates steuern.[/quote] Ja das nutze ich auch schon reichlich - eine gute Sache. [quote]Das mit den $defaultViews in engine/Shopware/Controllers/Frontend/Listing.php am besten vergessen …[/quote] Wird gemacht… endlich mal was einfaches! 🕶 Schönes WE wünsche ich Dir. Grüße rattatui

---

<div class="post-metadata">

**Author:** ![ShopDaniel](https://avatars.discourse-cdn.com/v4/letter/s/d26b3c/32.png) [@ShopDaniel](https://forum.shopware.com/u/ShopDaniel)\
**Post date:** [21. März 2013 um 13:32 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/12 "2013-03-21T13:32:56Z")

</div>

Kann es sein, dass dieses Workaround mit 4.0.6 nicht mehr funktioniert? Habe es ausprobiert, leider ohne Ergebnis. So bin ich vorgegangen: 1. Bootstrap.php hochgeladen 2. Im Plugin-Manager aktiviert 3. Im entsprechenden Freitextfeld der Kategorie eine Zahl eingetragen

---

<div class="post-metadata">

**Author:** ![Chaos](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/chaos/32/13622_2.png) [@Chaos](https://forum.shopware.com/u/Chaos)\
**Post date:** [4. November 2014 um 14:15 UTC](https://forum.shopware.com/t/einer-kategorie-eine-feste-anzahl-artikel-pro-seite-vorgeben/7074/13 "2014-11-04T14:15:55Z")

</div>

Bei mir klappt es leider auch nicht. Nutze SW 4.3.2. Kann jemand eine funktionierende Lösung benennen?
