2014-03-03 141 views
0

我正在爲我的商店創建自定義類別頁面。目前頁面上,我有一個顯示像下面的圖片中的所有產品類別中,默認的產品列表:如何按產品ID顯示OpenCart產品列表

enter image description here

,我想知道,如果它是好歹可能,而不是在顯示每個產品類別,如果我可以選擇特定的產品來顯示與PHP?像查詢或我可以用逗號分隔產品ID的東西?

有點像<?php query by product ids (24,153,2,51,765) { ?>

我知道上面不工作(ofcourse)的代碼,而只是希望說明了什麼我試着去完成。提前致謝!

下面是顯示產品,如像在上面的代碼:

<?php if ($products) { ?> 
    <div class="product-filter"> 

    <div class="limit"><b><?php echo $text_limit; ?></b> 
     <select onchange="location = this.value;"> 
     <?php foreach ($limits as $limits) { ?> 
     <?php if ($limits['value'] == $limit) { ?> 
     <option value="<?php echo $limits['href']; ?>" selected="selected"><?php echo $limits['text']; ?></option> 
     <?php } else { ?> 
     <option value="<?php echo $limits['href']; ?>"><?php echo $limits['text']; ?></option> 
     <?php } ?> 
     <?php } ?> 
     </select> 
    </div> 
    <div class="sort"><b><?php echo $text_sort; ?></b> 
     <select onchange="location = this.value;"> 
     <?php foreach ($sorts as $sorts) { ?> 
     <?php if ($sorts['value'] == $sort . '-' . $order) { ?> 
     <option value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?></option> 
     <?php } else { ?> 
     <option value="<?php echo $sorts['href']; ?>"><?php echo $sorts['text']; ?></option> 
     <?php } ?> 
     <?php } ?> 
     </select> 
    </div> 
    </div> 
    <div class="product-compare"><a href="<?php echo $compare; ?>" id="compare-total"><?php echo $text_compare; ?></a></div> 
    <div class="product-list"> 
    <?php foreach ($products as $product) { ?> 
    <div> 
     <?php if ($product['thumb']) { ?> 
     <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div> 
     <?php } ?> 
     <div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div> 
     <div class="description"><?php echo $product['description']; ?></div> 
     <?php if ($product['price']) { ?> 
     <div class="price"> 
     <?php if (!$product['special']) { ?> 
     <?php echo $product['price']; ?> 
     <?php } else { ?> 
     <div class="price-old"><span>MSRP: <?php echo $product['price']; ?></span></div> <div class="price-new"><?php echo $product['special']; ?></div> 
     <?php } ?> 
     <?php if ($product['tax']) { ?> 
     <br /> 
     <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span> 
     <?php } ?> 
     </div> 
     <?php } ?> 
     <?php if ($product['rating']) { ?> 
     <div class="rating"><img src="catalog/view/theme/default/image/stars-<?php echo $product['rating']; ?>.png" alt="<?php echo $product['reviews']; ?>" /></div> 
     <?php } ?> 
     <div class="cart"> 
     <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" /> 
     </div> 
     <div class="free-shipping"></div> 
     <div class="wishlist"><a onclick="addToWishList('<?php echo $product['product_id']; ?>');"><?php echo $button_wishlist; ?></a></div> 
     <div class="compare"><a onclick="addToCompare('<?php echo $product['product_id']; ?>');"><?php echo $button_compare; ?></a></div> 
    </div> 
    <?php } ?> 
    </div> 
    <div class="pagination"><?php echo $pagination; ?></div> 
    <?php } ?> 
    <?php if (!$categories && !$products) { ?> 
    <div class="content"><?php echo $text_empty; ?></div> 
    <div class="buttons"> 
    <div class="right"><a href="<?php echo $continue; ?>" class="button"><?php echo $button_continue; ?></a></div> 
    </div> 
    <?php } ?> 
+0

我想你不想硬編碼產品ID在視圖中? (這可能是最簡單的解決方案:)) – sinisake

+0

我不完全確定你的意思,但在這一點上,我可以爲任何事情!大聲笑:) – JCBiggar

+0

那麼...如果硬編碼category.tpl是一個選項 - 使您想要顯示的產品ID數組。檢查數組中是否存在$ product ['product_id']並顯示它,就是這樣。 :) – sinisake

回答

0

硬編碼產品過濾::)

在category.tpl找到這行:〜行69

<div class="product-list"> 

將這個波紋管:這裏foreach循環開始......你只要把附加條件存在。

<?php $ids=array(43,44,45); // array of product id's ?> 
<?php foreach ($products as $product) { if(in_array($product['product_id'],$ids)) { ?> 

......模板代碼.......

而且波紋管,在循環的結束應該是這樣的:

<?php } }?> 

增加一個「} ',(如果條件必須正確關閉)。應該是119線。

P.S.既然你想過濾只在一個類別,我想,應該做一個更多的條件(如類別ID ==選擇類別 - >過濾器產品...)

PS2-不知道你的意圖和期望的目標,但不是用這個骯髒的黑客的,使用開放式購物車的內置功能(能夠在管理面板/禁用產品),或嘗試(如果你的問題太具體的),以使自定義模型/控制器方法...

+0

@JCBiggar,np,順便說一句,現在我意識到 - 爲什麼你只是不會禁用管理面板中的產品,如果你不希望它在類別頁面上顯示(臨時)?稍後您可以輕鬆啓用...... :)))LOL! – sinisake

+0

@nevermind爲什麼將代碼包裝到IF?你可以隨時繼續。如果(!in_array($ product ['product_id'],$ ignoredProductIds))continue; –

+0

這真的是一個不好的解決方案。您不是將數據庫中填充的結果數量限制爲具體的ID,而是將所有相關產品填充並循環顯示,然後只顯示三個?有時候我想知道人們在回答這些問題時是否會使用他們的大腦......當然,禁用管理產品是第一手也是最簡單的解決方案,「硬編碼」將直接過濾SQL查詢中的產品,以限制只想要產品正在填充,以節省資源... – shadyyx

0

說實話,我真不明白HWY問這樣的問題要解決programaticaly,因爲當你有一個自定義類別,並希望只顯示一些具體的產品,那麼所有需要的是從這一類取消鏈接不需要的產品。這一切!

+0

那麼產品屬於此但是在我創建的特定頁面上,我們只想顯示某些產品要顯示的內容嗎?您是否有另一種解決方案可以工作? – JCBiggar

+0

是的,創建*子類別*並僅將所需產品鏈接到它。這個特定的頁面將指向那個*子類別*並且問題應該被解決。 – shadyyx

相關問題