Al_Ary
-
Публикаций
24 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Al_Ary
-
-
Есть давно работающий сайт на Simpla, в котором около 1500 заполненных товаров с описаниями и картинками.
Есть отдельно стоящая 1С которая привязана к кассе. Т.е. при продаже товара в 1С со склада списывается товар.
Задача: надо как-то связать магазин с 1С, чтобы было актуальное наличие товаров. Если можно алгоритм работы по пунктам. external_id у всех пустые.
-
Всё равно спасибо
Ха красавчик!
Я даже и забыл что такое постил)Только не работает подсветка активного фильтра в вашем варианте, но это уже сам поправил.
-
Захожу в бренд, фильтр по свойствам пропадает.
Как сделать чтобы работал? Я так понимаю он привязан к категории товара? На сайте одна категория, навигация только по брендам.
Грубо говоря надо сделать чтобы он появлялся даже на странице /products
-
Способ 1:
{($v->price|convert:null:false)|floor} РУБ
{(($v->price|convert:null:false)*100-(($v->price|convert:null:false)|floor)*100)|floor} КОП
Способ 2:
{$price2=explode('.',$v->price|convert:null:false)}
{$price2.0} РУБ {$price2.1} КОП
Второй способ не корректно работает, если у копеек десятичное значение. Например 50 копеек выводит как 5 копеек. Первый рабочий полностью, спасибо!
-
Странности: {$v->price|convert:USD} заработал.
-
Спасибо, пунк 1 работает, а вот по второму наверное не совсем понятно вопрос задал, попытаюсь пояснить. Надо выводить цену так, чтобы в шаблоне было как бы два тега: один для целых, второй для долей:
Цена: {$рублей} руб. {$копеек} к.
Если поставить вывод копеек в админке цена выводится просто 65.5 руб.
-
1. Как выводить в товаре вывод цены сразу в двух валютах, например:65 руб 1 $ ?
{$price|convert:USD} — возвращает 0, {$v->price|convert:USD} — возвращает ошибку смарти.
2. Как выводить только рубли и только копейки? Например: 65 руб. 50 к.
-
Столкнулся с шаблоном, в котором надо выводить отдельно день, месяц и год. Причём месяц буквами на русском, сделал так, но чё-то мне подсказывает, что есть более изящное решение
<div class="news-date"> <p class="news-date-day">{$post->date|date_format:"%e"}</p> <p class="news-date-month"> {if $post->date|date_format:"%m" == 01}января{/if} {if $post->date|date_format:"%m" == 02}февраля{/if} {if $post->date|date_format:"%m" == 03}марта{/if} {if $post->date|date_format:"%m" == 04}апреля{/if} {if $post->date|date_format:"%m" == 05}мая{/if} {if $post->date|date_format:"%m" == 06}июня{/if} {if $post->date|date_format:"%m" == 07}июля{/if} {if $post->date|date_format:"%m" == 08}августа{/if} {if $post->date|date_format:"%m" == 09}сентября{/if} {if $post->date|date_format:"%m" == 10}октября{/if} {if $post->date|date_format:"%m" == 11}ноября{/if} {if $post->date|date_format:"%m" == 12}декабря{/if} </p> <p class="news-date-year">{$post->date|date_format:"%Y"}</p> </div>
Что-то не нашёл как использовать case в smarty.
-
пытаюсь создать копию тех товаров, что не открываются. В итоге эти же копии также скидывают на главную. Странно все как-то ((
Пока не увидим сайта, мы можем лишь предполагать. Предположу, что у вас испорченная база данных. Из за чего так случилось, надо разбираться.
-
ostrun, если бренды только на главной, то искать надо в main.tpl, если на всех страницах снизу, то искать надо в index.tpl
ищите строку
{foreach $all_brands as $b}
Возможно, вы делаете правки не в том шаблоне, который активен?
-
Вдогонку сопутствующий вопрос - как показывать цену на странице товара, даже если товар кончился?
В этом случае $product->variants перестает содержать данные - в том числе и цену при выводе данных в product.tpl и product_block.tpl
Где это в коде логичнее поправить?
Для этого надо чуть-чуть поломать api
В файле api/Variants.php находим
$variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL)');
И добавляем, чтобы и при нулевом значении, тоже думало, что товар in_stock, вот так:
$variant_id_filter = $this->db->placehold('AND (v.stock>0 OR v.stock IS NULL OR v.stock = 0)');
Получится что везде где товара 0, всё равно будет возможность отображать цену и отображать кнопочку "в корзину", поэтому везде в шаблонах надо изменить условия вывода кнопки, и надписи "нет в наличии".
Стандартное:
{if $product->variants|count > 0} <!-- Выбор варианта товара --> <form class="variants" action="/cart"> <table> {foreach $product->variants as $v} <tr class="variant"> <td> <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/> </td> <td> {if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if} </td> <td> {if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if} <span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span> </td> </tr> {/foreach} </table> <input type="submit" class="button" value="в корзину" data-result-text="добавлено"/> </form> <!-- Выбор варианта товара (The End) --> {else} Нет в наличии {/if}
Меняем на:
<!-- Выбор варианта товара --> <form class="variants" action="/cart"> <table> {foreach $product->variants as $v} <tr class="variant"> <td> <input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/> </td> <td> {if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if} </td> <td> {if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if} <span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span> </td> </tr> {/foreach} </table> {if $product->variant->stock > 0} <input type="submit" class="button" value="в корзину" data-result-text="добавлено"/> {/if} </form> <!-- Выбор варианта товара (The End) --> {if $product->variant->stock = 0} Нет в наличии {/if}
Получается удаляем стандартную проверку на заполненность массивна, потому что он у нас в любом случае будет заполнен, и вставляет два условия: в случае если товаров больше чем 0 (if $product->variant->stock > 0) — показываем кнопку заказа, в случае если количество товаров 0, показываем "нет в наличии".
На мой взгляд решение довольно простое, но возможно с "косяками"
-
Довольно примитивно. Считаться по такой методе будет совсем неправильно...
Ну начало верное.
Создать ещё одно поле в таблице s_variants.
Определиться когда товар считается проданным. У кого-то это галочка "оплачен" через админку или автоматом, у кого-то перенос в папку "выполненные".
По этому событию добавлять в значение, скажем "sales", количество товара из заказа.
Бесплатно кто-то вряд-ли будет реализовывать. Работа не на 5 минут.
-
Мы делаем так же, как описывал выше Kors: в файле callback.php нужного метода оплаты, перед тем как списать товар и сразу же после того как проставляем статус "оплачено":
// Установим статус оплачен $simpla->orders->update_order(intval($order->id), array('paid'=>1));
рассылаем уведомления всем кому надо и разными способами. Считаем, что подтверждение оплаты важный этап для клиента, поэтому также отправляем ему смс с подтверждением:
// Отправим уведомление на email $simpla->notify->email_order_user(intval($order->id)); $simpla->notify->email_order_admin(intval($order->id)); // Отправим уведомление на телефон админа $admin_phone = $simpla->settings->pz_phones[admin]; $simpla->smssend->send($admin_phone, 'Заказ №'.$order->id.' на сумму '.$order->total_price.' '.$payment_currency->code.' оплачен.'); // и телефон клиента $simpla->smssend->send($order->phone, 'Ваш заказ №'.$order->id.' на сумму '.$_POST['amount'].' '.$payment_currency->code.' оплачен.');
Функция отправки смс и её реализация описана в соответствующей теме.
Отдельно отмечу, что номер телефона администратора подхватываем из админки из настроек сервиса "Простые звонки":
$admin_phone = $simpla->settings->pz_phones[admin];
Где admin — логин менеджера.
-
Чтобы в шаблоне заработали смарти-теги с выводом предыдущей и следующей картинки нужно:
В файле api/Products.php
Найти функцию:
public function get_next_product($id) { $this->db->query("SELECT position FROM __products WHERE id=? LIMIT 1", $id); $position = $this->db->result('position'); $this->db->query("SELECT pc.category_id FROM __products_categories pc WHERE product_id=? ORDER BY position LIMIT 1", $id); $category_id = $this->db->result('category_id'); $query = $this->db->placehold("SELECT id FROM __products p, __products_categories pc WHERE pc.product_id=p.id AND p.position>? AND pc.position=(SELECT MIN(pc2.position) FROM __products_categories pc2 WHERE pc.product_id=pc2.product_id) AND pc.category_id=? AND p.visible ORDER BY p.position limit 1", $position, $category_id); $this->db->query($query); return $this->get_product((integer)$this->db->result('id')); }
Вставить после $this->db->query($query);
$n=$this->get_product((integer)$this->db->result('id')); if($n != 0){ $n->images = $this->get_images(array('product_id'=>$n->id)); $n->image = &$n->images[0]; return $n; }
И закомментировать двумя слешами или удалить строчку:
// return $this->get_product((integer)$this->db->result('id'));
Аналогично сделать для функции get_prev_product, после $this->db->query($query); вставить тот же код, что и выше и удалить последнюю строчку.
От описанного выше отличается исправлением бага связанного с самым первым и самым последним товаром.
В шаблоне можно использовать:
{$next_product->image->filename|resize:200:200} {$prev_product->image->filename|resize:200:200}
-
А теперь представь, что тебе необходимо сделать, скажем, надпись шириной в два блока при отображении в четыре блока (последних). Как она у тебя отобразится при ширине в три блока (колонки)? Смысл блоков в том, что при сокращении размера экрана блоки смещаются вниз и надпись, которая по определению должна быть справа у тебя станет снизу. Верстать с нуля таким образом может и удобно, но переделывать под клиента такие верстки - это жопа.
Таким образом сверстан исключительно блок такблицы с товарами, остальной сайт верстай как хочешь.
-
Костыль действительно славный, то что надо. Но, не работает увеличитель (fancybox) картинок именно на изменённом изображении и как-бы допилить ресайз картинок.
-
-
Ещё актуально, никто не решил?
-
Как сделать чтобы скидка для группы пользователей "постоянный покупатель" не действовала на акционные товары?
-
Нужно доработать идею. Допустим в новинках
{get_new_products var=new_products limit=6}
значение 6, но из шести товаров не нулевая цена только у трёх. Как сделать так чтобы подгружало 6 товаров с ненулевой ценой?
И вообще, как сделать так, чтобы на сайте нигде (т.е. в products.tpl) тоже не выводились товары с нулевой ценой. -
-
Как сделать дополнительную кнопку в списке товаров категории, при нажатии которой выводятся все товары этой категории без разбиения на страницы.
Т.е. в pagination.tpl надо после последней страницы вывести кнопочку "все сразу" при нажатии на которую открывается страница со всеми товарами без разбиения на страницы.
В шаблоне должно выглядеть так:
[1] [2] [3] вперед? [все сразу]
Интеграция с 1С
в Общие вопросы по функционалу и дизайну
Опубликовано
А подробнее?