Ok, I have been reading through all the threads concerning random images and it seems that over time there has been a request for that and/or random products - so here is a freebie.
This Mod searches the product database for products that are relevant to the current situation. This means that it is not only category specific but also user or membership specific. It will pick preset number of products in random order. This number is set within Admin under
General Settings ->
Modules Options. There is also a template that will take the number of random products returned and pick one to display a random product image. This image is also linked to the product page for that product.
INSTALL INSTRUCTONS:
Within Patch/Upgrade section of X-Cart or within SQL Admin run this query:
Code:
INSERT INTO `xcart_modules` ( `moduleid` , `module_name` , `module_descr` , `active` )
VALUES (
'70', 'Random_Products', 'This module displays random products', 'Y'
);
INSERT INTO `xcart_config` ( `name` , `comment` , `value` , `category` , `orderby` , `type` , `defvalue` )
VALUES (
'number_of_randomproducts', 'Number of Random Products to Display', '3', 'Modules', '75', 'text', '3'
);
Next create a new directory under /modules/ named "Random_Products" and a directory under /skin1/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 categoryid_path FROM $sql_tbl[categories] USE INDEX (PRIMARY) WHERE categoryid='$cat'");
$result = func_query("SELECT categoryid FROM $sql_tbl[categories] USE INDEX (pam) WHERE categoryid_path LIKE '$category_data[categoryid_path]/%' 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 /skin1/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 /Smarty-2.x.x/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"}
The template that displays the random products feeds into the template that you are using to display the product listings site wide. So, if you have your store set to display products 3 per row, then the random products will also display that way. The initial settings in Admin are that the module is enabled and the number of random products are 3. You can disable the module at the same location that all other modules are enabled or disabled.
If you find this Mod useful, donations are welcome
