Magento – Ausgabe der Kategoriebeschreibung

Wie man die Kategoriebeschreibung ausschließlich auf der ersten Seite der Kategorie ausgibt, soll im folgenden Beitrag erläutert werden.

Zuallererst benötigen wir die Datei, die standardmäßig für die Ausgabe der Kategoriebeschreibung zuständig ist.
./app/design/frontend/base/default/template/catalog/category/view.phtml

Als nächstes wird ein Override erstellt.
./app/design/frontend/MyPackage/MyTheme/template/catalog/category/view.phtml

Mage::App()->getRequest() – Kategorie-Informationen auslesen

Im ersten Schritt habe ich folgenden Code in die view.phtml („Override-Datei“) eingebunden:

var_dump(Mage::App()->getRequest());

In meinem Beispiel erhält man folgende zusätzliche Ausgabe/Informationen:

object(Mage_Core_Controller_Request_Http)#12 (26) { ["_originalPathInfo":protected]=> string(20) "/category-three.html" 
["_storeCode":protected]=> NULL ["_requestString":protected]=> string(20) "/category-three.html" ["_rewritedPathInfo":protected]=> NULL ["_requestedRouteName":protected]=> NULL ["_routingInfo":protected]=> array(0) { } ["_route":protected]=> string(7) "catalog" ["_directFrontNames":protected]=> array(2) { ["api"]=> string(0) "" ["xmlconnect"]=> string(0) "" } ["_controllerModule":protected]=> string(12) "Mage_Catalog" ["_isStraight":protected]=> bool(false) ["_beforeForwardInfo":protected]=> array(0) { } ["_paramSources":protected]=> array(2) { [0]=> string(4) "_GET" [1]=> string(5) "_POST" } ["_requestUri":protected]=> string(39) "/magento.com/catalog/category/view/id/5" ["_baseUrl":protected]=> string(12) "/magento.com" ["_basePath":protected]=> string(12) "/magento.com" ["_pathInfo":protected]=> string(26) "catalog/category/view/id/5" ["_params":protected]=> array(1) { ["id"]=> string(1) "5" } ["_rawBody":protected]=> NULL ["_aliases":protected]=> array(1) { ["rewrite_request_path"]=> string(19) "category-three.html" } ["_dispatched":protected]=> bool(true) ["_module":protected]=> string(7) "catalog" ["_moduleKey":protected]=> string(6) "module" ["_controller":protected]=> string(8) "category" ["_controllerKey":protected]=> string(10) "controller" ["_action":protected]=> string(4) "view" ["_actionKey":protected]=> string(6) "action" }

Wie wirken sich Limiter, Pages, Sorter & Co auf diese Informationen aus?

Da die Kategoriebeschreibung nur auf der ersten Seite einer jeden Kategorie angezeigt werden soll, ist es sinnvoll zu wissen, was passiert bzw. welche Informationen sich wie ändern, wenn bestimmte Faktoren (Sortierung, Filterung, Paginierung etc.) verändert werden.

Um die Änderungen deutlicher zu machen, werden nur noch die „relevanten“ Zeilen angezeigt.

Beispiel 1 – Paginierung – Aufruf der 2. Seite

object(Mage_Core_Controller_Request_Http)#12 (26) {
["_originalPathInfo":protected]=> string(20) "/category-three.html"
["_requestString":protected]=> string(20) "/category-three.html"
["_requestUri":protected]=> string(43)
"/magento.com/catalog/category/view/id/5?p=2"
["_baseUrl":protected]=> string(12) "/magento.com"
["_basePath":protected]=> string(12) "/magento.com"
["_pathInfo":protected]=> string(26) "catalog/category/view/id/5"
}

Beispiel 2 – Sortierung nach Preis

object(Mage_Core_Controller_Request_Http)#12 (26) {
["_originalPathInfo":protected]=> string(20) "/category-three.html"
["_requestString":protected]=> string(20) "/category-three.html"
["_requestUri":protected]=> string(59)
"/magento.com/catalog/category/view/id/5?dir=asc&order=price"
["_baseUrl":protected]=> string(12) "/magento.com"
["_basePath":protected]=> string(12) "/magento.com"
["_pathInfo":protected]=> string(26) "catalog/category/view/id/5"
}

Beispiel 3 – Limiter – Zeige 15 Artikel pro Seite

