[QUOTE=aggrosoft;66214]Ich glaube du verwechselst da etwas, ein Modul überlädt eine PHP Klasse - für mich klingt es als ob du einen neuen Block haben möchtest. Je nachdem wie du das realisieren willst musst du entweder einen Block in die Tabelle oxtplblocks eintragen oder die sidebar.tpl anpassen.[/QUOTE]
Dito.
[QUOTE=mipa;66211]Hallo,
ich möchte gern mein eigenes Modul auf allen Seiten des Shops in der Sidebar integrieren.
Wo muss ich dabei im Backend bei den Einstellungen mein Modul eintragen.
Momentan habe ich unter Module den Eintrag
“sidebar => b2b/topseller”
aber das funktioniert leider nicht.
Kann mir dabei jemand helfen?
Danke.[/QUOTE]
das hieße, dass die Klasse sidbar (, welche in Standard-Oxid nicht existiert) mit topseller erweitert wird.
[QUOTE=mipa;66223]Hallo,
ich meine es so wie ich es schreibe.
Hier ist meine PHP-Datei “topseller.php”
<?php
class Topseller extends Topseller_parent {
protected $prod;
public function getByCat($incCat, $cats) {
$this->getCatId($incCat, $cats);
return $this->prod;
}
protected function getCatId($incCat, $cats) {
foreach($cats as $cat) {
if($cat->oxcategories__oxtitle->value == $incCat) {
$this->getProducts($cat->oxcategories__oxid->value);
}
if($cat->getSubCats()) {
$this->getCatId($incCat, $cat->getSubCats());
}
}
}
protected function getProducts($catId) {
$productsList = &oxNew( "oxarticlelist");
$productsList->LoadCategoryArticles($catId, null);
$products = $productsList->aList;
$rand = count($products) < 4 ? count($products) : 4;
$rand_keys = array_rand($products, $rand);
foreach($rand_keys as $key) {
$products2[$key] = $products[$key];
}
$this->prod = $products2;
}
}
?>
Als Rückgabewert erhalte ich ein Array mit 4 Artikeln. Und dieses Array möchte ich in sidebar.tpl ausgeben.
Mit dem Aufruf:
[{include file="widget/product/boxproducts.tpl" _boxId="topBox" _oBoxProducts=$oView->getByCat("Kites", $oxcmp_categories) _sHeaderIdent="BOX_TOPOFTHESHOP_HEADER"}]
Nun meine Frage wie binde ich die PHP-Datei “topseller.php” in dne Shop ein. Ich dachte es müsste über die Moduleinstellugnen funktionieren?[/QUOTE]
- Moduleintrag aus Admin->module weg machen.
- Die Klasse nicht “extenden”.
- In der module/functions.php eine Function schreiben, welche die Klasse instanziert.
function getTopSeller($incCat, $cats){
//ggf. klasse includen
$oTop=new Topseller();// oder oxnew nutzen
return $oTop->getByCat($incCat, $cats);
}
- In Smarty function aufrufen.
[{assign var="aTop" value=$incCat|@getTopSeller:$cats}]
-
Mit $aTop weiterarbeiten.
-
Besser das ganze schön als SmartyPlugin umsetzen.