#51 2012-06-12 09:32

anton_slim
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Выкладываю следующую порцию своих доработок в этом сообщение, ибо закончился лимит символов в 1-м сообщении, походу придётся делать HTML страницу с доработками


12. Вывод поля Телефон и других дополнительных полей в форме Ручного заказа
Задача: вывести в админке дополнительные поля при ручном создании заказа, вообщем так же как и при обычной регистрации
скрин1
Решение:

Файл \published\SC\html\scripts\templates\backend\order_editor\new_order.html
после строк

Код:

13    <script type="text/javascript" src="{$smarty.const.URL_JS}/widget_checkout.js"></script>

добавить строки:

Код:

/* Подключаем jQuery ради одной выборки и последующего serializeArray для ajax отправки, как это делается в ExtJS не знаю, и видимо из вэб асиста парни тоже не в курсе, я всю голову сломал, и документацию прочитал, но ничего не нашел /*
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>

после строк

Код:

59            <tr>
60                <td nowrap="nowrap" valign="top">{"str_address"|translate}:</td>
61                <td><textarea class="txt_or_sel black_solid_border" name="customer_info[address]" rows="2"></textarea></td>
62            </tr>

добавить строки

Код:

            <!-- ADDITIONAL FIELDS (SEE  admin.php?dpt=custord&sub=reg_fields URL) -->
            {section name=i loop=$reg_fields}
            {assign var=__key value="reg_field[`$reg_fields[i].reg_field_ID`]"}
            <tr>
                <td nowrap="nowrap" valign="top">
                    {if $reg_fields[i].reg_field_required}<span class="asterisk">*</span>{/if}
                    {$reg_fields[i].reg_field_name|escape:'html'}
                </td>
                <td>
                    <input class="txt_or_sel black_solid_border" type='text' name='{$__key}' value='{$post_data[$__key]|escape:'html'}' >
                </td>
            </tr>
            {/section}

строчки

Код:

343        if (req.readyState != 4) return;
344        if(req.responseText) alert(req.responseText);
345        
346        window.location = 'index.php?ukey=order_editor&order_id='+req.responseJS.order_id;
347        //Ext.Msg.hide();

заменить на

Код:

        if (req.readyState != 4) return;
        if(req.responseText) {
            alert(req.responseText);
            return;
        }
        
        window.location = 'index.php?ukey=order_editor&order_id='+req.responseJS.order_id;
        //Ext.Msg.hide();

после строки

Код:

355        var els = document.forms['CustomerInfoForm'].elements;

добавить строку

Код:

        var reg_field = jQuery('form[name=CustomerInfoForm] input[name^=reg_field]').serializeArray();

после строки

Код:

           ,customer_info: new_customer_info

добавить строку

Код:

           ,reg_field: reg_field

Файл \published\SC\html\scripts\modules\order_editor\_methods\create_order.php
строчки

Код:

47            $reg_fields = array();
48            $allowed_reg_fields = GetRegFields();
49            foreach($customer_info as $fld_name => $fld_val)
50            {
51                if(preg_match("/^reg_field\[(\d+)$/i", $fld_name, $matches))
52                {
53                    if(in_array($matches[1],$allowed_reg_fields)){
54                        $reg_fields[$matches[1]] = $fld_val;
55                    }
56                };
57            };

комментарий автора: видимо программистам не хватило сил дописать эту финчу тут, либо они сами запутались в своих же функциях, но попытка была smile)
заменить на

Код:

            $reg_fields = array();
            // Список дополнительных полей форм из админки
            $reg_fields_form = GetRegFields();
            $allowed_reg_fields = array();
            foreach ($reg_fields_form as $field) {
                $allowed_reg_fields[] = $field['reg_field_ID'];
            }
            // Значения прищедшие от юзера 
            $reg_field_values = $this->getData('reg_field');
            // Фильтруем, вдруг хакер прислал левые
            foreach ($reg_field_values as $fld) {
                if(preg_match("/^reg_field\[(\d+)\]$/i", $fld['name'], $matches))
                {
                    if(in_array($matches[1],$allowed_reg_fields)){
                        $reg_fields[$matches[1]] = $fld['value'];
                    }
                }
            }

Вот и всё ! Только не понятно, почему ребята усложнили себе задачу и сделали в админской части создание юзера аяксом, а пользовательская регистрация без, наверное понт или "удобство", лично я не вижу разницы, только пользователю до админских аяксов всё равно, он их никогда не увидит, можно было бы и в регистрации аяксом сделать так же, чтобы и пользователям было удобно не перегружать страницу.

13. Правильное Сравнение товаров, работающее при переходе на другую страницу
Задача: добавлять товары к сортировке без перезагрузки страницы (ajax), так чтобы при переходе на другие страницы выбранные товары сохранялись
Внимание данное решение тестировалось только при включенном ЧПУ и только со сравнением из одной категории, во всех остальных случаях поведение скрипта может быть не предсказуемым. P.S. но работать должно, ибо логика заложена smile
скрин выбор для сравнения в брифе
скрин при переходе на другую страницу выбранные товары для сравнения сохраняются
скрин сравнение, с возможностью удаления по одному и очистки всего списка

Решение:

Файл \www\published\SC\html\scripts\classes\class.furl.php
После строк

Код:

91                    if(isset($this->__path_settings['product_widget'])){
92                        $get_vars .= '&ukey=product_widget';
93                    }else{
94                        $get_vars .= $this->__path_settings['ukey']!='reviews'?'&ukey=product':'&ukey=discuss_product';
95                    }
96                    break;

добавить код

Код:

                /* patch by SLIM, сравнение товаров на нескольких страницах */
                case 'compare':
                    $get_vars .= '&ukey=' . $this->__path_settings['ukey'];
                    $categoryEntry = new Category();
                    $categoryEntry->loadBySlug($this->__path_settings['category_slug']);
                    if($categoryEntry->categoryID){
                        $get_vars .= '&categoryID='.$categoryEntry->categoryID.'&category_slug='.$this->__path_settings['category_slug'];
                    }else{
                        $get_vars .= '&categoryID='.$this->__path_settings['category_slug'];
                    }
                    break;
                /* end patch */

Строчки

Код:

354                            case 'compare':
355                                $this->__path_settings['ukey'] = 'product_comparison';
356                                $this->__path_settings['update_sys_handler'] = '';
357                                continue;

заменить на

Код:

                            case 'compare':
                                $this->__path_settings['ukey'] = 'product_comparison';
                                /* patch by SLIM, сравнение товаров на нескольких страницах */
                                // $this->__path_settings['update_sys_handler'] = '';
                                $this->__path_settings['update_sys_handler'] = 'compare';
                                /* end patch */
                                continue;

