X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Dev Questions (https://forum.x-cart.com/forumdisplay.php?f=20)
-   -   Random Image or Random Products - Category Specific (https://forum.x-cart.com/showthread.php?t=17659)

nickff 10-31-2011 09:04 AM

Re: Random Image or Random Products - Category Specific
 
I too would love to see this mod ported to 4.4.x...anyone?

:D

qualiteam 11-08-2011 11:07 PM

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


nickff 11-09-2011 02:59 AM

Re: Random Image or Random Products - Category Specific
 
Awesome. Thanks Alex!

Acquamarina 12-12-2011 05:49 AM

Re: Random Image or Random Products - Category Specific
 
Is it possible to use the tag inside a static page? For instance on the F.A.Q. page, have it display a random product image by entering the tag in the WYSIWYG code area?

Thanks for the new version. I have it on my 4.1.9 and want it for the 4.4.4 version.

Acquamarina 12-12-2011 11:24 AM

Re: Random Image or Random Products - Category Specific
 
Hi, Alex,

Just tried the patch on 4.4.4 and got the following error:

SQL PATCH FAILED AT QUERY:
INSERT INTO `xcart_modules` VALUES ( , 'Random_Products', 'This module displays random products', 'Y')

totaltec 12-16-2011 12:36 AM

Re: Random Image or Random Products - Category Specific
 
Acqua,

Have you tried running the patch through phpMyAdmin? Also try removing the ' around the table names. The patch is failing at the first query, is there an error message?

Acquamarina 12-16-2011 05:58 AM

Re: Random Image or Random Products - Category Specific
 
Hi, Mike, thanks for the reply.

franki 10-24-2012 04:21 AM

Re: Random Image or Random Products - Category Specific
 
the list of random products returned/displayed does not have it's URL, ie <a href=""> is returned.

Does anyone know how to fix this?

totaltec 10-24-2012 04:26 AM

Re: Random Image or Random Products - Category Specific
 
Quote:

Originally Posted by franki
the list of random products returned/displayed does not have it's URL, ie <a href=""> is returned.

Does anyone know how to fix this?

Take a look at webmaster mode. See the smarty assign in random.php?
Code:

$smarty->assign("r_products",$randoms);

When you look at the variable in WM, what values are assigned to $r_products? That will tell us if the URL is getting pulled from the DB or not.

franki 10-24-2012 05:19 PM

Re: Random Image or Random Products - Category Specific
 
Quote:

Originally Posted by totaltec
Take a look at webmaster mode. See the smarty assign in random.php?
Code:

$smarty->assign("r_products",$randoms);

When you look at the variable in WM, what values are assigned to $r_products? That will tell us if the URL is getting pulled from the DB or not.


Hi Totaltec, this is what's assigned:
Code:

Array (12)
0 => Array (22)
  productid => "525"
  provider => "1"
  productcode => "SKUFOR9"
  avail => "2"
  min_amount => "1"
  list_price => "20.03"
  distribution => ""
  product => "XYZ (product name)"
  price => 10
  variantid => "0"
  weight => "0.13"
  is_product_options => ""
  is_variant => ""
  taxid => "1"
  taxed_price => "11.00"
  tmbn_url => "http://www.example.com/image..."
  image_x => "40"
  image_y => "150"
  tmbn_x => "40"
  tmbn_y => "150"
  price_deducted_tax => "Y"
  taxes => Array (1)
    GST => Array (16)
      taxid => "1"
      tax_name => "GST"
      formula => "DST+SH"
      address_type => "S"
      active => "Y"
      price_includes_tax => "Y"
      display_including_tax => "Y"
      display_info => ""
      regnumber => ""
      priority => "0"
      rate_value => 10
      rate_type => "%"
      tax_display_name => "GST"
      tax_value_precise => 1
      tax_value => 1
      taxed_price => 11


Looks like no URL - looking at the sql query, should it query for the productid to be able to grab it's URL map?

Also, I think there's bug in the this code (random.php):
Code:

if (!is_numeric($config["Modules"]["number_of_randomproducts"]))
        $config["Modules"]["number_of_randomproducts"] = 0;


Should this be:
[code]

Code:

if (!is_numeric($config["Random_Products"]["number_of_randomproducts"]))
        $config["Random_Products"]["number_of_randomproducts"] = 0;

?


All times are GMT -8. The time now is 05:30 AM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.