Virtuemart 3 - vlastní výpis produktů, například další výrobky výrobce

Nejdřív ze všeho jsem potřeboval dostat pole id produktů pro výpis. Jedná se o všechny ostatní produkty, které mají shodného výrobce. To jsem udělal pomocí tohoto kódu:

$db = JFactory::getDbo();

$query = "SELECT virtuemart_product_id
FROM `#__virtuemart_product_manufacturers`
WHERE
virtuemart_product_id != '".$this->product->virtuemart_product_id."' AND  virtuemart_manufacturer_id = '".$this->product->virtuemart_manufacturer_id[0]."'
";
$db->setQuery($query);
$ids = $db->loadColumn();

 Samozřejmě si můžete udělat i vlastní filtraci.

Kouknutím do šablon jsem zjistil, že výpis produktů de facto dělá tento řádek:

echo shopFunctionsF::renderVmSubLayout($this->productsLayout,array('products'=>$products,'currency'=>$this->currency,'products_per_row'=>$this->perRow,'showRating'=>$this->showRating));

Tak jsem tento řádek vzal a strčil ho do šablony detailu produktu na příslušné místo dole na stránce. Je třeba ale tuto funkci zavolat se správnými parametry. První $this->productsLayout stačí vyměnit za řetězec "products".

Naplnění objektu $products se děje v souboru /components/com_virtuemart/views/category/view.html.php , takže doporučuji se podívat do něj. V novějších verzích VM to možná bude trošku jinak. Já si odsud vzal příslušné řádky a napsal celý script takto:

//potřebuji vytvořit objekt pro renderVmSubLayout "products"
$productModel = VmModel::getModel('Product');
$dalsi_produkty_vyrobce = $productModel->getProducts($ids);
//ještě musím do produktů k výpisu strčit obrázky
$imgAmount = VmConfig::get('prodimg_browse',1);
$productModel->addImages($dalsi_produkty_vyrobce, $imgAmount );

$products = array();
$products[0] = $dalsi_produkty_vyrobce;
echo shopFunctionsF::renderVmSubLayout("products",array('products'=>$products,'currency'=>$this->currency,'products_per_row'=>3));

 No a je to hotovo! Takto jsem dokázal na stránce detailu produktu udělat vlastně filtrovaný výpis produktů :)

 

Jmenuji se Radek Pelikán, bydlím v Ledči nad Sázavou. Mám 3 krásné děti.

Mezi mé velké koníčky patří desková hra Go a nově jsem začal cvičit Kendó v Ledči nad Sázavou.