Вы не авторизованы.
Выкладываю следующую порцию своих доработок в этом сообщение, ибо закончился лимит символов в 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 };
комментарий автора: видимо программистам не хватило сил дописать эту финчу тут, либо они сами запутались в своих же функциях, но попытка была )
заменить на
$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. но работать должно, ибо логика заложена
скрин выбор для сравнения в брифе
скрин при переходе на другую страницу выбранные товары для сравнения сохраняются
скрин сравнение, с возможностью удаления по одному и очистки всего списка
Решение:
Файл \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>
...и ваших посетителей больше не будет раздражать принудительная мобильная версия
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)
Неактивен
исправлена ошибка в доработке - 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
Неактивен
хочу сделать чтоб крутилка была но блин не получается на рекомендуем посмотреть получаеться а тут нет
Вы уже смотрели" - вывод последних 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/
Неактивен
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
Неактивен
Здравствуйте, Антон.
Вы планировали сделать полноценный подбор по параметрам с чекбоксами и ползунками, дошли руки?
Неактивен
mika написал:
Вы планировали сделать полноценный подбор по параметрам с чекбоксами и ползунками, дошли руки?
Есть уже готовое решение http://forum.webasyst.ru/viewtopic.php?id=15574
Неактивен
Voffka написал:
mika написал:
Вы планировали сделать полноценный подбор по параметрам с чекбоксами и ползунками, дошли руки?
Есть уже готовое решение http://forum.webasyst.ru/viewtopic.php?id=15574
да меня опередили и я очень рад что программистов умеющих делать доработки для WA становится всё больше и больше
Неактивен
Здравствуйте anton_slim!
Интересует 5. Автоматическое наложение прозрачного watermark на большие фотографии (ТОЛЬКО НА НОВЫЕ)
Все сделал как изложено, но watermark так и не появился ?
Не могли бы Вы выложить код фаила ( b_product_settings ) целиком, возможно в нем загвоздка, т.к. строчек начинающихся на ( $temp_file = DIR_TEMP.'/'.getUnicFile ) у меня 4 штуки, возможно не ту заменил...
Неактивен
а нет ли у Вас решения по доработке файла sitemap , что бы он согласовывался с регламентом яндекса, а именно , если колличество урлов больше 50000 , то что бы они разбивались на несколько файлов?
Неактивен
$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; } */
Неактивен
exsoft написал:
а нет ли у Вас решения по доработке файла sitemap , что бы он согласовывался с регламентом яндекса, а именно , если колличество урлов больше 50000 , то что бы они разбивались на несколько файлов?
а как именно нужно разбивать ? не думаю что сложно сделать, у вас товаров больше 50 000 ?
Неактивен
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§ion=pages</loc> <lastmod>2012-04-03T19:50:08+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC§ion=categories</loc> <lastmod>2012-04-03T19:50:08+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC&section=products</loc> <lastmod>2012-04-03T19:50:09+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC§ion=auxpages</loc> <lastmod>2012-04-03T19:50:09+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC§ion=news</loc> <lastmod>2012-04-03T19:50:09+00:00</lastmod> </sitemap></sitemapindex>
Нас интересует сайтмап _http://site.ru/sitemap.php?app=SC§ion=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§ion=pages</loc> <lastmod>2012-04-03T19:50:08+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC§ion=categories</loc> <lastmod>2012-04-03T19:50:08+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC§ion=products_0-50к</loc> <lastmod>2012-04-03T19:50:09+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC§ion=products_50к-100к</loc> <lastmod>2012-04-03T19:50:09+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC§ion=auxpages</loc> <lastmod>2012-04-03T19:50:09+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC§ion=news</loc> <lastmod>2012-04-03T19:50:09+00:00</lastmod> </sitemap></sitemapindex>
Отредактировано Voffka (2012-06-25 11:18)
Неактивен
а нельзя внутри файла
<loc>http://site.ru/sitemap.php?app=SC&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§ion=products_0-50к</loc> <lastmod>2012-04-03T19:50:09+00:00</lastmod> </sitemap> <sitemap> <loc>http://site.ru/sitemap.php?app=SC§ion=products_50к-100к</loc> <lastmod>2012-04-03T19:50:09+00:00</lastmod> </sitemap> </sitemapindex>
?
Отредактировано anton_slim (2012-06-25 11:45)
Неактивен
Антон, к сожалению, нет. Файл индекса не может ссылаться на другие (дочерние) файлы индекса.
Но если в основном файле индекса _http://site.ru/sitemap.php не выводить _http://site.ru/sitemap.php?app=SC§ion=products, то ваш вариант приемлем.
Отредактировано Voffka (2012-06-25 12:25)
Неактивен
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)
Неактивен
Код:
$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?
Неактивен
anton_slim написал:
Voffka вообщем ковырять нужно файлы \www\published\SC\html\scripts\modules\adminscreens\_methods\google_sitemap.php и \www\published\SC\html\scripts\classes\class.exportdata.php
как то заранее определять кол-во записей, и делать разбивку на несколько файлов, там прилично кода переписывать...
Вы сможете такое реализовать ?
Неактивен
anton_slim
Не пробовали реализовать чтоб sitemap брал в обработку файл robots?
Неактивен
zhmih ну что удалось крутилку приделать к "Вы смотрели". Напиши, если не сложно, что куда добавлял.
Неактивен
8. Показ кол-ва удачных покупок по Email адресу в таблице Покупатели
установил все как описано, но в админке в Покупателях ничего не изменилось. anton_slim что может быть?
Отредактировано beauti65 (2012-07-04 22:22)
Неактивен
beauti65 написал:
zhmih ну что удалось крутилку приделать к "Вы смотрели". Напиши, если не сложно, что куда добавлял.
к сожалению нет,диз едет ппц...
просто сейчас проблем много позже вернусь к этому вопросу или может кто поможет выложу все исходники мне не жалко
Неактивен
Код:
$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);
Неактивен
Добрый день Антон!
Подскажите пожалуйста, как сделать (из 11 доработки "Вы уже посмотрели"), чтобы список просмотренных товаров был не вертикальным а горизонтальным. В CSS не силен, не получается разобраться.
И еще, как сделать, чтобы, например, был список из 5 товаров и справа ссылочка "Смотреть все просмотренные товары" отдельной страницей. Было бы практичнее для посетителя!
Спасибо за помощь!
Отредактировано b245816 (2012-07-08 15:21)
Неактивен
Вы можете убрать эту большую простыню цитирования первого сообщений ? вы все 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;}
Неактивен
anton_slim написал:
Благодарю от всей души!
Неактивен