Файл \www\published\publicdata\%ВАШ_КЛЮЧ%\attachments\SC\themes\%ВАША_ТЕМА%\head.html
Если у вас не добавлен еще jquery, рекомендую это сделать, пригодится для будущих доработок, лично я активно его юзаю

Добавить после </title> библиотеку jquery

Код:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

Далее обязательно только после библиотеки следующий код

Код:

{literal}
<script type="text/javascript">
/* jquery is ready */
jQuery(function($) {
    /* add by SLIM, сравнение товаров на нескольких страницах */
    $('.addCompareProduct').click(function() {
        var button_compare = $(".comparison_products_button");
        var button_compare_count = $(button_compare).attr('rel');
        var formUrl = $(button_compare).data('url');
        var params = {};
        var self = this;
        params[$(this).data('name')] = $(this).data('value');
        $.post(formUrl, params, function(data) {
            if (data == 1) {
                $(self).addClass('checked color blue');
                button_compare_count++;
            } else if (data == 0) {
                $(self).removeClass('checked color blue');
                button_compare_count--;
            } else {
                alert(data);
            }
            if (button_compare_count < 0) {
                button_compare_count = 0;
            }
            $(button_compare).attr('rel', button_compare_count);
            if (button_compare_count) {
                button_compare_count_html = ' (' + button_compare_count + ')';
            } else {
                button_compare_count_html = '';
            }
            $('.comparison_products_count', button_compare).text(button_compare_count_html);
        });
        return false;
    });
    $(".comparison_products_button").click(function() {
        // Текущее кол-во товаров для сравнения
        var count_compares = parseInt($(this).attr('rel'));
        if (!count_compares) {
            alert("Не выбраны товары для сравнения");
        } else {
            var url = $(this).data('url');
            window.location.href = url;
        }
    });
});
</script>
{/literal}

Файл \www\published\publicdata\%ВАШ_КЛЮЧ%\attachments\SC\themes\%ВАША_ТЕМА%\main.css

Добавить в самый конец огромный кусок вот отсюда

Файл \www\published\SC\html\scripts\templates\frontend\product_brief.html
Заменить

Код:

<input id="ctrl-prd-cmp-{$product_info.productID}" class="checknomarging ctrl_products_cmp" type="checkbox" value='{$product_info.productID}'>
        <label for="ctrl-prd-cmp-{$product_info.productID}">{"prd_select_to_comparison"|translate}</label>

на

Код:

        {* patch by SLIM, сравнение товаров на нескольких страницах *}
        {if $smarty.session.comparison_products[$product_info.categoryID][$product_info.productID]}
            {assign var=addCompareProductClass value="checked color blue"}
        {/if}
        <a href="#" class="addCompareProduct small button {$addCompareProductClass}" data-name="addCompareProduct" data-value='{$product_info.productID}'>{"prd_select_to_comparison"|translate}</a>
        {*<input id="ctrl-prd-cmp-{$product_info.productID}" class="checknomarging ctrl_products_cmp" type="checkbox" value='{$product_info.productID}'>
        <label for="ctrl-prd-cmp-{$product_info.productID}">{"prd_select_to_comparison"|translate}</label>*}

Файл \www\published\SC\html\scripts\templates\frontend\comparison_products_button.html
Заменить

Код:

<form action='{"?categoryID=&category_slug=&ukey=product_comparison"|set_query}' method="post">
    <input type="hidden" value='' class="comparison_products" name='comparison_products' >
    <input value='Сравнить выбранные товары' class="hndl_submit_prds_cmp sr" type="button" >
</form>

на

Код:

{*
<form action='{"?categoryID=&category_slug=&ukey=product_comparison"|set_query}' method="post">
    <input type="hidden" value='' class="comparison_products" name='comparison_products' >
    <input value='Сравнить выбранные товары' class="hndl_submit_prds_cmp sr" type="button" >
</form>
*}
    {* patch by SLIM, сравнение товаров на нескольких страницах *}
    {assign var=comparison_products_count value="`$smarty.session.comparison_products[$categoryID]`"|@count}
    {if !$comparison_products_count}
        {assign var=comparison_products_count_html value=""}
    {else}
        {assign var=comparison_products_count_html value=" (`$comparison_products_count`)"}
    {/if}
    <button data-url='{"?categoryID=&category_slug=&ukey=product_comparison"|set_query}' class="comparison_products_button button color blue" rel="{$comparison_products_count}" type="button" >Сравнить выбранные товары
        <span class="comparison_products_count">{$comparison_products_count_html}</span></button>

Файл \www\published\SC\html\scripts\templates\frontend\comparison_products.html
Добавить после

Код:

    {section name=i loop=$products}
    <td class="cmp_column_{cycle values='odd,even' name=1}" align="center">

строчки

Код:

        {* patch by SLIM, сравнение товаров на нескольких страницах *}
        <a href='{"?ukey=product_comparison&action=delete_compare&categoryID=&productID=`$products[i].productID`"|set_query_html}' title="Удалить из сравнения?" class="confirm_action">
            <img src="/published/SC/html/scripts/images_common/remove.gif" border="0" alt="Удалить"></a>

Далее ниже заменить

Код:

    <td class="cmp_headers"></td>
    {section name=i loop=$products}

на

Код:

    <td class="cmp_headers" style="vertical-align:top">
    {* patch by SLIM, сравнение товаров на нескольких страницах *}
    {if $products}<a href='{"?ukey=product_comparison&action=clear_all&categoryID="|set_query_html}' class="button small color red">{"btn_clear_comparison_list"|translate}</a>{/if}</td>
    {section name=i loop=$products}

Файл \www\published\SC\html\scripts\modules\products\_methods\comparison_products.php
Заменить строку

Код:

$productIDArray = explode( " ", trim(isset($PostVars["comparison_products"])?$PostVars["comparison_products"]:'') );

на строчки

Код:

/* add by slim, сравнение товаров на нескольких страницах */
$categoryID = $_GET['categoryID'];
$search_session_cat = $categoryID ? $categoryID : '__uncat';
if (isset($PostVars["addCompareProduct"])) {
    //var_dump($_SESSION);die;
    $product = GetProduct((int)trim($PostVars["addCompareProduct"]));
    if (!$product) die('product not found');
    if (!isset($_SESSION['comparison_products'])) {
        $_SESSION['comparison_products'] = array();
    }
    if (array_key_exists($product['productID'], $_SESSION['comparison_products'][$search_session_cat])) {
        unset($_SESSION['comparison_products'][$search_session_cat][$product['productID']]);
        die('0');
    }
    if (count($_SESSION['comparison_products'][$search_session_cat]) >= 5) {
        die(translate('msg_limit_count_of_compares'));
    }
    $_SESSION['comparison_products'][$search_session_cat][$product['productID']] = $product['productID'];
    die('1');
}
if (isset($_GET['action'])) {
    switch ($_GET['action']) {
    case 'delete_compare':
        $productDelete = $_GET['productID'];
        if (isset($_SESSION['comparison_products'][$search_session_cat][$productDelete])) {
            unset($_SESSION['comparison_products'][$search_session_cat][$productDelete]);
        }
        RedirectSQ('action=&productID=');
        break;
    case 'clear_all':
        if (isset($_SESSION['comparison_products'])) {
            unset($_SESSION['comparison_products']);
        }
        if ($categoryID) {
            RedirectSQ('action=&productID=&categoryID=' . $categoryID);
        } else {
            RedirectSQ('action=&productID=');
        }
        break;
    }
}
$productIDArray = array();
if ($search_session_cat && isset($_SESSION['comparison_products'][$search_session_cat])) {
    $productIDArray = $_SESSION['comparison_products'][$search_session_cat];
}
// $productIDArray = explode( " ", trim(isset($PostVars["comparison_products"])?$PostVars["comparison_products"]:'') );
/* end of patch */

