Показаны сообщения с ярлыком WebAsyst. Показать все сообщения
Показаны сообщения с ярлыком WebAsyst. Показать все сообщения

пятница, 29 ноября 2013 г.

WebAsyst ShopScript подкатегории в расширеном поиске

В файле /published/SC/html/scripts/modules/test/_methods/category_search_result.php
дописываем
 $smarty->assign( 'subcategories_to_be_shown', catGetSubCategoriesSingleLayer($categoryID));

конец файла примерно такой
                if ( CONF_PRODUCT_SORT == '1' )_sortSetting( $smarty, set_query() );
                //calculate a path to the category
                 $smarty->assign( 'subcategories_to_be_shown', catGetSubCategoriesSingleLayer($categoryID));

                $smarty->assign( 'product_category_path', catCalculatePathToCategory($categoryID) );
                $smarty->assign( 'search_with_change_category_ability', 1 );
                $smarty->assign( 'catalog_navigator', $navigatorHtml );
                $smarty->assign( 'products_to_show', $products);
}
$smarty->assign( 'main_content_template', 'category_search.html');
?>




и всё!

четверг, 31 января 2013 г.

WebAsyst Shop Script проверка обязательных полей

Пишу больше для себя, чтоб не забыть, а то после обновления опять что то слетит и опять придется грепать.

Материал актуален для версии 305

В общем задачи такие:
  • В корзине в адресе убрать всё лишнее (страна, область, имя ...)
  • Изменить порядок полей
Чтобы подправить форму адреса и информации о покупателе, нужно править
published/SC/html/scripts/templates/frontend/checkout.your_info.html
published/SC/html/scripts/templates/frontend/address_form.html


После этого система будет ругаться на незаполненные поля, которых нет, проверка полей адреса осуществляется в файле
 published/SC/html/scripts/classes/class.address.php 
в функции checkInfo()


Если нужно например добавлять водянные знаки (watermark) к картинкам при загрузке, то вы можете внедриться в файл
published/SC/html/scripts/modules/products/_methods/b_product_settings.php

там есть функция upload_picture($action_source = ACTCTRL_AJAX) которая отвечает за загрузки и подготовку картинок для товара.

вторник, 17 июля 2012 г.

WebAsyst Shop Script сравнение продуктов из разных категорий.

1. Открываем файл 
published/SC/html/scripts/modules/product/_methods/comparison_products.php
приводим начало файла к такому виду (бордовым цветом помечены те строки, которые добавил, остальное вставлено для того, чтобы вы могли сориентироваться куда вставлять)

<?php
$Register = &Register::getInstance();
/*@var $Register Register*/
$PostVars = $Register->get(VAR_POST);
$smarty = &$Register->get(VAR_SMARTY);
/*@var $smarty Smarty*/


/*Add by Pavel Belyaev*/
if (isset($PostVars["comparison_products"]))
{
    if (isset($_SESSION["comparison_products"])) $_SESSION["comparison_products"].=" ".trim($PostVars["comparison_products"]);
    else $_SESSION["comparison_products"]=trim($PostVars["comparison_products"]);
}
else
{    
    $_SESSION["comparison_products"] = "";
    header ("location:/");
}

$productIDArray = array_unique(explode( " ", $_SESSION["comparison_products"]));
$_SESSION["comparison_products"] = implode (" ", $productIDArray);
if (count($productIDArray)>8) $_SESSION["comparison_products"] = "";
/*end add*/

$showProductCategoryPath = true;
$products = array();

После этих модификаций, список сравнения не будет затираться при следующих отправках из категорий, можно из разных категорий накидать товары для сравнения, теперь есть задача сделать так, чтобы можно было почистить этот список, иначе он будет всё расти и расти, наполняясь ненужными товарами.

2. Открываем файл 
published/SC/html/scripts/templates/frontend/comparison_products.html

В конец дописываем


<center>
    <form metod="post" action="/category/1/compare/">
        <input type="submit" value="Очистить список сравнения">
    </form>
</center>





В первом файле мы учли тот момент, что при отправке формы с пустыми данными идет стирание переменной сессии и переадресация на главную страницу сайта, так же в первом файле есть защита от переполнения переменной (максимум 8 товаров) и защита от забивания повторных значений.

четверг, 7 июня 2012 г.

WebAsyst ShopScript меню пользователя

В файле /published/SC/html/scripts/modules/test/class.test.php есть такая функция, которая выводит текст Регистрация, Вход с паролем и др, или Мой счет и выход, в зависимости от того авторизованы вы или нет, но что если вы захотите это меню вывести совсем не в списке и убрать всякие другие ссылки?

находим функцию
function cpt_divisions_navigation()
{

list($local_settings) = $this->__getFromStack('call_params');
if(isset($local_settings['local_settings']))$local_settings = $local_settings['local_settings'];
$pages = array();
$SubDivs = &DivisionModule::getBranchDivisions(DivisionModule::getDivisionIDByUnicKey('TitlePage'), array('xEnabled'=>1));
foreach ($SubDivs as $_SubDiv){

if($_SubDiv->UnicKey == 'order_status' && isset($_SESSION["log"])){continue;}

if($_SubDiv->UnicKey == 'auth' && isset($_SESSION["log"]))
{

$login_id = $_SubDiv->ID;
$_SubDiv = DivisionModule::getDivisionByUnicKey('logout');
$_SubDiv->ID = $login_id;
}
if($_SubDiv->UnicKey == 'register' && isset($_SESSION["log"])){

$register_id = $_SubDiv->ID;
$_SubDiv = DivisionModule::getDivisionByUnicKey('office');
$_SubDiv->ID = $register_id;
}
/* @var $_SubDiv Division*/
$pages[] = array(
'id' => $_SubDiv->ID,
'name' => translate($_SubDiv->Name),
'ukey' => $_SubDiv->UnicKey,
);

if(isset($local_settings['divisions']) && $local_settings['divisions']=='mobile' && ($_SubDiv->UnicKey=='office'||$_SubDiv->UnicKey=='register')){
$_SubDiv = DivisionModule::getDivisionByUnicKey('cart');
$pages[] = array(
'id' => $_SubDiv->ID,
'name' => translate(translate($_SubDiv->Name)),
'ukey' => $_SubDiv->UnicKey,
);
}
}

if(!count($pages))return ;

$allowed_pages = explode(':', $local_settings['divisions']);

print '<ul class="'.($local_settings['view'] == 'horizontal'?'horizontal':'vertical').'">';
foreach ($pages as $page){
if(!in_array($page['id'], $allowed_pages) && !(isset($allowed_pages[0]) && $allowed_pages[0]=='mobile'))continue;

print '<li><a href="'.xHtmlSetQuery($page['ukey']?'?ukey='.$page['ukey']:'?did='.$page['id']).'">'.xHtmlSpecialChars($page['name']).'</a></li>';
}
print '</ul>';
}


комментируем ее и ниже пишем свой аналог
function cpt_divisions_navigation()
        {

            if (isset($_SESSION["log"]))
                echo '<a href="/myaccount">Мой кабинет</a> | <a href="/logout">Выйти</a>';
            else
                echo '<a href="/auth">Вход с паролем</a> | <a href="/register">Регистрация</a>';
            
        }