object(Mage_Core_Controller_Request_Http)#12 (26) {
["_originalPathInfo":protected]=> string(20) "/category-three.html"
["_requestString":protected]=> string(20) "/category-three.html"
["_requestUri":protected]=> string(48)
"/magento.com/catalog/category/view/id/5?limit=15"
["_baseUrl":protected]=> string(12) "/magento.com"
["_basePath":protected]=> string(12) "/magento.com"
["_pathInfo":protected]=> string(26) "catalog/category/view/id/5"
}

Beispiel 4 – Filterung

object(Mage_Core_Controller_Request_Http)#12 (26) {
["_originalPathInfo":protected]=> string(20) "/category-three.html"
["_requestString":protected]=> string(20) "/category-three.html"
["_requestUri":protected]=> string(47)
"/magento.com/catalog/category/view/id/5?color=4"
["_baseUrl":protected]=> string(12) "/magento.com"
["_basePath":protected]=> string(12) "/magento.com"
["_pathInfo":protected]=> string(26) "catalog/category/view/id/5"
}

Die 4 Beispiele zeigen, dass sich ausschließlich der Wert ["_requestUri":protected] ändert.
Damit ist dieser Wert die ideale Grundlage für mein Vorhaben.

Auslesen der relevanten Daten

Nun werden die Daten erst einmal mit Hilfe von Variablen geholt.

$CatOriginalPathInfo = Mage::App()->getRequest()->getOriginalPathInfo();
// ["_originalPathInfo":protected]=> string(20)
// "/category-three.html"
$CatRequestString = Mage::App()->getRequest()->getRequestString();
// ["_requestString":protected]=> string(20)
// "/category-three.html"
$CatRequestUri = Mage::App()->getRequest()->getRequestUri();
// ["_requestUri":protected]=> string(47)
// "/magento.com/catalog/category/view/id/5?color=4"
$CatBaseUrl = Mage::App()->getRequest()->getBaseUrl();
// ["_baseUrl":protected]=> string(12)
// "/magento.com"
$CatBasePath = Mage::App()->getRequest()->getBasePath();
// ["_basePath":protected]=> string(12)
// "/magento.com"
$CatPathInfo = Mage::App()->getRequest()->getPathInfo();
// ["_pathInfo":protected]=> string(26)
// "catalog/category/view/id/5"

Im Prinzip müssen wir nur noch vergleichen bzw. prüfen, ob die aktuelle URL mit der Standard-URL übereinstimmt.
Wenn das der Fall ist, wird die Kategoriebeschreibung ausgegeben.

$CatDefaultUrl = Mage::App()->getRequest()->getBasePath().'/'.Mage::App()->getRequest()->getPathInfo();
$CatCurrentUrl = Mage::App()->getRequest()->getRequestUri();

So sieht es dann aus, wenn wir mit den Variablen arbeiten.

$CatDefaultUrl = $CatBasePath.'/'.$CatPathInfo;
$CatCurrentUrl = $CatRequestUri;

Ausgabe der Kategoriebeschreibung via Abfrage steuern

In der view.phtml sind folgende Zeilen für die Ausgabe der Beschreibung zuständig.

<?php if($_description=$this->getCurrentCategory()->getDescription()): ?>
<div class="category-description std">
<?php echo $_helper->categoryAttribute($_category, $_description, 'description') ?>
</div>
<?php endif; ?>

Diese werden nun entsprechend erweitert.

<?php
$CatDefaultUrl = Mage::App()->getRequest()->getBasePath().'/'.Mage::App()->getRequest()->getPathInfo();
$CatCurrentUrl = Mage::App()->getRequest()->getRequestUri();
?>
<?php if($_description=$this->getCurrentCategory()->getDescription()): ?>
<?php if($CatCurrentUrl == $CatDefaultUrl) { ?>
<div class="category-description std">
<?php echo $_helper->categoryAttribute($_category, $_description, 'description') ?>
</div>
<?php } ?>
<?php endif; ?>

In den ersten Zeilen werden die Informationen geholt, die man für die zusätzliche Abfrage braucht.
Bei der Ausgabe der Beschreibung (Description) wird im Vorfeld schon geprüft, ob bei der Kategorie eine Beschreibung hinterlegt wurde.
Anschließend wird die neue Abfrage integriert, die prüft, ob man sich auf der „Basis-Seite“ der Kategorie befindet.
Fertig.

Schreibe einen Kommentar

* Pflichtfelder