ExtraBash Опубликовано 8 ноября, 2014 Автор Жалоба Поделиться Опубликовано 8 ноября, 2014 И еще, проверьте у себя, может это я что-то набокопорил, но перестал работать поиск в админке, после внесения этих изменений. Работает ли у Вас.С компейр завтра подумаю, поиск работает. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 9 ноября, 2014 Жалоба Поделиться Опубликовано 9 ноября, 2014 Мне кажется, есть еще несколько мест, где рассматриваемая доработка даст неверные результаты:1. Если на сайте установлен какой-то фильтр с участием цены (на форуме есть несколько разных доработок), то фильтр по цене будет работать неправильно.2. Сортировка по цене на странице товаров.3. Вывод в Яндекс маркет. Кто-то проверял эти места? Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 9 ноября, 2014 Жалоба Поделиться Опубликовано 9 ноября, 2014 Думаю, на стандартный фильтр цены доработка не повлияет. Ведь цена будет по возрастанию в любой валюте. А вот в сторонних доработках проблема есть. Они берут цену из карточки товара, поэтому наименьшая и наибольшая цена будет, скажем 100 - 1500 руб показывать, а на самом деле это 100 - 1500 евро. Беда....Сортировка нормально идет. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 9 ноября, 2014 Жалоба Поделиться Опубликовано 9 ноября, 2014 Думаю, на стандартный фильтр цены доработка не повлияет. Конечно, не влияет, если в стандартном фильтре цены не задействованы. Сортировка нормально идет. В стандартной сортировке по цене в api/Products формируется в запросеorder by (SELECT -pv.price FROM __variants ...) DESC Если у Вас нормально, то Вас можно поздравить.А обычно в такой ситуации сортируется НЕ нормально, например, порядок1 руб3 евро7 рубвряд ли кто-то сочтет по возрастанию цены... Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 9 ноября, 2014 Жалоба Поделиться Опубликовано 9 ноября, 2014 Если у Вас нормально, то Вас можно поздравить. А обычно в такой ситуации у Вас сортируется НЕ нормально, например, порядокДа, действительно. Просто, как я писал выше, у меня уже было сделано нечто подобное, только более топорный вариант, поэтому у меня с сортировкой всё нормально. Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 9 ноября, 2014 Автор Жалоба Поделиться Опубликовано 9 ноября, 2014 Да, действительно. Просто, как я писал выше, у меня уже было сделано нечто подобное, только более топорный вариант, поэтому у меня с сортировкой всё нормально.Я все придумал, вечером напишу.Тот кто не приступил к реализации, не приступайте. Нужно хранить в базе 4 цены, вот и вся проблема, в основных переменных будут хранится расчетные цены.В других, новых - реальные. Вот и всё. Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 9 ноября, 2014 Автор Жалоба Поделиться Опубликовано 9 ноября, 2014 Ребята, готово, работает, пока не все места допилил, завтра Доделаю и будет инструкция. Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 10 ноября, 2014 Жалоба Поделиться Опубликовано 10 ноября, 2014 ЖДЕМ Старое нужно будет убирать или там просто дописать придется? Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 10 ноября, 2014 Автор Жалоба Поделиться Опубликовано 10 ноября, 2014 ЖДЕМ Старое нужно будет убирать или там просто дописать придется?Придется многое переделать. Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 10 ноября, 2014 Автор Жалоба Поделиться Опубликовано 10 ноября, 2014 Итак вот оно, ребята, новое решение. Третье, обратите внимание! Нашли несколько несовершенств, связанных с использованием сортировок и иных местах,где товар должен учитываться в новой валюте, а все еще спрашивается с базы напрямую в старой.На ум пришло новое очень простое решение - хранить в переменной цены именно пересчитанную, а в админке вводить валютную. ----------------------------------------------------------------------------------------------------Если кому нужна установка, тк. несколько человек уже обращались,пишите в скайп - abashyrov, цена ориентировочно - 1000р.Или могу вам дать доступ на готовые файлы от версии 2.3.6. - 500р.Или делаете по инструкции, должно все получиться - Бесплатно.---------------------------------------------------------------------------------------------------- Для тех, кто не знает - нужно сделать, чтобы каждый товар мог быть введен в любой валюте,чтобы менять только курс. Повторю, что поставки из разных источников и 1 валютадля магазина становится не вариантом, товары будут вводиться в разных валютах. Поехали: 1. Добавим в таблицу с вариантами товаров соответствующее поле.Таблица `s_variants` - новая колонка валюты - `currency`,а так-же две новые колонки для хранения исходной величины цены без пересчета в валюту. ALTER TABLE `s_variants` ADD `currency` TEXT, ADD `base_compare_price` FLOAT( 14, 2 ) AFTER `compare_price`, ADD `base_price` FLOAT( 14, 2 ) AFTER `price` 2. Так как мы хотим сделать выбор валюты нужно вывести варианты. Я сделал вывод вариантов выпадающим списком в админках товара и товаров. Для этого в первую очередь нужно вызвать список валют в соответствующие шаблоны админки.Новое - добавил пересчитанную скидочную цену, все цены - реальные input, которые запишутся в базу,переложил пересчет цены при изменении валюты в jquery, не только при перезагрузке изменится сумма.Продукт:Продукты: 2.1. В файле /api/Variants.php поправим запросы в базу:get_variants $query = $this->db->placehold("SELECT v.id, v.product_id , v.price, v.base_price as base_price, NULLIF(v.compare_price, 0) as compare_price, NULLIF(v.base_compare_price, 0) as base_compare_price, v.sku, IFNULL(v.stock, ?) as stock, (v.stock IS NULL) as infinity, v.currency as currency, v.name, v.attachment, v.position FROM __variants AS v WHERE 1 $product_id_filter $variant_id_filter ORDER BY v.position ", $this->settings->max_order_amount); get_variant $query = $this->db->placehold("SELECT v.id, v.product_id , v.price, v.base_price as base_price, NULLIF(v.compare_price, 0) as compare_price, NULLIF(v.base_compare_price, 0) as base_compare_price, v.sku, IFNULL(v.stock, ?) as stock, (v.stock IS NULL) as infinity, v.currency as currency, v.name, v.attachment FROM __variants v WHERE id=? LIMIT 1", $this->settings->max_order_amount, $id); 2.2. В файлах /simpla/ProductAdmin.php и /simpla/ProductsAdmin.php добавим: // Все валюты $currencies = $this->money->get_currencies(); $this->design->assign('currencies', $currencies); Это даст нам доступ к массиву $currencies в шаблонах редактирования 1 товара и списка товаров.В массиве располагаются все валюты магазина по их id. 2.3. Правка шаблона админки одного товара2.3.1. В файле /simpla/design/html/product.tpl добавим новые столбцы к варианту товарав div id="variants_block" > ul id="header" добавим: <ul id="header"> <li class="variant_move"></li> <li class="variant_name">Название варианта</li> <li class="variant_sku">Артикул</li> <li class="variant_price">Цена в валюте</li> <li class="variant_discount">Старая</li> <li class="variant_currency">Валюта</li> <li class="variant_main_currency">В {$currency->sign}</li> <li class="variant_main_currency">Старая В {$currency->sign}</li> <li class="variant_amount">Кол-во</li> </ul> Затем новая часть для конкретного варианта: <li class="variant_price"><input name="variants[base_price][]" type="text" value="{if $variant->base_price}{$variant->base_price|escape}{else}{$variant->price|escape}{/if}" /></li> <li class="variant_discount"> <input name="variants[base_compare_price][]" type="text" value="{if $variant->base_compare_price}{$variant->base_compare_price|escape}{else}{$variant->compare_price|escape}{/if}" /></li> <li class="variant_currency"> <select type="text" name="variants[currency][]"> {foreach $currencies as $c} <option {if $variant->currency} {if $variant->currency == $c->id} selected {/if} {else} {if $currency->id == $c->id} selected {/if} {/if} mnozhitel="{$c->rate_to/$c->rate_from}" value="{$c->id}">{$c->code} ({$c->rate_to/$c->rate_from})</option> {/foreach} </select> </li> <li class="variant_main_currency"><div class="op_cover"></div><input name="variants[price][]" type="text" value="{if $variant->currency}{if $variant->base_price}{$variant->base_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{else}{$variant->price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{/if}{else}{$variant->price}{/if}" /></li> <li class="variant_main_currency_discount"><div class="op_cover"></div><input name="variants[compare_price][]" type="text" value="{if $variant->currency}{if $variant->base_compare_price}{$variant->base_compare_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{else}{$variant->compare_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{/if}{else}{$variant->compare_price}{/if}" /></li> 2.3.2. В том-же файле добавим jquery код - наверху страницы, часть кода, отвечающая за события вниз функции после загрузки, функцию отдельно к функциям: //Пересчет цен товара и скидочных цен $('.variant_currency > select').change(function(){ recount_Price( this ); }); $('.variant_price > input, .variant_discount > input').focusout(function(){ recount_Price($(this).parents('ul').find('.variant_currency > select')); }); Чуть ниже, после закрытия функции, где лежат остальные функции: //Пересчет цен товара и скидочных цен function recount_Price(selected_curr){ var mnozhitel = $("option:selected", selected_curr).attr('mnozhitel'); var ul = $(selected_curr).parents('ul'); var Counted_price = parseFloat($(ul).find('.variant_price > input').val()) * parseFloat(mnozhitel); $(ul).find('.variant_main_currency > input').val(Counted_price); Counted_price = parseFloat($(ul).find('.variant_discount > input').val()) * parseFloat(mnozhitel); $(ul).find('.variant_main_currency_discount > input').val(Counted_price); }; 2.3.3. Добавим новые стили в /simpla/design/css/style.css: .variant_currency { width: 111px; } .variant_currency > select { padding: 4px; height: 27px; } li.variant_main_currency, .variant_main_currency_discount { width: 93px; text-align: left; margin-right: 19px; } li.variant_main_currency input, .variant_main_currency_discount input { width: 87px; background-color: rgb(223, 223, 223); border: 2px solid lightgrey; } .op_cover { position: absolute; width: 93px; height: 27px; } #variants_block li.variant_download { width: 50px; } 2.4. Добавим аналогичный функционал в шаблон для нескольких товаров2.4.1. Правим /simpla/design/html/products.tpl - внутри div.variants mtyztv гд на новый,тут выводятся валюты, два окошка input, всё красиво, все дела <ul> {foreach $product->variants as $variant} <li {if !$variant@first}class="variant" style="display:none;"{/if}> <i title="{$variant->name|escape}">{$variant->name|escape|truncate:30:'…':true:true}</i> <input class="price {if $variant->compare_price>0}compare_price{/if}" type="text" name="base_price[{$variant->id}]" value="{if $variant->base_price}{$variant->base_price}{else}{$variant->price}{/if}" {if $variant->base_compare_price>0}title="Старая цена — {$variant->base_compare_price} {$currency->sign}"{elseif $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{/if} /> <select class="products_currency" type="text" name="v_currency[{$variant->id}]"> {foreach $currencies as $c} <option {if $variant->currency} {if $variant->currency == $c->id} selected {/if} {else} {if $currency->id == $c->id} selected {/if} {/if} mnozhitel="{$c->rate_to/$c->rate_from}" value="{$c->id}">{$c->code} ({$c->rate_to/$c->rate_from})</option> {/foreach} </select> <br/> <div class="old_wrap"> <div class="old_price"> <div class="op_cover" {if $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{elseif $variant->base_compare_price>0}title="Старая цена — {$variant->base_compare_price} {$currency->sign}"{/if}></div> <input type="text" name="price[{$variant->id}]" value="{if $variant->currency}{if $variant->base_price}{$variant->base_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{else}{$variant->price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{/if}{else}{$variant->price}{/if}"/> </div> <input class="stock" type="text" name="stock[{$variant->id}]" value="{if $variant->infinity}?{else}{$variant->stock}{/if}" /><span class="v_unit">{$settings->units}</span> </div> </li> {/foreach} </ul>Внутри div#action добавим новый пункт для массового изменения валюты <span id="select"> <select class="action_sel" name="action"> <option value="enable">Сделать видимыми</option> <option value="disable">Сделать невидимыми</option> <option value="set_featured">Сделать рекомендуемым</option> <option value="unset_featured">Отменить рекомендуемый</option> <option value="duplicate">Создать дубликат</option> {if $pages_count>1} <option value="move_to_page">Переместить на страницу</option> {/if} {if $categories|count>1} <option value="move_to_category">Переместить в категорию</option> {/if} {if $brands|count>0} <option value="move_to_brand">Указать бренд</option> {/if} <option value="delete">Удалить</option> <option value="change_currency">Изменить валюту</option> </select> <select disabled class="currencies_sel" name="currencies" style="display: none;"> <option disabled selected value="0">Не менять</option> {foreach $currencies as $c} <option value="{$c->id}">{$c->code} ({if $c->code != "RUR"}{$c->rate_to}{else}1{/if})</option> {/foreach} </select> 2.4.2. В том-же файле /simpla/design/html/products.tpl добавим нужные скрипты внизу: // Работа с валютами $('input.price').focusout(function() { recount_Price( $(this).parents('li').find('select.products_currency')); }); $('select.products_currency').change(function() { recount_Price(this); }); function recount_Price(selected_curr){ var mnozhitel = $("option:selected", selected_curr).attr('mnozhitel'); var base_price = $(selected_curr).parents('li').find('input.price').val(); var price_container = $(selected_curr).parents('li').find('.old_price > input'); var Counted_price = parseFloat(base_price) * parseFloat(mnozhitel); price_container.val(Counted_price); }; $('select.action_sel').change(function (){ if ($("option:selected", this).val() == "change_currency") { $("select.currencies_sel").fadeIn(); $("select.currencies_sel").prop( "disabled", false ); } else { $("select.currencies_sel").fadeOut(); $("select.currencies_sel").prop( "disabled", true ); } }); $('select.currencies_sel').change(function () { if ($("option:selected", this).val() != "0") { var sel_opt = ( "'" + $("option:selected", this).val() + "'" ) ; $( '.row' ).each(function() { if ($(this).find('input[type="checkbox"]').prop("checked")) { $(this).find('li').each(function() { var row_sel = $(this).find('select.products_currency'); $("option[value=" + sel_opt + "]", row_sel).prop("selected", true); row_sel.change(); }); } }); } }); 2.4.3. Правим обработку переменных в /simpla/ProductsAdmin.php // Сохранение цен и наличия $prices = $this->request->post('price'); $base_prices = $this->request->post('base_price'); $stocks = $this->request->post('stock'); $v_currencies = $this->request->post('v_currency'); foreach($prices as $id=>$price) { $base_price = $base_prices[$id]; $stock = $stocks[$id]; $v_currency = $v_currencies[$id]; if($stock == '?' || $stock == '') $stock = null; $this->variants->update_variant($id, array('price'=>$price, 'base_price'=>$base_price,'stock'=>$stock, 'currency'=>$v_currency)); } 2.4.4. Добавим новые стили в /simpla/design/css/style.css: .old_price > input { float: left; width: 80px; text-align: right; background-color: rgb(223, 223, 223); border: 2px solid lightgrey; } .old_price > .op_cover { width: 84px; height: 21px; } #list .variants ul .stock { float: left; margin-left: 6px; } select.products_currency { height: 22px; padding: 2px; margin-bottom: 5px; } span.v_unit { float: left; margin-top: 3px; } .old_wrap { float: right; width: 182px; } 2.5. Решение проблемы обновления расчетных цен на сайте.(кто использовал старое - Функцию update_currency в api/Money.php меняем на стандартную)Будем менять /simpla/CurrencyAdmin.php При обновлении измененной валюты обновим и все варианты с такой-же валютой,начало и конец заменяемого кода обрамлены неизменными частями кода, обратите внимание, в 2.3.6самое начало кода выглядит не совсем так, так что отчеркрутое слешами не советую копировать: foreach($this->request->post('currency') as $n=>$va) foreach($va as $i=>$v) $currencies[$i]->$n = $v; ////////////////////////////////////////////////////////////// $currencies_ids = array(); foreach($currencies as $currency) { if($currency->id) { $this->money->update_currency($currency->id, $currency); $this->db->query("UPDATE __variants SET price=base_price*? WHERE currency=?" , $currency->rate_to/$currency->rate_from, $currency->id); } else $currency->id = $this->money->add_currency($currency); $currencies_ids[] = $currency->id; } ////////////////////////////////////////////////////////////// // Удалить непереданные валюты $query = $this->db->placehold('DELETE FROM __currencies WHERE id NOT IN(?@)', $currencies_ids); $this->db->query($query); 3. Импорт - ЭкспортОсталась небольшая часть, как сделать импорт и экспорт сия чуда.Очень просто. 3.1. Правим /simpla/ajax/export.php - добавляем новую колонку для экспорта вобъявлении массива $columns_names: private $columns_names = array( 'category'=> 'Категория', 'name'=> 'Товар', 'price'=> 'Цена', 'currency'=> 'Валюта', 'url'=> 'Адрес', 'visible'=> 'Видим', 'featured'=> 'Рекомендуемый', 'brand'=> 'Бренд', 'variant'=> 'Вариант', 'compare_price'=> 'Старая цена', 'sku'=> 'Артикул', 'stock'=> 'Склад', 'meta_title'=> 'Заголовок страницы', 'meta_keywords'=> 'Ключевые слова', 'meta_description'=> 'Описание страницы', 'annotation'=> 'Аннотация', 'body'=> 'Описание', 'images'=> 'Изображения' );Ниже добавляем аналогично данные в соответствующую переменную, обратите внимание на цену: if(isset($products[$variant->product_id])) { $v = array(); $v['variant'] = $variant->name; $v['price'] = $variant->price; $v['currency'] = $variant->currency; if ($variant->base_price) $v['price'] = $variant->base_price; else $v['price'] = $variant->price; if ($variant->base_price) $v['base_compare_price'] = $variant->base_compare_price; else $v['compare_price'] = $variant->compare_price; $v['sku'] = $variant->sku; $v['stock'] = $variant->stock; if($variant->infinity) $v['stock'] = ''; $products[$variant->product_id]['variants'][] = $v; } 3.2. Правим /simpla/ajax/import.php - колонки: // Соответствие полей в базе и имён колонок в файле private $columns_names = array( 'name'=> array('product', 'name', 'товар', 'название', 'наименование'), 'url'=> array('url', 'адрес'), 'visible'=> array('visible', 'published', 'видим'), 'featured'=> array('featured', 'hit', 'хит', 'рекомендуемый'), 'category'=> array('category', 'категория'), 'brand'=> array('brand', 'бренд'), 'variant'=> array('variant', 'вариант'), 'price'=> array('price', 'цена'), 'currency'=> array('currency', 'валюта'), 'compare_price'=> array('compare price', 'старая цена'), 'sku'=> array('sku', 'артикул'), 'stock'=> array('stock', 'склад', 'на складе'), 'meta_title'=> array('meta title', 'заголовок страницы'), 'meta_keywords'=> array('meta keywords', 'ключевые слова'), 'meta_description'=> array('meta description', 'описание страницы'), 'annotation'=> array('annotation', 'аннотация', 'краткое описание'), 'description'=> array('description', 'описание'), 'images'=> array('images', 'изображения') ); Ниже заменяем обработки price и compare_price и добавляем обработку валют и цен, что позволит записать сразу во все 4 переменные необходимые данные, сразу пересчитывая из нужной валюты: // Подготовим вариант товара if(isset($item['variant'])) $variant['name'] = trim($item['variant']); if(isset($item['currency'])) if($item['currency'] == '') $variant['currency'] = null; else { $variant['currency'] = str_replace(',', '.', trim($item['currency'])); $currency = $this->money->get_currency(intval($variant['currency'])); } if(isset($item['price'])) { $variant['base_price'] = str_replace(',', '.', trim($item['price'])); if ($currency) $variant['price'] = floatval($variant['base_price'])*$currency->rate_to/$currency->rate_from; else $variant['price'] = $variant['base_price']; } if(isset($item['compare_price'])) { $variant['base_compare_price'] = str_replace(',', '.', trim($item['compare_price'])); if ($currency) $variant['compare_price'] = floatval($variant['base_compare_price'])*$currency->rate_to/$currency->rate_from; else $variant['compare_price'] = $variant['base_compare_price']; } В файле импорта добавляется всего одна колонка - Валюта, все остальное как было.Цены писать НЕ пересчитанные.Обратите внимание, что валюты у вас уже должны быть на сайте и следите за айди валюты. Всё, на этом всё.У меня все прекрасно работает, если чего - пишите.Данный код использует максимум стандартного из симплы,поэтому все сортировки и все дела работают.Спасибо Kors за найденные несовершенства.------------------------------------------------------------Продали клиенту, или порадовались сами - буду рад, если поделитесь бабулями - +7 937 204-69-07 Киви Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 10 ноября, 2014 Автор Жалоба Поделиться Опубликовано 10 ноября, 2014 Привет. Тут было сообщение с фалами больше нет. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 11 ноября, 2014 Жалоба Поделиться Опубликовано 11 ноября, 2014 У меня все прекрасно работает, если чего - пишите.Интересно бы посмотреть демо, как "все прекрасно работает".поэтому все сортировки и все дела работают.Интересно бы списочек получить, что входит во "все дела". Мне кажется, что есть по меньшей мере два важных момента, которые в разработке не учтены, и наверняка будут давать при работе ошибки по ценам, что для практического магазина крайне критично... Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 11 ноября, 2014 Автор Жалоба Поделиться Опубликовано 11 ноября, 2014 Интересно бы посмотреть демо, как "все прекрасно работает".Интересно бы списочек получить, что входит во "все дела". Мне кажется, что есть по меньшей мере два важных момента, которые в разработке не учтены, и наверняка будут давать при работе ошибки по ценам, что для практического магазина крайне критично...Сортировки и все дела - список очень прост, сортировки любые связанные с ценой, в том числе и не стандартные,так как все в любом случае основывается на стандартных переменных из базы. Каких два момента то? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 11 ноября, 2014 Жалоба Поделиться Опубликовано 11 ноября, 2014 Сортировки и все дела - список очень прост, сортировки любые связанные с ценой, в том числе и не стандартные,так как все в любом случае основывается на стандартных переменных из базы. Каких два момента то? Интересно бы посмотреть демо, как "все прекрасно работает". Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 11 ноября, 2014 Автор Жалоба Поделиться Опубликовано 11 ноября, 2014 Два исправления, забыл учесть, что может не быть задано валюты и не быть базовой цены,/simpla/design/html/product.tpl: <li class="variant_main_currency"><div class="op_cover"></div><input name="variants[price][]" type="text" value="{if $variant->currency}{if $variant->base_price}{$variant->base_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{else}{$variant->price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{/if}{else}{$variant->price}{/if}" /></li> <li class="variant_main_currency_discount"><div class="op_cover"></div><input name="variants[compare_price][]" type="text" value="{if $variant->currency}{if $variant->base_compare_price}{$variant->base_compare_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{else}{$variant->compare_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{/if}{else}{$variant->compare_price}{/if}" /></li> /simpla/design/html/products.tpl: <div class="old_price"> <div class="op_cover" {if $variant->compare_price>0}title="Старая цена — {$variant->compare_price} {$currency->sign}"{elseif $variant->base_compare_price>0}title="Старая цена — {$variant->base_compare_price} {$currency->sign}"{/if}></div> <input type="text" name="price[{$variant->id}]" value="{if $variant->currency}{if $variant->base_price}{$variant->base_price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{else}{$variant->price*$currencies[$variant->currency]->rate_to/$currencies[$variant->currency]->rate_from|escape}{/if}{else}{$variant->price}{/if}"/> </div> Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 11 ноября, 2014 Автор Жалоба Поделиться Опубликовано 11 ноября, 2014 Ну ничосебе, не перетрудился кнопочку цитата тыкать?))) Демо не будет, по крайней мере сейчас. Сделаешь - будет.Выше некоторые поправки, и я же не утверждаю что это совершенно решение,это просто лучшее из трех на данный момент. Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 11 ноября, 2014 Автор Жалоба Поделиться Опубликовано 11 ноября, 2014 Есть сомнения по поводу /simpla/ajax/import.phpподумаю, не тестировал, возможно нужны правки. Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 11 ноября, 2014 Автор Жалоба Поделиться Опубликовано 11 ноября, 2014 Ребята, поправил импорт и экспорт, проверил, работают. Импортируя пересчитывает цены сразу, записывает все 4 переменные.Обратите внимание, что валюты у вас уже должны быть на сайте и следите за айди валюты. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 12 ноября, 2014 Жалоба Поделиться Опубликовано 12 ноября, 2014 Обратите внимание, что валюты у вас уже должны быть на сайте и следите за айди валюты. "следите за айди валюты" - это что значит и как это делать практически? Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 12 ноября, 2014 Автор Жалоба Поделиться Опубликовано 12 ноября, 2014 "следите за айди валюты" - это что значит и как это делать практически?Что валюты могут люди создать в ином порядке например, в результате после импорта получим неправильные валюты на товарах.Или этих валют может еще не существовать... То есть при импорте вы должны понимать какую валюту означает какой айди и корректировать прайс относительно своего сайта. Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 12 ноября, 2014 Жалоба Поделиться Опубликовано 12 ноября, 2014 Понятно, спасибо.А лучше бы при импорте-экспорте использовать не ID, а код валюты (UDS, RUB), подобно тому, как у свойств стандартно при импорте-экспорте используется название, а не ID... Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 12 ноября, 2014 Автор Жалоба Поделиться Опубликовано 12 ноября, 2014 Понятно, спасибо.А лучше бы при импорте-экспорте использовать не ID, а код валюты (UDS, RUB), подобно тому, как у свойств стандартно при импорте-экспорте используется название, а не ID...Да, думаю можно сделать, попозже запилю, сейчас другие задачи нужно доделать. На выходных может. Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 14 ноября, 2014 Автор Жалоба Поделиться Опубликовано 14 ноября, 2014 Обратите внимание добавил чутка кода в пункте 2.4.3. До этого просто не скопировалось. Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 14 ноября, 2014 Автор Жалоба Поделиться Опубликовано 14 ноября, 2014 Новая правка в пункте 2.4.1. - валюта выводилась в products.tpl с неправильным коэф. в скобках.2.4.1. и 2.3.1. - лишняя проверка, осталась с первой версии, убираем ({if $c->code != "RUR"}{$c->rate_to/$c->rate_from}{else}1{/if})делаем ({$c->rate_to/$c->rate_from}) иначе например магазин с главной валютой - Гривна выведет Рубль как RUR (1). Цитата Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 19 ноября, 2014 Автор Жалоба Поделиться Опубликовано 19 ноября, 2014 Ребята, в процессе эксплуатации были выявлены небольшие проблемы.Забыл учесть в скриптах, что у 1 товара по несколько вариантов.Нужно заменить скрипты, пункты - 2.3.2. и 2.4.2.А так-же мелкий недочет с select для массовой замены валюты, там рассчет цифры в скобках оставался со старой версии.Так что обратите внимание на пункт 2.4.1. в самом конце - currencies_sel Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.