trainracing Опубликовано 22 июля, 2015 Жалоба Поделиться Опубликовано 22 июля, 2015 Добавим запрос в бдALTER TABLE `s_products` ADD `free_delivery` TINYINT( 0 ) NOT NULL AFTER `featured`; UPDATE `s_products` SET `free_delivery` = 0;Дальше идем в /simpla/ProductAdmin.php ищем строку 26$product->visible = $this->request->post('visible', 'boolean');и после вставляем:$product->free_delivery = $this->request->post('free_delivery', 'boolean');Теперь добавим галочку в шаблоне simpla/design/html/product.tpl после строк (485) ищем<div class="checkbox"> <input name=featured value="1" type="checkbox" id="featured_checkbox" {if $product->featured}checked{/if}/> <label for="featured_checkbox">Хит</label> </div> ниже добавим:<div class="checkbox"> <input name=free_delivery value="1" type="checkbox" id="free_delivery_checkbox" {if $product->free_delivery}checked{/if}/> <label for="free_delivery_checkbox">Беспл. Досавка</label> </div>далее в api/products.php ищемp.visible, и после вставляем:p.free_delivery,аналогично в строках 252 этого файла потом в simpla/ProductsAdmin.php ищемcase 'unset_featured': { $this->products->update_product($ids, array('featured'=>0)); break; }и ниже вставляемcase 'set_delivery': { $this->products->update_product($ids, array('free_delivery'=>1)); break; } case 'unset_delivery': { $this->products->update_product($ids, array('free_delivery'=>0)); break; }потом в шаблоне simpla/design/html/products.tpl после строки (120) ищем{if $product->featured}featured{/if} и после добавим {if $product->free_delivery}delivery{/if}Далее ищем (102 строка)[/size]<a class="featured" title="Рекомендуемый" href="#"></a>и ниже вставим:<a class="delivery" title="Бесплатная доставка" href="#">Б</a>потом Перед строкой (459) добавим: // Бесплатная доставка $("a.delivery").click(function() { var icon = $(this); var line = icon.closest("div.row"); var id = line.find('input[type="checkbox"][name*="check"]').val(); var state = line.hasClass('delivery')?0:1; icon.addClass('loading_icon'); $.ajax({ type: 'POST', url: 'ajax/update_object.php', data: {'object': 'product', 'id': id, 'values': {'free_delivery': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'}, success: function(data){ icon.removeClass('loading_icon'); if(state) line.addClass('delivery'); else line.removeClass('delivery'); }, dataType: 'json' }); return false; }); simpla/design/css/style.css и после851 строки ищем .icons a.restore { background-image: url(../images/clock_history_frame.png); } и ниже добавим: .icons a.delivery { padding: 2px; color: #D7D7B0; font-weight: bold; text-decoration: none; font-size: 18px; } .delivery .icons a.delivery { color: #EB7A06; } В строке 670 поменяем длину поля имени с 505px на 485px. в шаблоне вашего дизайна в удобном месте добавьте {foreach $product as $p} {if $p->free_delivery == 1} <div> Доставка бесплатно</div> {/if} {else} <div>Доставка 300руб </div>{/if} </span> {/foreach} Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 22 июля, 2015 Жалоба Поделиться Опубликовано 22 июля, 2015 (изменено) Как сказал товарищ Огурцов в одном известном фильме, "Работа проделана большая. Так дело не пойдет." Прежде чем код, хорошо бы сначала задуматься над тем, что хотите получить. В Вашем случае налицо громадный разрыв с логикой работы типового магазина. Если изобретаете свое, надо бы описать хоть немного внятно свои цели и задачи. Пока выглядит только как красивая вывеска, а внутри - пустышка .. Изменено 22 июля, 2015 пользователем Kors Цитата Ссылка на сообщение Поделиться на другие сайты
ps-simpla Опубликовано 22 июля, 2015 Жалоба Поделиться Опубликовано 22 июля, 2015 Тоже не понял что к чему и для чего {foreach $product as $p} {if $p->free_delivery == 1} <div> Доставка бесплатно</div> {/if} {else} <div>Доставка 300руб </div>{/if} </span> {/foreach} {/if} {else} надо поправить наверное или так задумано? Цитата Ссылка на сообщение Поделиться на другие сайты
ST_RU Опубликовано 22 июля, 2015 Жалоба Поделиться Опубликовано 22 июля, 2015 Видимо, надо просто посмотреть сайт ТС и понять что и зачем он для себя сделал.Явно частный случай. Цитата Ссылка на сообщение Поделиться на другие сайты
trainracing Опубликовано 22 июля, 2015 Автор Жалоба Поделиться Опубликовано 22 июля, 2015 (изменено) Как сказал товарищ Огурцов в одном известном фильме, "Работа проделана большая. Так дело не пойдет." Прежде чем код, хорошо бы сначала задуматься над тем, что хотите получить. В Вашем случае налицо громадный разрыв с логикой работы типового магазина. Если изобретаете свое, надо бы описать хоть немного внятно свои цели и задачи. Пока выглядит только как красивая вывеска, а внутри - пустышка .. делалось для выборочной выгрузки стоимости доставки на маркет. Как везде я говорил - я не профи и не программист, но может кому пригодится Изменено 22 июля, 2015 пользователем trainracing Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 23 июля, 2015 Жалоба Поделиться Опубликовано 23 июля, 2015 делалось для выборочной выгрузки стоимости доставки на маркет. Как везде я говорил - я не профи и не программист, но может кому пригодитсяЗначит, Вы писали это для "выборочной выгрузки стоимости доставки на маркет". А теперь посмотрите на свой начальный пост: 1. Там нет вообще никакого упоминания ни про какой маркет. 2. Там нет вообще никакого кода, связанного с выгрузкой на маркет. 3. Там есть лишь более-менее стандартное добавление в админке к товару поля чекбокс по образцу рекомендуемых. 4. Вы, как говорите - не профи. Для кого пишете? 4.1. Если для профи, то он и сам быстрее и лучше напишет такой код по готовому имеющемуся образцу. 4.2. Если для непрофи, то он сам нипочем не догадается, как и для чего Ваш код использовать (в теме уже три человека написали, что не догадались, причем все - не новички). Если что-то пишете, надо стараться, чтоб было понятно. Хоть немного о читателе заботиться надо... Цитата Ссылка на сообщение Поделиться на другие сайты
Решение trainracing Опубликовано 23 июля, 2015 Автор Решение Жалоба Поделиться Опубликовано 23 июля, 2015 (изменено) Рабочее решение для выборочной выгрузки цены стоимости доставки на яндекс маркет и вывод в карточке товара. Добавим запрос в бд ALTER TABLE `s_products` ADD `free_delivery` TINYINT( 0 ) NOT NULL AFTER `featured`; UPDATE `s_products` SET `free_delivery` = 0;Дальше идем в /simpla/ProductAdmin.php ищем строку 26 $product->visible = $this->request->post('visible', 'boolean');и после вставляем $product->free_delivery = $this->request->post('free_delivery', 'boolean');Теперь добавим галочку в шаблоне simpla/design/html/product.tpl после строк (485) ищем <div class="checkbox"> <input name=featured value="1" type="checkbox" id="featured_checkbox" {if $product->featured}checked{/if}/> <label for="featured_checkbox">Хит</label> </div>ниже вставим <div class="checkbox"> <input name=free_delivery value="1" type="checkbox" id="free_delivery_checkbox" {if $product->free_delivery}checked{/if}/> <label for="free_delivery_checkbox">Беспл. Досавка</label> </div>далее в api/products.php ищем p.visible,и после вставляем p.free_delivery,аналогично в строках 252 этого же файла потом в simpla/ProductsAdmin.php ищем case 'unset_featured': { $this->products->update_product($ids, array('featured'=>0)); break; }и ниже вставляем case 'set_delivery': { $this->products->update_product($ids, array('free_delivery'=>1)); break; } case 'unset_delivery': { $this->products->update_product($ids, array('free_delivery'=>0)); break; }потом в шаблоне simpla/design/html/products.tpl после строки (120) ищем {if $product->featured}featured{/if}после вставляем {if $product->free_delivery}delivery{/if}Далее ищем (102 строка) <a class="featured" title="Рекомендуемый" href="#"></a>и ниже добавим <a class="delivery" title="Бесплатная доставка" href="#">Б</a>потом Перед строкой (459) добавим: // Бесплатная доставка $("a.delivery").click(function() { var icon = $(this); var line = icon.closest("div.row"); var id = line.find('input[type="checkbox"][name*="check"]').val(); var state = line.hasClass('delivery')?0:1; icon.addClass('loading_icon'); $.ajax({ type: 'POST', url: 'ajax/update_object.php', data: {'object': 'product', 'id': id, 'values': {'free_delivery': state}, 'session_id': '{/literal}{$smarty.session.id}{literal}'}, success: function(data){ icon.removeClass('loading_icon'); if(state) line.addClass('delivery'); else line.removeClass('delivery'); }, dataType: 'json' }); return false; });simpla/design/css/style.css и после851 строки ищем .icons a.restore { background-image: url(../images/clock_history_frame.png); }ниже добавим .icons a.delivery { padding: 2px; color: #D7D7B0; font-weight: bold; text-decoration: none; font-size: 18px; } .delivery .icons a.delivery { color: #EB7A06; }В строке 670 поменяем длину поля имени с 505px на 485px. в шаблоне карточки товара в удобном месте добавьте {if $product->free_delivery == 1} <div>Доставка бесплатно</div> {else} <span> 600 руб</span> {/if}В cart.tpl строку 190 заменим на: {elseif $cart->total_price >= $delivery->free_from && $product->free_delivery == 1} Далее делаем выгрузку в маркетв файле /yandex.php ищем v.compare_price,и после добавим p.free_delivery AS product_free_delivery,далее ищем $price = round($simpla->money->convert($p->price, $main_currency->id, false),2);и ниже добавим if ($p->product_free_delivery == 1) { $local_delivery_cost = '0'; } else { $local_delivery_cost = '600'; }где 600 - это стоимость вашей доставки. как добавить туда $delivery->price и $delivery->free_from я не знаю, хоть пробовал по разному далее в этом же файле ищем print "<price>".$price."</price>";и ниже добавим if ($p->free_delivery) print "<local_delivery_cost>".$local_delivery_cost."</local_delivery_cost>"; если надо чтоб выводил бесплатно при сумме товара свыше 60 тыс например то добавить такой код: if ($p->product_free_delivery == 1) { $local_delivery_cost = '0'; } else { if ($p->price > 60000) { $local_delivery_cost = '0'; } else { $local_delivery_cost = '600'; } } где 60000 это сумма после которой выводим бесплатную доставку, 600 - стоим. доставкии после print "<price>".$price."</price>"; добавим if ($p->price) print "<local_delivery_cost>".$local_delivery_cost."</local_delivery_cost>"; if ($p->free_delivery) print "<local_delivery_cost>".$local_delivery_cost."</local_delivery_cost>"; Изменено 23 июля, 2015 пользователем trainracing Цитата Ссылка на сообщение Поделиться на другие сайты
trainracing Опубликовано 23 июля, 2015 Автор Жалоба Поделиться Опубликовано 23 июля, 2015 Значит, Вы писали это для "выборочной выгрузки стоимости доставки на маркет".А теперь посмотрите на свой начальный пост:1. Там нет вообще никакого упоминания ни про какой маркет.2. Там нет вообще никакого кода, связанного с выгрузкой на маркет.3. Там есть лишь более-менее стандартное добавление в админке к товару поля чекбокс по образцу рекомендуемых.4. Вы, как говорите - не профи. Для кого пишете?4.1. Если для профи, то он и сам быстрее и лучше напишет такой код по готовому имеющемуся образцу.4.2. Если для непрофи, то он сам нипочем не догадается, как и для чего Ваш код использовать (в теме уже три человека написали, что не догадались, причем все - не новички). Если что-то пишете, надо стараться, чтоб было понятно. Хоть немного о читателе заботиться надо... Дай идею как "активировать" в карточке товара и в yandex.php переменные $delivery->price и $delivery->free_from Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 23 июля, 2015 Жалоба Поделиться Опубликовано 23 июля, 2015 А Вы сами это проверяли? В последней части про изменения в yandex.php видны ошибки сразу. Например: 1. $p->free_delivery всегда НЕ определено и будет обрабатываться как пустое. 2. А если п.1 исправить, тогда тег local_delivery_cost будет выводиться несколько раз подряд. 3. Код в значительной части дублируется непонятно зачем. Значение $local_delivery_cost считается в двух местах, и по-разному... Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 23 июля, 2015 Жалоба Поделиться Опубликовано 23 июля, 2015 (изменено) Дай идею как "активировать" в карточке товара и в yandex.php переменные $delivery->price и $delivery->free_fromПеременные не активируются, нет такой формы работы с ними...Если хотите ЗАДАТЬ значения так переменных, то надо сначала понять, какое значение хотите.В Вашей ситуации осмысленного значения, как я понимаю, задать нельзя. Вопрос Ваш выглядит примерно так, как если бы при входе в магазин Вас спрашивал какой-нибудь менеджер - по какому адресу хотите доставить товар, когда хотите доставить, на какой этаж поднять, анкетку попросит заполнить еще на пару десятков вопросов. В то время как Вы еще и не уверены, что покупать будете... Изменено 23 июля, 2015 пользователем Kors Цитата Ссылка на сообщение Поделиться на другие сайты
trainracing Опубликовано 23 июля, 2015 Автор Жалоба Поделиться Опубликовано 23 июля, 2015 А Вы сами это проверяли?В последней части про изменения в yandex.php видны ошибки сразу.Например:1. $p->free_delivery всегда НЕ определено и будет обрабатываться как пустое.2. А если п.1 исправить, тогда тег local_delivery_cost будет выводиться несколько раз подряд.3. Код в значительной части дублируется непонятно зачем. Значение $local_delivery_cost считается в двух местах, и по-разному...Работоспособность проверил несколько раз, работает отлично. дублировал т.к. по другому не работало. при подстановке напр. вместо 60000 переменную $delivery->free_from - на все выдает значение 0 вместо указанной в настройках Цитата Ссылка на сообщение Поделиться на другие сайты
trainracing Опубликовано 23 июля, 2015 Автор Жалоба Поделиться Опубликовано 23 июля, 2015 Переменные не активируются, нет такой формы работы с ними...Если хотите ЗАДАТЬ значения так переменных, то надо сначала понять, какое значение хотите.В Вашей ситуации осмысленного значения, как я понимаю, задать нельзя. Вопрос Ваш выглядит примерно так, как если бы при входе в магазин Вас спрашивал какой-нибудь менеджер - по какому адресу хотите доставить товар, когда хотите доставить, на какой этаж поднять, анкетку попросит заполнить еще на пару десятков вопросов. В то время как Вы еще и не уверены, что покупать будете...например какой код нужен если надо брать с $delivery id==1 ->price Цитата Ссылка на сообщение Поделиться на другие сайты
trainracing Опубликовано 23 июля, 2015 Автор Жалоба Поделиться Опубликовано 23 июля, 2015 Мой файл yandex.php (со сторонними доработками!!)yandex.php Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 23 июля, 2015 Жалоба Поделиться Опубликовано 23 июля, 2015 (изменено) например какой код нужен если надо брать с $delivery id==1 ->price Вот теперь вопрос осмысленный.Образец кода можно легко найти, например, в view/CartView.php $delivery = $simpla->delivery->get_delivery(1);$delivery->free_from - порог бесплатной доставки для метода доставки с id=1 В прикрепленном файле код не такой, как в описании... Изменено 23 июля, 2015 пользователем Kors Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.