Заменить строку

Код:

if ( count($products) > 0 && $showProductCategoryPath){

на строчки

Код:

/* patch by SLIM, сравнение товаров на нескольких страницах*/
if ($categoryID && $showProductCategoryPath) {

    $smarty->assign('product_category_path', catCalculatePathToCategory( $categoryID ) );
    $category = catGetCategoryById( $categoryID );
    if ($category)$smarty->assign('category_description', $category['description']);
    
} else /* end of patch*/ if ( count($products) > 0 && $showProductCategoryPath){

В админку Добавить перевод в меню "Язык и перевод", раздел Витрина,
ключ btn_clear_comparison_list
перевод Очистить список
ключ msg_limit_count_of_compares
перевод Превышено число товаров для сравнения

UPD: небольшое дополнение к доработке выше по просьбе genixxx
Добавлено возможность проверки на 2 и более выбранных товаров, вместо предупреждения о необходимости выбора товаров, кнопка теперь просто неактивная, однако вы можете задать любой стиль неактивной кнопки, будь то прозрачность или вовсе скрыть её в стилях. См скрин неактивной кнопки и скрин активной кнопки при выборе двух и более товаров

Замените в добавленном стиле строчку

Код:

.button[disabled], .button[disabled]:hover, .button[disabled]:active{

на

Код:

.button[disabled], .button[disabled]:hover, .button[disabled]:active, 
.button.disabled, .button.disabled:hover, .button.disabled:active {

либо сделайте свой стиль у неактивной кнопки, класс .disabled

далее
заменить добавленный js код в head.html на

Код:

{literal}
<script type="text/javascript">
/* jquery is ready */
jQuery(function($) {
    /* add by SLIM, сравнение товаров на нескольких страницах */
    $('.addCompareProduct').click(function() {
        var button_compare = $(".comparison_products_button");
        var formUrl = $(button_compare).data('url');
        var params = {};
        var self = this;
        params[$(this).data('name')] = $(this).data('value');
        $.post(formUrl, params, function(data) {
            var change_count = 0;
            if (data == 1) {
                $(self).addClass('checked color blue');
                change_count++;
            } else if (data == 0) {
                $(self).removeClass('checked color blue');
                change_count--;
            } else {
                alert(data);
            }
            // Вызываем реакцию кнопки на смену кол-во нажатых кнопок "Сравнить"
            if (change_count != 0) {
                $(button_compare).trigger('check-state', [change_count]);
            }
        });
        return false;
    });
    $(".comparison_products_button").click(function() {
        if ($(this).hasClass('disabled')) {
            return false;
        }
        var url = $(this).data('url');
        window.location.href = url;
    });
    $(".comparison_products_button").bind('check-state', function(event, change_count) {
        // Текущее кол-во товаров для сравнения
        var count_compares = parseInt($(this).attr('rel'));
        if (change_count) {
            count_compares = count_compares + change_count;
        }
        if (count_compares < 0) {
            count_compares = 0;
        }
        $(this).attr('rel', count_compares);
        
        var count_compares_html;
        if (count_compares) {
            count_compares_html = ' (' + count_compares + ')';
        } else {
            count_compares_html = '';
        }
        $('.comparison_products_count', this).text(count_compares_html);
        // проверка на кол-во выбранных товаров
        if (count_compares < 2) {
            $(this).addClass('disabled');
        } else {
            $(this).removeClass('disabled');
        }
    }).trigger('check-state');
});
</script>
{/literal}

UPD2: для того чтобы вас перекидывало после очистки товаров для сравнения в ту категорию откуда сравнивали, сделайте изменения
В файле published\SC\html\scripts\modules\products\_methods\comparison_products.php
Замените

Код:

        if (isset($_SESSION['comparison_products'][$search_session_cat][$productDelete])) {
            unset($_SESSION['comparison_products'][$search_session_cat][$productDelete]);
        }
        RedirectSQ('action=&productID=');

на

Код:

        if (isset($_SESSION['comparison_products'][$search_session_cat][$productDelete])) {
            unset($_SESSION['comparison_products'][$search_session_cat][$productDelete]);
        }
        if (count($_SESSION['comparison_products'][$search_session_cat]) < 2) {
            RedirectSQ('?categoryID=' . $categoryID);
        } else {
            RedirectSQ('action=&productID=');
        }

Замените ниже

Код:

            RedirectSQ('action=&productID=&categoryID=' . $categoryID);

на

Код:

            RedirectSQ('?categoryID=' . $categoryID);
            //RedirectSQ('action=&productID=&categoryID=' . $categoryID);

UPD3:
Сравнение товаров без учета категории + вместо кнопки ссылка меняющая текст описание тут


14. Сворачивалка для текста внутри информ. страниц
Задача: сделать внутри текста кнопку-ссылку, при нажатии на которую под ней будет плавно разворачиваться текст
скрин до нажатия
скрин после нажатия
Решение:

Добавить в CSS main стили:

Код:

.cpt_maincontent span.toggle {cursor:pointer;}
    .cpt_maincontent p span.toggle {color:#1B586E;border-bottom:1px dashed #1B586E;font-weight:normal;}
    .cpt_maincontent h2 span.toggle {border-bottom:1px dashed #545F6A;}
.cpt_maincontent div.toggle {display:none;}

В шаблоне HEAD (head.html):
Убедиться что есть подгрузка библиотеки jquery
Если нет то после </title> вставить

Код:

<!-- Подключение библиотеки jquery -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>

Далее после подгрузки jquery вставить

Код:

{literal}
<script type="text/javascript">
jQuery(document).ready(function($) {
    // toggle span in content
    $('span.toggle').click(function() {
        $(this).parent().next('.toggle').slideToggle();
    });
});
{/literal}

Далее заходим в информ. страницу в редактор html кода как показано на этом скриншоте
и делаем следующее:
- ссылку/кнопку при которой разворачивать текст оборачиваем в <p><span class="toggle">...</span></p>, пример:

Код:

<p><span class="toggle">Оплата пластиковыми картами VISA/MASTERCARD</span></p>

далее после вставляем текст который раскроется в <div class="toggle">...</div>, пример:

Код:

<div class="toggle">
<p>Оплата с помощью пластиковых карт в нашем интернет-магазине осуществляется с помощью системы интернет-эквайринга банка «АВАНГАРД». Это простые и безопасные расчёты по банковским картам VISA, VisaElectron, MasterCard, Maestro. При оформлении заказа через сайт выберите пункт "Оплата банковской картой". Безопасность транзакций обеспечивается сертифицированным протоколом 3D Secure.</p>
</div>

В итоге получим следующий html код:

Код:

<p><span class="toggle">Оплата пластиковыми картами VISA/MASTERCARD</span></p>
<div class="toggle">
<p>Оплата с помощью пластиковых карт в нашем интернет-магазине осуществляется с помощью системы интернет-эквайринга банка «АВАНГАРД». Это простые и безопасные расчёты по банковским картам VISA, VisaElectron, MasterCard, Maestro. При оформлении заказа через сайт выберите пункт "Оплата банковской картой". Безопасность транзакций обеспечивается сертифицированным протоколом 3D Secure.</p>
</div>

Пролистываем вниз и нажимаем "Обновить" (см скрин), наш html код вставится в информ. страницу и нажиаем "Сохранить", на этом всё !


15. В админке в заказе пользователя, сделать каждый товар ссылкой
Задача: сделать в админке, в полной информации о заказе, список товаров ссылками, чтобы можно было сразу посмотреть характеристики товара
скрин
Решение:

Файл \published\SC\html\scripts\templates\backend\order_detailed.html:
После строк

Код:

{if  $orderContent}
{section name=i loop=$orderContent}

Вставить

Код:

{* patch by SLIM, add link to products *}
{assign var=_product_url value=""}
{if $orderContent[i].productID}
    {if $orderContent[i].slug}
    {assign var=_product_url value="?ukey=product&furl_enable=1&productID=`$orderContent[i].productID`&product_slug=`$orderContent[i].slug`"|set_query_html:"`$store_url`"}
    {else}
    {assign var=_product_url value="?ukey=product&furl_enable=1&productID=`$orderContent[i].productID`"|set_query_html:"`$store_url`"}
    {/if}
{/if}
{* end patch *}

Далее ниже заменить

Код:

{$orderContent[i].name|escape:'html'}

на

Код:

    {* patch by SLIM, add link to products *}
    {if $_product_url ne ""}
    <a href="{$_product_url}" target="_blank">{$orderContent[i].name|escape:'html'}</a>
    {else}
    {$orderContent[i].name|escape:'html'}
    {/if}
    {* end patch *}

Файл published\SC\html\scripts\modules\ordering\_methods\border_detailed.php
после строки

Код:

124        $order_content = ordGetOrderContent($orderID);

вставить

Код:

        $smarty->assign( 'store_url', correct_URL(CONF_FULL_SHOP_URL) );

Файл published\SC\html\scripts\core_functions\order_functions.php
Перед строкой

Код:

658        $row["PriceToShow"] =  $currency_code." ".RoundFloatValueStr($currency_value*$row["Price"]*$row["Quantity"]);

Вставить

Код:

        /* patch by SLIM, add link to products */
        $row["productID"] = $productID;
        if ($product['slug']) {
            $row["slug"] = $product['slug'];
        }
        /* end patch */

16. Переключение с мобильной версии на полную, по ссылке, сохраняя текущую страницу
Задача: настроить переключение с мобильной версии на полную, по ссылке внизу сайта, чтобы можно было просматривать полную версию сайта без принудительной мобильной версии для мобильных устройств.
- по умолчанию если определилось мобильное устройство, можно перейти на полную версию сайта по ссылке, см скрин
- после переключения на полную версию, можно перейти обратно на мобильную, так же по ссылке, см скрин

Решение:
Файл published\SC\html\scripts\index.php
после

Код:

$mobile_version = detectPDA();

вставить

Код:

/* patch by SLIM, set mobile version from link */
    if (!$admin_mode && !$store_mode && $mobile_version) {
        $smarty->assign('mobile_version', true);
        if (isset($_GET['view'])) {
            switch ($_GET['view']) {
                case 'mobile':
                case 'frame':
                    $_SESSION['__view'] = $_GET['view'];
                    break;
            }
        }
        if (!isset($_GET['view'])) {
            $_GET['view'] = isset($_SESSION['__view']) ? $_SESSION['__view'] : 'mobile';
        }
    }
    /* end patch */

В шаблоне Основная разметка или index.html вставить куда либо ссылку

Код:

{if $mobile_version}
    <a href="{'&view=mobile'|set_query_html}" rel="nofollow">Мобильная версия сайта</a> </li>
{/if}

примечание: данная ссылка будет отображаться и работать только для мобильных устройств

В шаблоне m.frame.html вставить куда либо, я вставил после

Код:

        {if !$smarty.get.productwidget && !$productwidget &&!$printable_version && $show_powered_by }
        <div id="powered_by">{if $show_powered_by_link}{lbl_powered_by}{else}{lbl_powered_by_text}{/if}</div>
        {/if}

строчку

Код:

<br /><a href="{'&view=frame'|set_query_html}" style="font-weight:bold;">Полная версия сайта</a>

...и ваших посетителей больше не будет раздражать принудительная мобильная версия smile

17. Асинхронная загрузка google-analytics, замена устаревшего кода в вэбасист, (зачем это нужно)

Заменить содержимое файла published\SC\html\scripts\modules\abstract\_methods\google_analytics.php на этот (так как я практически весь этот файл изменил, поэтому выкладываю его на pastebin).

Далее заходим в админку - Инструменты - Google Analytics и меняем код на (данный код рекомендован вот этой статьёй)

Код:

// Russian search
_gaq.push(['_addOrganic', 'images.google.ru', 'q', true]);
_gaq.push(['_addOrganic', 'images.yandex.ru', 'text', true]);
_gaq.push(['_addOrganic', 'blogs.yandex.ru', 'text', true]);
_gaq.push(['_addOrganic', 'blogsearch.google.ru', 'q', true]);
_gaq.push(['_addOrganic', 'go.mail.ru', 'q']);
_gaq.push(['_addOrganic', 'gogo.ru', 'q']);
_gaq.push(['_addOrganic', 'nova.rambler.ru', 'query']);
_gaq.push(['_addOrganic', 'nigma.ru', 's']);
_gaq.push(['_addOrganic', 'google.com.ua', 'q']);
_gaq.push(['_addOrganic', 'affiliates.quintura.com', 'request']);
_gaq.push(['_addOrganic', 'search.qip.ru', 'query']);
_gaq.push(['_addOrganic', 'ru.yahoo.com', 'p']);
_gaq.push(['_addOrganic', 'market.yandex.ru', 'test', true]);
_gaq.push(['_addOrganic', 'video.yandex.ru', 'text']);
_gaq.push(['_addOrganic', 'price.ru', 'pnam']);
_gaq.push(['_addOrganic', 'torg.mail.ru', 'q']);
_gaq.push(['_addOrganic', 'maps.google.ru', 'q']);
_gaq.push(['_addOrganic', 'search.qip.ru', 'query']);
_gaq.push(['_addOrganic', 'win.mail.ru', 'q']);
_gaq.push(['_addOrganic', 'price.ru', 'query']);

  
  
  // Google EMEA Image domains
_gaq.push(['_addOrganic', 'images.google.ru', 'q']);

// Other Google Image search
_gaq.push(['_addOrganic', 'images.google.com', 'q']);
_gaq.push(['_addOrganic', 'images.google', 'q']);

// Blogsearch
_gaq.push(['_addOrganic', 'blogsearch.google', 'q']);

// Google EMEA Domains
_gaq.push(['_addOrganic', 'google.ru', 'q']);

// Yahoo EMEA Domains
_gaq.push(['_addOrganic', 'ru.yahoo.com', 'p']);

// Extras RU
_gaq.push(['_addOrganic', 'mail.ru', 'q']);
_gaq.push(['_addOrganic', 'rambler.ru', 'words']);
_gaq.push(['_addOrganic', 'nigma.ru', 's']);
_gaq.push(['_addOrganic', 'blogs.yandex.ru', 'text']);
_gaq.push(['_addOrganic', 'yandex.ru', 'text']);
_gaq.push(['_addOrganic', 'webalta.ru', 'q']);
_gaq.push(['_addOrganic', 'aport.ru', 'r']);
_gaq.push(['_addOrganic', 'poisk.ru', 'text']);
_gaq.push(['_addOrganic', 'km.ru', 'sq']);
_gaq.push(['_addOrganic', 'liveinternet.ru', 'ask']);
_gaq.push(['_addOrganic', 'gogo.ru', 'q']);
_gaq.push(['_addOrganic', 'gde.ru', 'keywords']);
_gaq.push(['_addOrganic', 'quintura.ru', 'request']);
_gaq.push(['_addOrganic', 'price.ru', 'pnam']);
_gaq.push(['_addOrganic', 'torg.mail.ru', 'q']);
_gaq.push(['_addOrganic', 'blizko.ru', 'q']);
_gaq.push(['_addOrganic', 'abc.ru', 'q']);
_gaq.push(['_addOrganic', 'skyinform.ru', 'q']);
_gaq.push(['_addOrganic', '66.ru', 'q']);
_gaq.push(['_addOrganic', 'e1.ru', 'q']);

// Extras BY
_gaq.push(['_addOrganic', 'akavita.by', 'z']);
_gaq.push(['_addOrganic', 'tut.by', 'query']);
_gaq.push(['_addOrganic', 'all.by', 'query']);

либо приводим его к этмоу формату если не хотите затирать свои настроенные поисковики


18. Убрать безконечные URL адреса в продуктах и категориях.
например такой адрес должен отдавать 404:
/product/explay-–-txt-book-b90/category/48/category/52/blog/28/register/auxpage_articles/category/106/feedback/feedback/
однако движок webasyst считает его валидным, и выводит товар (если нашел) или категорию
Задача: чтобы по таким адресам выдавалось 404 ошибка, дабы поисковики такие страницы исключали из индекса и не дублировали их

Решение:
Файл published/SC/html/scripts/classes/class.furl.php
заменить строчки

Код:

                            case 'category':
                                $this->__path_settings['category_slug'] = str_replace('.html', '', array_shift($path_parts));
                                $this->__path_settings['category_search'] = false;
                                if(isset($path_parts[0]) && $path_parts[0] == 'search'){
                                    $this->__path_settings['category_search'] = true;
                                }
                                $this->__path_settings['update_sys_handler'] = 'category';
                                continue;

на

Код:

                            case 'category':
                                $this->__path_settings['category_slug'] = str_replace('.html', '', array_shift($path_parts));
                                $this->__path_settings['category_search'] = false;
                                if(isset($path_parts[0]) && $path_parts[0] == 'search'){
                                    $this->__path_settings['category_search'] = true;
                                    array_shift($path_parts);
                                }
                                if ($path_parts && $path_parts[0] != '') {
                                    $checkIndex = 0;
                                    if (preg_match('!^(compare|offset[0-9]+|all|page[0-9]+)$!', $path_parts[$checkIndex], $match)) {
                                        $checkIndex = 1;
                                    }
                                    if (isset($path_parts[$checkIndex]) && $path_parts[$checkIndex] != '') {
                                        $this->__path_settings = $path_parts = array();
                                        $parts_num = 0;
                                        $this->__path_settings['ukey'] = '404';
                                    }
                                }
                                continue;

заменить строчки

Код:

                            case 'product':
                                $this->__path_settings['update_sys_handler'] = 'product';
                                $this->__path_settings['product_slug'] = str_replace('.html', '', array_shift($path_parts));
                                continue;

на

Код:

                            case 'product':
                                $this->__path_settings['update_sys_handler'] = 'product';
                                $this->__path_settings['product_slug'] = str_replace('.html', '', array_shift($path_parts));
                                if ($path_parts && $path_parts[0] != '') {
                                    $checkIndex = 0;
                                    if (preg_match('!^(compare)$!', $path_parts[$checkIndex], $match)) {
                                        $checkIndex = 1;
                                    }
                                    if (isset($path_parts[$checkIndex]) && $path_parts[$checkIndex] != '') {
                                        $this->__path_settings = $path_parts = array();
                                        $parts_num = 0;
                                        $this->__path_settings['ukey'] = '404';
                                    }
                                }
                                continue;

Отредактировано anton_slim (2014-10-03 00:40)

Неактивен

 

#52 2012-06-17 22:50

anton_slim
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

исправлена ошибка в доработке - 11. "Вы уже смотрели" - вывод последних 50-ти товаров просмотренных текущим юзером
при переполнении max_viewed начинают дублироваться товары
замените код

Код:

                $_SESSION["product_viewed"] = array_slice($_SESSION["product_viewed"], -$max_viewed, $max_viewed);

на

Код:

                $_SESSION["product_viewed"] = array_slice($_SESSION["product_viewed"], -$max_viewed, $max_viewed, true);

спасибо Andrey_M

Неактивен

 

#53 2012-06-18 14:10

zhmih
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

хочу сделать чтоб крутилка была но блин  не получается на рекомендуем посмотреть получаеться а  тут нет

Вы уже смотрели" - вывод последних 50-ти товаров просмотренных текущим юзером

исходных код  рекомендуем посмотреть

Код:

{if !$CPT_CONSTRUCTOR_MODE}
    {if !$printable_version}
    {if $product_related_number > 0}
    <div class="nextNew" title="Вперед"></div>
    <div class="prevNew" title="Назад"></div>
    <div class="scrollNew">
  <ul>
        {section name=i loop=$product_related}
        <li> {if $PAGE_VIEW eq 'mobile'}
      {if $product_related[i].pictures.default.thumbnail} <a href='{"?productID=`$product_related[i].productID`&product_slug=`$product_related[i].slug`"|set_query_html}'> <img border="0" src="{$smarty.const.URL_PRODUCTS_PICTURES}/{$product_related[i].pictures.default.thumbnail|escape:'url'}" title="{$product_related[i][1]}"/> </a> {/if} <br />
      <div class="productName related"> <a href='{"?productID=`$product_related[i].productID`&product_slug=`$product_related[i].slug`"|set_query_html}'> {$product_related[i][1]} </a> </div>
      <span class="totalPrice_list">{$product_related[i][2]}</span> {else}
      {if $product_related[i].pictures.default.thumbnail} <a href='{"?productID=`$product_related[i].productID`&product_slug=`$product_related[i].slug`"|set_query_html}'> <img border="0" src="{$smarty.const.URL_PRODUCTS_PICTURES}/{$product_related[i].pictures.default.thumbnail|escape:'url'}" title="{$product_related[i][1]}" /> </a> {/if} <br />
      <div class="productName related"> <a href='{"?productID=`$product_related[i].productID`&product_slug=`$product_related[i].slug`"|set_query_html}'> {$product_related[i][1]} </a></div>
 {/if} </li>
        {/section}
      </ul>
</div>
{/if}
    {/if}

{/if}

не посдкажешь что тут вставить чтоб было как на рекомендуем посмотреть крутилка

как тут http://rublikbum.ru/product/d170/

Неактивен

 

#54 2012-06-23 07:05

anton_slim
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

zhmih написал:

хочу сделать чтоб крутилка была но блин  не получается на рекомендуем посмотреть получаеться а  тут нет

Вы уже смотрели" - вывод последних 50-ти товаров просмотренных текущим юзером

исходных код  рекомендуем посмотреть
...
не посдкажешь что тут вставить чтоб было как на рекомендуем посмотреть крутилка

как тут http://rublikbum.ru/product/d170/

ну вообще нужно подключить js скрипт как там:

Код:

<script type="text/javascript" src="/js/jcarousellite_1.0.1.min.js"></script>
{literal}
<script type="text/javascript">
jQuery(function($) {
    $('#slider .slide .cpt_custom_html').jCarouselLite({
        btnNext : '.nextNew',
        btnPrev : '.prevNew',
                auto: 5000,
                circular: true,
                speed: 1200,
                visible: 2
    });

можно это добро подключить в шаблоне www\published\publicdata\%DB_KEY%\attachments\SC\themes\%THEME%\head.html

Неактивен

 

#55 2012-06-23 15:02

mika
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Здравствуйте, Антон.
Вы планировали сделать полноценный подбор по параметрам с чекбоксами и ползунками, дошли руки?

Неактивен

 

#56 2012-06-23 16:23

Voffka
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

mika написал:

Вы планировали сделать полноценный подбор по параметрам с чекбоксами и ползунками, дошли руки?

Есть уже готовое решение http://forum.webasyst.ru/viewtopic.php?id=15574

Неактивен

 

#57 2012-06-24 14:24

anton_slim
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Voffka написал:

mika написал:

Вы планировали сделать полноценный подбор по параметрам с чекбоксами и ползунками, дошли руки?

Есть уже готовое решение http://forum.webasyst.ru/viewtopic.php?id=15574

да меня опередили и я очень рад что программистов умеющих делать доработки для WA становится всё больше и больше

Неактивен

 

#58 2012-06-24 19:03

Dedugan
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Здравствуйте anton_slim!
Интересует 5. Автоматическое наложение прозрачного watermark на большие фотографии (ТОЛЬКО НА НОВЫЕ)
Все сделал как изложено, но watermark так и не появился ?
Не могли бы Вы выложить код фаила ( b_product_settings ) целиком, возможно в нем загвоздка, т.к. строчек начинающихся на ( $temp_file = DIR_TEMP.'/'.getUnicFile ) у меня 4 штуки, возможно не ту заменил...

Неактивен

 

#59 2012-06-25 10:30

exsoft
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

а нет ли у Вас решения по доработке файла sitemap , что бы он согласовывался с регламентом яндекса, а именно , если колличество урлов больше 50000 , то что бы они разбивались на несколько файлов?

Неактивен

 

#60 2012-06-25 10:41

anton_slim
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Код:

$temp_file = DIR_TEMP.'/'.getUnicFile(4, 'img.e.%s.temp', DIR_TEMP);

такая строчка только одна, у меня b_product_settings изменен полностью другими доработками, нет смысла выкладывать.
- А вы большую фотографию загружаете ? Если фотка меньше чем watermark, то он не поставится
- И куда вы залили сам файл logo_watermark_photo_50.png ?
- И ещё проверьте файл после редактирования, не становятся ли все изменения в одну строчку
- ещё бывает ситуация, у файла logo_watermark_photo_50.png permision denied, выставьте ему права на чтение и запись для всех (666)

ну и есть ещё момент, если у фото ширина равная максимальной ширине, то она копируется как есть без обработки и наложения watermark, webasyst думает что загружается уже обработанная фото, попробуйте изменить размер по ширине на 1 пиксель меньше или больше, может быть в этом проблема. Либо можно этот участок кода закоментировать
\www\published\SC\html\scripts\core_functions\picture_functions.php

Код:

/*
        if($width == $src_width){//skip image resize
            if(($file!=$destination_file)&&!copy($file, $destination_file)){
                return PEAR::raiseError('Error write image', 1);
            }
            return null;
        }
*/

Неактивен

 

#61 2012-06-25 10:54

anton_slim
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

exsoft написал:

а нет ли у Вас решения по доработке файла sitemap , что бы он согласовывался с регламентом яндекса, а именно , если колличество урлов больше 50000 , то что бы они разбивались на несколько файлов?

а как именно нужно разбивать ? не думаю что сложно сделать, у вас товаров больше 50 000 ?

Неактивен

 

#62 2012-06-25 11:14

Voffka
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

anton_slim написал:

а как именно нужно разбивать ?

Антон, вот описание формата http://www.sitemaps.org/ru/protocol.html.

Сейчас файл индекса выглядит так:

Код:

<?xml version='1.0' encoding='UTF-8'?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
    http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd">
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=pages</loc>
        <lastmod>2012-04-03T19:50:08+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=categories</loc>
        <lastmod>2012-04-03T19:50:08+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&amp;section=products</loc>
        <lastmod>2012-04-03T19:50:09+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=auxpages</loc>
        <lastmod>2012-04-03T19:50:09+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=news</loc>
        <lastmod>2012-04-03T19:50:09+00:00</lastmod>
    </sitemap></sitemapindex>

Нас интересует сайтмап _http://site.ru/sitemap.php?app=SC&section=products

На выхлопе должно получиться что-то похожее на

Код:

<?xml version='1.0' encoding='UTF-8'?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
    http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd">
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=pages</loc>
        <lastmod>2012-04-03T19:50:08+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=categories</loc>
        <lastmod>2012-04-03T19:50:08+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=products_0-50к</loc>
        <lastmod>2012-04-03T19:50:09+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=products_50к-100к</loc>
        <lastmod>2012-04-03T19:50:09+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=auxpages</loc>
        <lastmod>2012-04-03T19:50:09+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=news</loc>
        <lastmod>2012-04-03T19:50:09+00:00</lastmod>
    </sitemap></sitemapindex>

Отредактировано Voffka (2012-06-25 11:18)

Неактивен

 

#63 2012-06-25 11:45

anton_slim
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

а нельзя внутри файла

Код:

        <loc>http://site.ru/sitemap.php?app=SC&amp;section=products</loc>

выводить

Код:

<?xml version='1.0' encoding='UTF-8'?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
    http://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd">
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=products_0-50к</loc>
        <lastmod>2012-04-03T19:50:09+00:00</lastmod>
    </sitemap>
    <sitemap>
        <loc>http://site.ru/sitemap.php?app=SC&section=products_50к-100к</loc>
        <lastmod>2012-04-03T19:50:09+00:00</lastmod>
    </sitemap>
</sitemapindex>

?

Отредактировано anton_slim (2012-06-25 11:45)

Неактивен

 

#64 2012-06-25 12:19

Voffka
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Антон, к сожалению, нет. Файл индекса не может ссылаться на другие (дочерние) файлы индекса.
Но если в основном файле индекса _http://site.ru/sitemap.php не выводить _http://site.ru/sitemap.php?app=SC&section=products, то ваш вариант приемлем.

Отредактировано Voffka (2012-06-25 12:25)

Неактивен

 

#65 2012-06-25 15:19

anton_slim
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Voffka вообщем ковырять нужно файлы \www\published\SC\html\scripts\modules\adminscreens\_methods\google_sitemap.php и \www\published\SC\html\scripts\classes\class.exportdata.php

как то заранее определять кол-во записей, и делать разбивку на несколько файлов, там прилично кода переписывать...

Отредактировано anton_slim (2012-06-25 15:20)

Неактивен

 

#66 2012-06-25 22:17

Dedugan
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Код:
$temp_file = DIR_TEMP.'/'.getUnicFile(4, 'img.e.%s.temp', DIR_TEMP);

такая строчка только одна, у меня b_product_settings изменен полностью другими доработками, нет смысла выкладывать.
- А вы большую фотографию загружаете ? Если фотка меньше чем watermark, то он не поставится
- И куда вы залили сам файл logo_watermark_photo_50.png ?
- И ещё проверьте файл после редактирования, не становятся ли все изменения в одну строчку
- ещё бывает ситуация, у файла logo_watermark_photo_50.png permision denied, выставьте ему права на чтение и запись для всех (666)

Фото загружаю размером 600х600 или 650х650
Сам файл залил в /published/publicdata/.../attachments/SC/images/
У картинки logo_watermark_photo_50.png  стоит (666), а что еще есть и фаил? Подскажите путь ?
Может кто подскажет как восстановить файл  b_product_settings.php или где найти оригинал этого файла для версии 305?

Неактивен

 

#67 2012-06-26 11:46

exsoft
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

anton_slim написал:

Voffka вообщем ковырять нужно файлы \www\published\SC\html\scripts\modules\adminscreens\_methods\google_sitemap.php и \www\published\SC\html\scripts\classes\class.exportdata.php

как то заранее определять кол-во записей, и делать разбивку на несколько файлов, там прилично кода переписывать...

Вы сможете такое реализовать ?

Неактивен

 

#68 2012-06-27 15:39

geomagazin
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

anton_slim
Не пробовали реализовать чтоб sitemap брал в обработку файл robots?

Неактивен

 

#69 2012-07-04 22:14

beauti65
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

zhmih ну что удалось крутилку приделать к "Вы смотрели". Напиши, если не сложно, что куда добавлял.

Неактивен

 

#70 2012-07-04 22:22

beauti65
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

8. Показ кол-ва удачных покупок по Email адресу в таблице Покупатели

установил все как описано, но в админке в Покупателях ничего не изменилось. anton_slim что может быть?

Отредактировано beauti65 (2012-07-04 22:22)

Неактивен

 

#71 2012-07-05 16:08

zhmih
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

beauti65 написал:

zhmih ну что удалось крутилку приделать к "Вы смотрели". Напиши, если не сложно, что куда добавлял.

к сожалению нет,диз едет ппц...

просто сейчас проблем много позже вернусь к этому вопросу или может кто поможет выложу все исходники мне не жалко

Неактивен

 

#72 2012-07-05 20:16

Dedugan
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Код:
$temp_file = DIR_TEMP.'/'.getUnicFile(4, 'img.e.%s.temp', DIR_TEMP);

такая строчка только одна, у меня b_product_settings изменен полностью другими доработками, нет смысла выкладывать.
- А вы большую фотографию загружаете ? Если фотка меньше чем watermark, то он не поставится
- И куда вы залили сам файл logo_watermark_photo_50.png ?
- И ещё проверьте файл после редактирования, не становятся ли все изменения в одну строчку
- ещё бывает ситуация, у файла logo_watermark_photo_50.png permision denied, выставьте ему права на чтение и запись для всех (666)

Фото загружаю размером 600х600 или 650х650
Сам файл залил в /published/publicdata/.../attachments/SC/images/
У картинки logo_watermark_photo_50.png  стоит (666), а что еще есть и фаил? Подскажите путь ?

В этом куске кода, таких строчки три! Заменял все поочередно - не работает?

Код:

            /**
             * Standard picture
             */
            $temp_file = DIR_TEMP.'/'.getUnicFile(4, 'img.s.%s.temp', DIR_TEMP);
            $standard_file_name = $file_name;

            if(file_exists(DIR_PRODUCTS_PICTURES.'/'.$standard_file_name))
            $standard_file_name = getUnicFile(2, preg_replace('@\.([^\.]+)$@', '%s.$1', $file_name), DIR_PRODUCTS_PICTURES);

            if(
            PEAR::isError($res = Functions::exec('img_resize', array($orig_file, CONF_PRDPICT_STANDARD_SIZE, CONF_PRDPICT_STANDARD_SIZE, $temp_file)))
            ||
            PEAR::isError($res = Functions::exec('file_copy', array($temp_file, DIR_PRODUCTS_PICTURES.'/'.$standard_file_name)))
            ){
                $error = $res;
                if(file_exists($temp_file)){
                    unlink($temp_file);
                }
                Functions::exec('file_remove', array($orig_file));
                break;
            }
            if(file_exists($temp_file)){
                unlink($temp_file);
            }

            /**
             * Thumbnail picture
             */
            $temp_file = DIR_TEMP.'/'.getUnicFile(4, 'img.t.%s.temp', DIR_TEMP);
            $thumbnail_file_name = preg_replace('@\.([^\.]+)$@', '_thm.$1', $file_name);
            if(file_exists(DIR_PRODUCTS_PICTURES.'/'.$thumbnail_file_name))
            $thumbnail_file_name = getUnicFile(2, preg_replace('@\.([^\.]+)$@', '%s.$1', $thumbnail_file_name), DIR_PRODUCTS_PICTURES);

            if(
            PEAR::isError($res = Functions::exec('img_resize', array($orig_file, CONF_PRDPICT_THUMBNAIL_SIZE, CONF_PRDPICT_THUMBNAIL_SIZE, $temp_file)))
            ||
            PEAR::isError($res = Functions::exec('file_copy', array($temp_file, DIR_PRODUCTS_PICTURES.'/'.$thumbnail_file_name)))
            ){
                $error = $res;
                if(file_exists($temp_file)){
                    unlink($temp_file);
                }
                Functions::exec('file_remove', array($orig_file));
                Functions::exec('file_remove', array(DIR_PRODUCTS_PICTURES.'/'.$standard_file_name));
                break;
            }
            if(file_exists($temp_file)){
                unlink($temp_file);
            }

            /**
             * Enlarged picture
             */
            $temp_file = DIR_TEMP.'/'.getUnicFile(4, 'img.e.%s.temp', DIR_TEMP);
            $orig_size = getimagesize($orig_file);
            $standard_size = getimagesize(DIR_PRODUCTS_PICTURES.'/'.$standard_file_name);

Неактивен

 

#73 2012-07-07 19:31

b245816
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Добрый день Антон!
Подскажите пожалуйста, как сделать (из 11 доработки "Вы уже посмотрели"), чтобы список просмотренных товаров был не вертикальным а горизонтальным. В CSS не силен, не получается разобраться.
И еще, как сделать, чтобы, например, был список из 5 товаров и справа ссылочка "Смотреть все просмотренные товары" отдельной страницей. Было бы практичнее для посетителя!

Спасибо за помощь!

Отредактировано b245816 (2012-07-08 15:21)

Неактивен

 

#74 2012-07-08 13:25

anton_slim
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

Вы можете убрать эту большую простыню цитирования первого сообщений ? вы все 11 доработок процитировали

1. по поводу отдельной страницы сделать её можно, но тут больше телодвижений нужно, мне оно не требуется
2. чтобы сделать горизонтальный список, измените шаблон в файле \published\SC\html\scripts\templates\frontend\widget_product_viewed.html на содержимое

Код:

{if $smarty.session.product_viewed}
    <div class="vuposmotreli">
        <div class="cpt_viewed_products">
            <h5>Вы уже посмотрели</h5>
            <ul>
            {foreach from=$smarty.session.product_viewed|@array_reverse item=_session_product_info}
            {if $_session_product_info.slug}
                {assign var=_product_url value="?ukey=product&productID=`$_session_product_info.productID`&product_slug=`$_session_product_info.slug`"|set_query_html}
            {else}
                {assign var=_product_url value="?ukey=product&productID=`$_session_product_info.productID`"|set_query_html}
            {/if}
            <li class="item">
                {if $_session_product_info.thumbnail}
                <div class="picture">
                    <a href="{$_product_url}">
                        <img src="{$smarty.const.URL_PRODUCTS_PICTURES}/{$_session_product_info.thumbnail|escape:'url'}" alt="{$_session_product_info.name|escape:'html'}" title="{$_session_product_info.name|escape:'html'}">
                    </a>
                </div>
                {/if}
                <div class="name">
                    <a href='{$_product_url}'>{$_session_product_info.name|escape:'html'}</a>
                </div>
                <div class="totalPrice">{$_session_product_info.PriceWithUnit}</div>
            </li>
            {/foreach}
            </ul>
        </div>
    </div>
{/if}

изменить css на

Код:

/* Vy uzhe smotreli */
.vuposmotreli {border-bottom-color: #DBDBDB;border-bottom-left-radius: 5px;border-bottom-right-radius: 5px;border-bottom-style: solid;border-bottom-width: 1px;
border-left-color: #DBDBDB;border-left-style: solid;border-left-width: 1px;border-right-color: #DBDBDB;border-right-style: solid;border-right-width: 1px;
border-top-color: #DBDBDB;border-top-left-radius: 5px;border-top-right-radius: 5px;border-top-style: solid;border-top-width: 1px;margin-bottom: 25px;margin-left: 10px;margin-right: 0px;margin-top: 30px;
width: 600px; /* ширина блока, подбирается эксперементально под каждый сайт */
height: 112px; /* высота блока вы посмотрели */
padding-bottom: 5px;padding-left: 5px;padding-right: 5px;padding-top: 5px;
-moz-box-shadow: 0 0 3px #cfcfcf;-webkit-box-shadow: 0 0 3px #CFCFCF;box-shadow: 0 0 3px #CFCFCF;}

.cpt_viewed_products h5  {background-color: #ffffff;color: #666666;font-family: "Arial";font-size: 15px;font-weight: 700;margin-top: -15px;margin-left: 20px;text-align: left !important;width: 150px; }
.cpt_viewed_products ul {padding: 0;}
.cpt_viewed_products div.name a { text-decoration: underline; line-height:17px;font-weight:normal;margin-bottom:0px;}
.cpt_viewed_products div.picture a img {width:60px;}
.cpt_viewed_products div.totalPrice {color:#FF3300; font-size:12px; font-weight:bold;margin:5px 0 0 65px;} 
 #container_left_sidebar .cpt_viewed_products{padding:0px 0px 0px 5px;height:100%;}
.cpt_viewed_products .name {padding:0 0 5px 65px;}
.cpt_viewed_products .item {width:190px;float:left;list-style-type: none;} 
.cpt_viewed_products .picture {padding:0 0 0 0;float:left;}

Неактивен

 

#75 2012-07-08 15:20

b245816
Пользователь

Re: Мои доработки ошибок и дополнений к движку web-asyst shop script

anton_slim написал:

Благодарю от всей души!

Неактивен

 

Board footer

Powered by PunBB