View Single Post
  #42  
Old 11-08-2011, 11:07 PM
  qualiteam's Avatar 
qualiteam qualiteam is offline
 

X-Guru
  
Join Date: Dec 2010
Posts: 6,373
 

Default Re: Random Image or Random Products - Category Specific

Original instructions -> http://forum.x-cart.com/showpost.php?p=102302&postcount=1

The modified instructions (4.4.x):

Quote:
Within Patch/Upgrade section of X-Cart or within SQL Admin run this query:
Code:
INSERT INTO `xcart_modules` VALUES ( , 'Random_Products', 'This module displays random products', 'Y'); INSERT INTO `xcart_config` VALUES ('number_of_randomproducts', 'Number of Random Products to Display', '', 'Random_Products', '75', 'text', '3', '', '');

Next create a new directory under /modules/ named "Random_Products" and a directory under /skin/common_files/modules/ named "Random_Products".

Within /modules/Random_Products create a file named "random.php" with this content:

Code:
<?php # # $Id: random.php,v 1.00.0.0 0 TelaFirma $ # # Random Products # if (!defined('XCART_SESSION_START')) { header("Location: ../../"); die("Access denied"); } if (!is_numeric($config["Modules"]["number_of_randomproducts"])) $config["Modules"]["number_of_randomproducts"] = 0; # # Get products data for current category and store it in an array # $cat = intval($cat); if ($cat) { $category_data = func_query_first("SELECT parentid FROM $sql_tbl[categories] USE INDEX (PRIMARY) WHERE categoryid='$cat'"); $result = func_query("SELECT categoryid FROM $sql_tbl[categories] USE INDEX (parentid) WHERE parentid = '$category_data[parentid]' AND avail='Y'"); $cat_ids = array(); if (is_array($result)) { foreach($result as $k=>$v) { $cat_ids[] = $v["categoryid"]; } } else $cat_ids[] = $cat; $str = " AND $sql_tbl[products_categories].categoryid IN (".implode(",", $cat_ids).")"; } $order_by = "RAND()"; $search_query = $str; # # Search the products # $randoms = func_search_products($search_query, @$user_account["membership"], $order_by, $config["Modules"]["number_of_randomproducts"]); $smarty->assign("r_products",$randoms); ?>

Next create two files under /skin/common_files/modules/Random_Products/ named "random.tpl" and "random_image.tpl" with the contents as:

random.tpl
Code:
{capture name=dialog} {if $r_products ne ""} {include file="customer/main/products.tpl" products=$r_products} {/if} {/capture} {include file="dialog.tpl" content=$smarty.capture.dialog extra="width=100%"}

random_image.tpl
Code:
{assign var="rand" value="0"|mt_rand:"`$config.Modules.number_of_randomproducts-1`"} <a href=product.php?productid={$r_products[$rand].productid}>{include file="product_thumbnail.tpl" productid=$r_products[$rand].productid image_x=$config.Appearance.thumbnail_width product=$r_products[$rand].product tmbn_url=$r_products[$rand].tmbn_url}</a>

Now, edit your home.php file in root directory and add the following lines under the section that loads the Best Sellers module:

Code:
if($active_modules["Random_Products"]) include $xcart_dir."/modules/Random_Products/random.php";

** New Step **
This is a new step that you will need to do to make the single random image work on most systems (since that code is using a PHP modifier and not a Smarty modifier). If the single random image is working for you already then you do not need to perform this step.

Open the file /include/lib/smarty/Smarty.class.php for editing. On or around line 234 you will see the code:
Code:
'MODIFIER_FUNCS' => array('count'),

This need to be change to read
Code:
'MODIFIER_FUNCS' => array('count', 'mt_rand'),
** New Step End **

Now, where ever you want to display random products, just add this code in the template
Code:
{include file="modules/Random_Products/random.tpl"}
and where you want to display a random product image add this code
Code:
{include file="modules/Random_Products/random_image.tpl"}
__________________
Alex Solovev,
Qualiteam

---

User manual Video tutorials X-Cart FAQ

You are welcome to press "Thanks" button
if you find this post useful

Click here to learn how to apply patches

X-Cart Extensions
Reply With Quote