2013-05-31 139 views
1

我正在爲prestashop中的類別頁面構建一個模塊。Prestashop顯示所有沒有分頁的產品窗體類別

基本上在我的module.php我有這樣的代碼:

$category = new Category(Context::getContext()->shop->getCategory(),(int)Context::getContext()->language->id); 
    $nb = (int)(Configuration::get('MOD_NBR')); 
    $products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10)); 

    $this->smarty->assign(array(
     'myproducts' => $products, 
     'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 
     'homeSize' => Image::getSize(ImageType::getFormatedName('home')), 
    )); 

然後在mymodule.tpl我有這樣的:

{foreach from=$products item=product name=myproducts} 

+ other stuff 

的問題是,我需要得到裏面的所有產品該類別,但它只在第一頁上顯示產品。我無法完全刪除或修改分頁,因爲我需要分類頁面上的其他產品進行分頁,但在我的模塊中,我希望一次獲得所有產品(在我將它們過濾爲僅顯示其中一些產品之後) 。

正如你可能會看到我有點失落,但也很絕望,我會感謝任何指導:)

感謝

回答

4

在你的代碼有:

$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10)); 

對應到:

/** 
    * Return current category products 
    * 
    * @param integer $id_lang Language ID 
    * @param integer $p Page number 
    * @param integer $n Number of products per page 
    * @param boolean $get_total return the number of results instead of the results themself 
    * @param boolean $active return only active products 
    * @param boolean $random active a random filter for returned products 
    * @param int $random_number_products number of products to return if random is activated 
    * @param boolean $check_access set to false to return all products (even if customer hasn't access) 
    * @return mixed Products or number of products 
    */ 
public function getProducts($id_lang, $p, $n, $order_by = null, $order_way = null, $get_total = false, $active = true, $random = false, $random_number_products = 1, $check_access = true, Context $context = null) 

所以,你要求頁1一個d $nb10元素。 嘗試線$nb = 10000;前加入露面爲10k產品(並隨時增加,如果您的類別有超過10K的產品)

因此,它應該是這樣的:

$category = new Category(Context::getContext()->shop->getCategory(),(int)Context::getContext()->language->id); 
$nb = 10000; 
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10)); 

$this->smarty->assign(array(
    'myproducts' => $products, 
    'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 
    'homeSize' => Image::getSize(ImageType::getFormatedName('home')), 
)); 

UPDATE :回顧你的問題我發現在你的模板中,你正在迭代$products變量,但將它分配爲myproducts。我猜測smarty的分配變量$products只有第一頁,$myproducts與你已經獲得的。

嘗試更新的模板:

{foreach from=$myproducts item=product name=myproducts} 
+0

感謝您的答覆,我嘗試,但沒有奏效。我想這是因爲我將它插入類別頁面,所以它保持頁面配置..你有任何其他的想法?謝謝! – lilymz

+0

我已經用我發現重新閱讀你的問題的東西更新了答案,如果它能起作用,你可以試試嗎?如果它起作用,您是否可以在沒有第一次修改建議的情況下嘗試更新零件 – ipeiro

相關問題