
11-08-2011, 11:07 PM
|
|
 | |
|
|
 X-Guru
|
|
Join Date: Dec 2010
Posts: 6,373
|
|
|
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"}
|
|
|