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;

?

totaltec 10-24-2012 07:33 PM

Re: Random Image or Random Products - Category Specific
 
If you have the product id then you have the URL. the URL is product.php?productid={$productid} Look at the template, what is the code for the link look like?

franki 10-24-2012 07:40 PM

Re: Random Image or Random Products - Category Specific
 
I'm using the exact template as provided in this thread, but a href is blank in the rendered HTML.

Code:

[random.tpl]

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


Do we need to pass more parameters herein?

and customer/main/products.tpl is the stock xcart file without any mods...

franki 10-25-2012 01:34 AM

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

<a href="{$product.alt_url|default:$product.page_url|amp}" class="product-title">{$product.product|amp}</a>

the above is the a href code from products.tpl

and by changing it to (and create a new template file so not to wreck products.tmp; e.g. products_random.tpl:

Code:

<a href="product.php?productid={$product.productid}" class="product-title">{$product.product|amp}</a>

This now fixes the problems.

One other thing is, this only display the product name (and link) and it's thumbnail, but it doesn't display the price, buy now button, etc...


All times are GMT -8. The time now is 10:33 AM.

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