Jump to content

Help with custom product list...


Recommended Posts

I am creating a custom front office page that will display a modified product list. The goal is to have a page that checks the specific categories I need for stock levels less than "x" (whatever I want to set the value to). So in simple terms the query would be something like this...

 

If any products in category "abc" have a stock/inventory level less than "5", then display each of those products.

 

The idea is to show a list of products with low stock that our suppliers can check at any time to see which products we need.

 

I have tried to figure it out myself, but am stuck. If anyone could help me out, that would be great. I started out with a new page called buylist.php in the root PS directory, which has this code in it:

 

<?php
include(dirname(__FILE__).'/config/config.inc.php');
ControllerFactory::getController('ProductController')->run();
include(dirname(__FILE__).'/header.php');
$smarty->display(_PS_THEME_DIR_.'buylist.tpl');
include(dirname(__FILE__).'/footer.php');
?>

 

I created a new buylist.tpl in the theme directory, which is just a copy of the product-list.tpl.

 

{*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2011 PrestaShop SA
*  @version  Release: $Revision: 8290 $
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
<script type="text/javascript">
// <![CDATA[
var quantitiesDisplayAllowed = {if $display_qties == 1}true{else}false{/if};
var quantityAvailable = {if $display_qties == 1 && $product->quantity}{$product->quantity}{else}0{/if};
//]]>
</script>

{if isset($products)}
<!-- Products list -->
<ul id="product_list" class="clear">
{foreach from=$products item=product name=products}
 <li class="ajax_block_product {if $smarty.foreach.products.first}first_item{elseif $smarty.foreach.products.last}last_item{/if} {if $smarty.foreach.products.index % 2}alternate_item{else}item{/if} clearfix">
  <div class="center_block">
   <a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} /></a>
   <h3>{if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if}<a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></h3>
   <p class="product_desc"><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.description_short|truncate:360:'...'|strip_tags:'UTF-8'|escape:'htmlall':'UTF-8'}">{$product.description_short|truncate:360:'...'|strip_tags:'UTF-8'}</a></p>
  </div>					
  <div class="right_block">
   {if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale">{l s='On sale!'}</span>
   {elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount">{l s='Reduced price!'}</span>{/if}
   {if isset($product.online_only) && $product.online_only}<span class="online_only">{l s='Online only!'}</span>{/if}
   {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
   <div>
 {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><br />{/if}
 {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">

			    {if ($product.allow_oosp || $product.quantity > 0)} {l s='Available'}{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}{l s='Out of stock'}{/if}  

			    </span>{/if}
   </div>
   {/if}
   {if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && $product.customizable != 2 && !$PS_CATALOG_MODE}
 {if ($product.allow_oosp || $product.quantity > 0)}
  <a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart.php')}?add&id_product={$product.id_product|intval}{if isset($static_token)}&token={$static_token}{/if}" title="{l s='Add to cart'}">{l s='Add to cart'}</a>
 {else}
   <span class="exclusive">Unavailable</span>
 {/if}
   {/if}
   <a class="button" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}</a>
   {if isset($comparator_max_item) && $comparator_max_item}
 <p class="compare"><input type="checkbox" class="comparator" id="comparator_item_{$product.id_product}" value="comparator_item_{$product.id_product}" {if isset($compareProducts) && in_array($product.id_product, $compareProducts)}checked{/if}/> <label for="comparator_item_{$product.id_product}">{l s='Select to compare'}</label></p>
   {/if}
  </div>
 </li>
{/foreach}
</ul>
<!-- /Products list -->
{/if}

 

I was hoping that would all work. When I try to load buylist.php in a browser, all the components of the page show up, but I get this message: "There is 1 error : Product not found". I am guessing it has something to do with the fact that I am not incorporating the specific category in any way. So this is where I am stuck... no products loading. Then I also will need to know how to limit the products to those with less than 5 in stock.

 

Thanks!!

Edited by AFemaleProdigy (see edit history)
Link to comment
Share on other sites

I was thinking this might work to limit the products to show only those with less than 5 available.

 

{if isset($products)}
<!-- Products list -->
<ul id="product_list" class="clear">
{foreach from=$products item=product name=products}
 {if ($product.allow_oosp || $product.quantity < 5)}

Edited by AFemaleProdigy (see edit history)
Link to comment
Share on other sites

I see that maybe I need to modify some of the category associated files. I just can't figure out how and where to specify the category. When trying to show these in a category list instead of just product list, I get this message...

 

There is 1 error :
Missing category ID

 

That is loading it with a url like this http://www.x.com/buylist.php

 

Do I have to pass the category id through the url or write it into the code... perhaps in the CategoryController?

Edited by AFemaleProdigy (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

can you share the solution?? i get the same problems here

 

thx

 

I got the list to display this way, but am having trouble with the pagination. I had posted asking for help with this new issue in another thread, but no one is helping me... as per usual. Pagination is still counting the excluded items as if they were still displayed. I can't figure out how to stop that or remove pagination from the list. Do you still want to know my method for getting this far?

Link to comment
Share on other sites

  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...