X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Changing design (https://forum.x-cart.com/forumdisplay.php?f=51)
-   -   MultiSkin (https://forum.x-cart.com/showthread.php?t=4708)

buster 10-15-2003 07:18 AM

Ok, (not that anyone is following this thread :) )
Here is the latest that I have, (the whole smarty.php):
Code:

<?
/*****************************************************************************\
+-----------------------------------------------------------------------------+
| X-Cart                                                                      |
| Copyright (c) 2001-2003 Ruslan R. Fazliev <rrf@rrf.ru>                      |
| All rights reserved.                                                        |
+-----------------------------------------------------------------------------+
| PLEASE READ  THE FULL TEXT OF SOFTWARE LICENSE AGREEMENT IN THE "COPYRIGHT" |
| FILE PROVIDED WITH THIS DISTRIBUTION. THE AGREEMENT TEXT IS ALSO AVAILABLE  |
| AT THE FOLLOWING URL: http://www.x-cart.com/license.php                    |
|                                                                            |
| THIS  AGREEMENT  EXPRESSES  THE  TERMS  AND CONDITIONS ON WHICH YOU MAY USE |
| THIS SOFTWARE  PROGRAM  AND  ASSOCIATED  DOCUMENTATION  THAT  RUSLAN  R. |
| FAZLIEV (hereinafter  referred to as "THE AUTHOR") IS FURNISHING  OR MAKING |
| AVAILABLE TO YOU WITH  THIS  AGREEMENT  (COLLECTIVELY,  THE  "SOFTWARE").  |
| PLEASE  REVIEW  THE  TERMS  AND  CONDITIONS  OF  THIS  LICENSE AGREEMENT |
| CAREFULLY  BEFORE  INSTALLING  OR  USING  THE  SOFTWARE.  BY INSTALLING, |
| COPYING  OR  OTHERWISE  USING  THE  SOFTWARE,  YOU  AND  YOUR  COMPANY |
| (COLLECTIVELY,  "YOU")  ARE  ACCEPTING  AND AGREEING  TO  THE TERMS OF THIS |
| LICENSE  AGREEMENT.  IF  YOU    ARE  NOT  WILLING  TO  BE  BOUND BY THIS |
| AGREEMENT, DO  NOT INSTALL OR USE THE SOFTWARE.  VARIOUS  COPYRIGHTS  AND |
| OTHER  INTELLECTUAL  PROPERTY  RIGHTS    PROTECT  THE  SOFTWARE.  THIS |
| AGREEMENT IS A LICENSE AGREEMENT THAT GIVES  YOU  LIMITED  RIGHTS  TO  USE |
| THE  SOFTWARE  AND  NOT  AN  AGREEMENT  FOR SALE OR FOR  TRANSFER OF TITLE.|
| THE AUTHOR RETAINS ALL RIGHTS NOT EXPRESSLY GRANTED BY THIS AGREEMENT.      |
|                                                                            |
| The Initial Developer of the Original Code is Ruslan R. Fazliev            |
| Portions created by Ruslan R. Fazliev are Copyright (C) 2001-2003          |
| Ruslan R. Fazliev. All Rights Reserved.                                    |
+-----------------------------------------------------------------------------+
\*****************************************************************************/

#
# $Id: smarty.php, Modified $
#

umask(0);

#
# If we are in subdir of X-Cart dir, then include with '../'
# else include with './'
#
if (!@include("../Smarty-2.5.0/Smarty.class.php"))
        @include("./Smarty-2.5.0/Smarty.class.php");

#
# Get absolute path
#
define('BASEDIR', realpath(dirname(__FILE__)));

#
# Smarty object for processing html templates
#
$smarty = new Smarty;
       
if( $HTTP_GET_VARS['skin']){
        // Setting the fake cookie so we can do some if's later
        $_COOKIE['skin'] = $HTTP_GET_VARS['skin'];
        //Setting the real cookie, expires 1 year from now
        setcookie('skin', $HTTP_GET_VARS['skin'], time() + 31536000);
} else {
        // Setting the fake cookie so we can do some if's later
        $_COOKIE['skin'] = $HTTP_COOKIE_VARS['skin'];
        //Updating the real cookie to expire 1 year form now
        setcookie('skin', $HTTP_COOKIE_VARS['skin'], time() + 31536000);
}

// Set some directories based on cookie, or lack of cookie
if( $_COOKIE['skin'] == 2){
        $smarty->template_dir = BASEDIR.DIRECTORY_SEPARATOR."skin2";
        $smarty->compile_dir = BASEDIR.DIRECTORY_SEPARATOR."templates2_c";
        $smarty->config_dir = BASEDIR.DIRECTORY_SEPARATOR."skin2";
        $smarty->cache_dir = BASEDIR.DIRECTORY_SEPARATOR."cache2";
        $smarty->secure_dir = BASEDIR.DIRECTORY_SEPARATOR."skin2";
        $smarty->debug_tpl="file:debug_templates.tpl";
        $smarty->assign("ImagesDir","../skin2/images");
        $smarty->assign("SkinDir","../skin2");
} else {
        //Default Template in case cookie is not set
        $smarty->template_dir = BASEDIR.DIRECTORY_SEPARATOR."skin1";
        $smarty->compile_dir = BASEDIR.DIRECTORY_SEPARATOR."templates_c";
        $smarty->config_dir = BASEDIR.DIRECTORY_SEPARATOR."skin1";
        $smarty->cache_dir = BASEDIR.DIRECTORY_SEPARATOR."cache";
        $smarty->secure_dir = BASEDIR.DIRECTORY_SEPARATOR."skin1";
        $smarty->debug_tpl="file:debug_templates.tpl";
        $smarty->assign("ImagesDir","../skin1/images");
        $smarty->assign("SkinDir","../skin1");
}       

if( !is_dir($smarty->compile_dir) && !file_exists($smarty->compile_dir) )
        @mkdir($smarty->compile_dir);

if( !is_writable($smarty->compile_dir) || !is_dir($smarty->compile_dir) ){
        echo "Can't write template cache in the directory: ".$smarty->compile_dir.".
Please check if it exists, and have writable permissions.";
        exit;
}

$file_temp_dir=$smarty->compile_dir;

#
# Smarty object for processing mail templates
#
$mail_smarty = $smarty;

#
# WARNING :
# Please ensure that you have no whitespaces / empty lines below this message.
# Adding a whitespace or an empty line below this line will cause a PHP error.
#
?>


I copied the default skin1 directory to a new skin2 directory.
If you add ?skin=# to the end of the URL the change is immediate, unlike my last post. You don't need ?skin=# except to change skins. The cookie stays between sessions. Still reading up on cookies, security wise.

The admin section is a little funny.
When you are in the admin section you can change skins after you login. After changing skins you can edit the skin, yadda, yadda. When you log out it goes back to skin1, I assume the cookie gets deleted when you logout, that way you are forced to re-enter your username and password.
So still looking at that as well.

Any help? Comment? Foreseeable problems?

buster 10-16-2003 08:38 AM

Ok, figured out the admin section. When you set the cookie you have to set the path that can read the cookie. So if you do this:
Code:

setcookie('skin', $HTTP_GET_VARS['skin'], time() + 31536000, "/");
Then the skin works for the admin section as well.

B00MER 10-19-2003 11:28 AM

Your close but not quite there yet ;)

I've already got such done, and is in working condition & tested on live sites, mod_skinswap:

http://www.cartlab.net/lab/customer/product.php?productid=27

New version is about to be released which includes some of the new features:

- Admin configurable
- Disable/Enabled Swapping
- What to swap with, Store Language, Affiliate ID, Skin variable or any other variable.
- Default skin (fallback) if none is specified
- Use a skin repository directory to store all skins, or use subdirs directly from the root of xcart/
- Set which debug template to use on "Enable debug console" in General Settings of admin. (debug.tpl, or debug_tempaltes.tpl)
- Cookie lifetime of 1 year of skin choice.
- Check if skin directory specified in swap variable exist if not fallback to default.

http://www.cartlab.net/images/skinswap_ss.gif

The new version will be either released today or tomorrow.

Kudos! ;)


All times are GMT -8. The time now is 03:49 PM.

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