如何按产品ID显示OpenCart产品列表

时间:2014-03-03 23:25:19

标签: php opencart

我正在为我的商店创建自定义类别页面。目前在页面上我有默认的产品列表,显示该类别中的所有产品,如下图所示:

enter image description here

我想知道是否有可能,如果我可以选择特定的产品来展示PHP,而不是显示该类别中的每个产品?像查询或其他我可以将产品ID用逗号分隔的东西?

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

我知道上面的代码不起作用(当然),但只是希望能够展示我想要完成的事情。提前谢谢!

以下是显示产品的代码,如上图所示:

  <?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 } ?>

2 个答案:

答案 0 :(得分: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 - 不确定您的意图和期望的目标,而不是使用这种肮脏的黑客,使用开放式购物车内置功能(在管理面板中启用/禁用产品),或尝试(如果您的问题太具体)制作自定义模型/控制器方法......

答案 1 :(得分:0)

说实话,我真的不明白hwy要求这样的问题以programaticaly解决,因为当你有一个自定义类别并且只想显示一些具体的产品时,那么所需要的只是 unlink 此类别中不需要的产品。那就是全部!