
sergeevizh
-
Content Count
384 -
Joined
Posts posted by sergeevizh
-
-
16 минут назад, daramal сказал:
Еще раз благодарю за поддержку. Ресайз создается, НО остался нюанс с выводом.
Так как Вы указали ресайз в админке 500:500 - это ок. Но как вывести на сайт с другим размером, чуть по-больше? Так как этот модуль с группами баннеров, то соответственно будут разные группы баннеров со своими размерами.
Если указать в шаблоне нужные размеры для вывода, к примеру такого размера:
{$banner->image|resize_banners:970:400}
файлы ресайза отлично создаются в папке preview, а далее интересное происходит: При первом обновлении страницы сайта, ресайзные баннеры подтягиваются, но если после этого обновить в админке, то после этого и на сайте, и в админке все пропадает.
Как будто происходит конфликт между файлами и система не понимает какой файл выводить ))
Как быть в этом случае?
Благодарю!
Давайте попробуем для начала удалять ресайз картинки после их изменения в админке
зайдите в api/Banners.php и замените
/****** Удаление изображения баннера *********/ function delete_image($imageFileName) { if($imageFileName!='' && file_exists($this->config->root_dir.$this->config->banners_images_dir.$imageFileName)) @unlink($this->config->root_dir.$this->config->banners_images_dir.$imageFileName); return true; }
на
/****** Удаление изображения баннера *********/ function delete_image($imageFileName) { if($imageFileName!='' && file_exists($this->config->root_dir.$this->config->banners_images_dir.$imageFileName)) $file = pathinfo($imageFileName, PATHINFO_FILENAME); $ext = pathinfo($imageFileName, PATHINFO_EXTENSION); // Удалить все ресайзы $rezised_images = glob($this->config->root_dir.$this->config->resized_banners_images_dir.$file."*.".$ext); if(is_array($rezised_images)) { foreach (glob($this->config->root_dir.$this->config->resized_banners_images_dir.$file."*.".$ext) as $f) { @unlink($f); } } @unlink($this->config->root_dir.$this->config->banners_images_dir.$imageFileName); return true; }
-
29 минут назад, daramal сказал:
Огромное спасибо. Ресайз создается! ))
public function get_banners_plugin($params, &$smarty) { if($params['group']) { $filter['show_all_pages'] = true;//Обязательный параметр $filter['group'] = (int)$params['group']; @$category = $this->design->smarty->getTemplateVars('category'); @$brand = $this->design->smarty->getTemplateVars('brand'); @$page = $this->design->smarty->getTemplateVars('page'); $filter['category'] = !empty($category)?$category->id:''; $filter['brand'] = !empty($brand) ?$brand->id:''; $filter['page'] = !empty($page) ?$page->id:''; list($banners,$count) = $this->banners->get_banners($filter); foreach($banners as $key=>$value) $banners[$key]->image = $banners[$key]->image; $smarty->assign('banners', $banners); } }
в шаблоне так же для ресайза
<div class="head-slider" id="Slide-{$group}"> <ul> {foreach $banners as $banner} <li> <a href="{$banner->url}" title="{$banner->name|escape}"> <img src="{$banner->image|resize_banners:500:500}" alt=""> </a> </li> {/foreach} </ul> </div>
и без него
<div class="head-slider" id="Slide-{$group}"> <ul> {foreach $banners as $banner} <li> <a href="{$banner->url}" title="{$banner->name|escape}"> <img src="{$config->banners_images_dir}{$banner->image}" alt=""> </a> </li> {/foreach} </ul> </div>
-
В 06.03.2021 в 14:55, daramal сказал:
Не могу прикрепить сюда файл. Выдает ошибку.
Поэтому залил к себе: SlideBanner>>
Поставил по инструкции, далее изменил добавил ...
1. /resize/resize.php ищем комментарий /* new */
<?php require_once('../api/Simpla.php'); $filename = $_GET['file']; $token = $_GET['token']; /* new */ $is_banners = $_GET['is_banners']; /* new */ $simpla = new Simpla(); if(!$simpla->config->check_token($filename, $token)) exit('bad token'); $resized_filename = $simpla->image->resize($filename /* new */, $is_banners /* new */); if(is_readable($resized_filename)) { header('Content-type: image'); print file_get_contents($resized_filename); }
2. в .htaccess заменить
# Ресайз картинок на лету RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^files/products/(.+) resize/resize.php?file=$1&token=%{QUERY_STRING} #RewriteCond %{THE_REQUEST} ^GET\ (.*)files/products/(.*)\?([A-z0-9]*) #RewriteRule ^files/products/(.+) resize/resize.php?file=%2&token=%3 [L,NE]
на
# Ресайз картинок на лету RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^files/products/(.+) resize/resize.php?file=$1&token=%{QUERY_STRING} RewriteRule ^files/banners/preview/(.+) resize/resize.php?file=$1&is_banners=1&token=%{QUERY_STRING}
3. создаем папку preview в files/banners, должно быть так
files/banners/
files/banners/preview/
4. идем в api/Design.php после
$this->smarty->registerPlugin('modifier', 'resize', array($this, 'resize_modifier'));
добавить
$this->smarty->registerPlugin('modifier', 'resize_banners', array($this, 'resize_banners_modifier'));
далее после
public function resize_modifier($filename, $width=0, $height=0, $set_watermark=false) { $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark); $resized_filename_encoded = $resized_filename; if(substr($resized_filename_encoded, 0, 7) == 'http://') $resized_filename_encoded = rawurlencode($resized_filename_encoded); $resized_filename_encoded = rawurlencode($resized_filename_encoded); return $this->config->root_url.'/'.$this->config->resized_images_dir.$resized_filename_encoded.'?'.$this->config->token($resized_filename); }
добавить
public function resize_banners_modifier($filename, $width=0, $height=0, $set_watermark=false) { $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark); $resized_filename_encoded = $resized_filename; if(substr($resized_filename_encoded, 0, 7) == 'http://') $resized_filename_encoded = rawurlencode($resized_filename_encoded); $resized_filename_encoded = rawurlencode($resized_filename_encoded); return $this->config->root_url.'/'.$this->config->resized_banners_images_dir.$resized_filename_encoded.'?'.$this->config->token($resized_filename); }
5. идем в api/Image.php
меняем
function resize($filename) {
на
function resize($filename, $is_banners = 0) {
далее меняем
// Пути к папкам с картинками $originals_dir = $this->config->root_dir.$this->config->original_images_dir; $preview_dir = $this->config->root_dir.$this->config->resized_images_dir;
на
// Пути к папкам с картинками if($is_banners == 1) { $originals_dir = $this->config->root_dir.$this->config->banners_images_dir; $preview_dir = $this->config->root_dir.$this->config->resized_banners_images_dir; } else { $originals_dir = $this->config->root_dir.$this->config->original_images_dir; $preview_dir = $this->config->root_dir.$this->config->resized_images_dir; }
6. идем в config/config.php
после
;Изображения брендов brands_images_dir = files/brands/;
добавляем
;Изображения баннеров banners_images_dir = files/banners/; resized_banners_images_dir = files/banners/preview/;
7. идем в simpla/design/html/banners.add.edit.tpl
строка 59
<td id="imageThumb">{if $banner->image}<img src="/{$config->banners_images_dir}{$banner->image}" alt="">{else}БАННЕР<span>изображение отсутсвует</span>{/if}</td>
меняем на
<td id="imageThumb">{if $banner->image}<img src="{$banner->image|resize_banners:500:500}" alt="">{else}БАННЕР<span>изображение отсутсвует</span>{/if}</td>
8. идем в simpla/design/html/banners.show.list.tpl
строка 48
<div class="banner"> {if $banner->image} <img src="/{$banners_images_dir}{$banner->image}" alt=""> {/if} </div>
меняем на
<div class="banner"> {if $banner->image} <img src="{$banner->image|resize_banners:500:500}" alt=""> {/if} </div>
-
12 минут назад, phukortsin сказал:
В стандартной Simpla заказ создается БЕЗ указания метода оплаты. Метод оплаты выбирается позже к УЖЕ имеющемуся заказу. Поэтому предложение выглядит бессмысленно...
Можно, конечно, прибавлять % в момент выбора (или изменения) метода оплаты, но это, скорее всего, создаст добавочные сложности...
знаю, что стандартно вывод методов на странице order.
но можно вывести методы оплаты на станицу cart и во все прибавлять % к сумме при выборе метода
сумма заказа: 19000₽
выбранный способ оплаты: картой банка (+3%)
итого: 19570₽
-
1 час назад, Asilis сказал:
Уважаемый Алекс, мне кажется нужно добавлять payment_currency как label добавляются, к каждому заказу вот так ->
$orders_labels = array(); foreach($this->orders->get_order_labels(array_keys($orders)) as $ol) { $orders[$ol->order_id]->labels[] = $ol; }
Вот что передается в шаблон через {debug} -> https://ibb.co/z7HMzc8
@Asilis, вам не проще будет на момент заказа к итоговой сумме прибавлять % от выбранного метода оплаты и записывать эту сумму в базу как итоговую?
-
8 минут назад, phukortsin сказал:
2. Ага, уважаемый разработчик осознал и в последнем коде вставил-таки передачу в шаблон. Спасибо!
3. Следующий вопрос: что в шаблон передается-то? Переменная $payment_currency - это ОДНА валюта, и она одна выводится в шаблоне на ВСЕ заказы. А у каждого ведь СВОЯ валюта должна показываться.
4. И по скрину видно, что у обоих заказов знаки валют ОДИНАКОВЫЕ. А должны быть разные...
5. И даже проценты неверно посчитаны:
Как такое быть может? Предположение лишь одно. Разработчик настолько уверен в правильности своей методы, что даже не проверил расчет, а просто скопировал результат своего неправильного расчета и выдал нам как доказательство. Ну очень смешно...
Уважаемый КОРС, я осознаю ваше величие и слежу за вашим творчеством на форумах Okay, Simpla и в Telegram движка Okay, понимаю, что иногда и вы бываете не компетентны. А так же нажимать на кнопочки вашей клавиатуры, дабы составить умное предложение не составляет труда. Не составит ли вам труда предложить ваше решение в этой ветке. А не рассуждать какого цвета воздух.
-
Напишу еще раз...
Имеем 2 валюты
1. карта - 1.03 = 1.00
метод оплаты - Оплата картой банка
2. банк - 1.06 = 1.00
метод оплаты - Оплата по квитанции
Есть 2 заказа
1. сумма 19200₽ - оплата картой - должны получить вывод с +6% - 20352₽
2. сумма 16154₽ - оплата квитанцией - должны получить вывод с +3% - 17123,24₽
в simpla/ OrdersAdmin.php
меняем
// Отображение $orders = array(); foreach($this->orders->get_orders($filter) as $o) $orders[$o->id] = $o;
на
// Отображение $orders = array(); $payment_method = array(); foreach($this->orders->get_orders($filter) as $o) { $orders[$o->id] = $o; $payment_method[] = $orders[$o->id]->payment_method_id; }
после
// Метки заказов $orders_labels = array(); foreach($this->orders->get_order_labels(array_keys($orders)) as $ol) $orders[$ol->order_id]->labels[] = $ol;
добавляем
// Способ оплаты $payment_methods = $this->payment->get_payment_method( $payment_method ); $payment_currency = $this->money->get_currency( intval($payment_methods->currency_id) );
после
$this->design->assign('orders', $orders);
добавляем
$this->design->assign('payment_currency', $payment_currency);
вывод
{$order->total_price|convert:$payment_currency->id} {$payment_currency->sign}
-
2 часа назад, phukortsin сказал:
Интересно, неужели автор не видит, что такое даже В ПРИНЦИПЕ работать не будет?
С ходу видно как минимум две причины:
1. заказов НЕСКОЛЬКО, а метод платежа и валюта определяются ОДИН РАЗ,
2. даже это найденное единственое значение $payment_currency в шаблон не передается...Балаболить и я могу, вот только это работает. И методы выводит к каждому заказу и в шаблон передаётся. Нужно всего лишь внимательно посмотреть на мои сообщения.
-
5 часов назад, Asilis сказал:
Всё правильно не работает! Если добавить ещё один метод то он берет другой. У меня их несколько. Есть ещё безналичный рачет он +6% соответственно валюта 1.06 = 1.00; А так как в выполненных много таких то отрабатывает не для каждого заказа, а для всех. Поэтому у вас один заказ правильно отрабатывает везде.
Чтоб работало нужно как то в каждом заказе делать.
К примеру как список покупок выводится ->
$orders = array(); foreach($this->orders->get_orders($filter) as $o) { $orders[$o->id] = $o; $orders[$o->id]->purchases = $this->orders->get_purchases(array('order_id'=>$o->id)); }
Кто подскажет как внедрить?
в OrdersAdmin.php
заменить
// Отображение $orders = array(); foreach($this->orders->get_orders($filter) as $o) $orders[$o->id] = $o;
на
// Отображение $orders = array(); $payment_method = array(); foreach($this->orders->get_orders($filter) as $o) { $orders[$o->id] = $o; $payment_method[] = $orders[$o->id]->payment_method_id; }
после этого
// Метки заказов $orders_labels = array(); foreach($this->orders->get_order_labels(array_keys($orders)) as $ol) $orders[$ol->order_id]->labels[] = $ol;
добавить
// Способ оплаты $payment_methods = $this->payment->get_payment_method( $payment_method ); $payment_currency = $this->money->get_currency( intval($payment_methods->currency_id) );
вывод
{$order->total_price|convert:$payment_currency->id} {$payment_currency->sign}
-
Какая версия Simpla у вас?
-
3 часа назад, daramal сказал:
Не могу прикрепить сюда файл. Выдает ошибку.
Поэтому залил к себе: SlideBanner>>
до чего же старый модуль... вам нужно срочно его менять на другой
-
2 минуты назад, Asilis сказал:
можете прислать ваш OrdersAdmin.php? Я именно туда и вставил и в двух случаях работает, а в двух других(выполнен, удален) не работает. Хочу по разнице понять в чем дело.
стандартный файл https://github.com/pikusov/Simpla/blob/master/simpla/OrdersAdmin.php
за исключением кода, что написал вам выше
-
25 минут назад, Asilis сказал:
Да действительно работает. Хотя я так пробовал ранее %\. Сутки потратил. Но часть вопроса открыта. При переносе в выполненные уже не работает. Может я там сначала проверял. Проверьте у себя пожалуйста.
Все так же работает, проверяйте у себя. Выполненные работают на базе OrdersAdmin.php
-
Да как не работает? Только что проверил, цена меняется в зависимости от указанной валюты в выбранной оплате
-
В simpla/OrdersAdmin.php
После
// Метки заказов $orders_labels = array(); foreach($this->orders->get_order_labels(array_keys($orders)) as $ol) $orders[$ol->order_id]->labels[] = $ol;
Вставить
// Способ оплаты $payment_method = $this->payment->get_payment_method($orders[$o->id]->payment_method_id); if(!empty($payment_method)) { $this->design->assign('payment_method', $payment_method); // Валюта оплаты $payment_currency = $this->money->get_currency(intval($payment_method->currency_id)); $this->design->assign('payment_currency', $payment_currency); }
Вывод в simpla/design/html/orders.tpl
{$order->total_price|convert:$payment_currency->id} {$payment_currency->sign}
-
2 минуты назад, daramal сказал:
Спасибо. К сожалению, не работает. Я подобное решение применял и для категории. Ресайз вообще не создается (
Скиньте мне инструкцию по которой вы делали вывод баннеров. Так как шаги выше я проверил и все вывелось.
-
1. Добавить или изменить в /resize/resize.php
<?php require_once('../api/Simpla.php'); $filename = $_GET['file']; $token = $_GET['token']; $is_banners = $_GET['is_banners']; $simpla = new Simpla(); if (!$simpla->config->check_token($filename, $token)) { header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); exit('bad token'); } $resized_filename = $simpla->image->resize($filename, $is_banners); if(is_readable($resized_filename)) { header('Content-type: image'); print file_get_contents($resized_filename); }
2. Добавить в .htaccess
# Ресайз картинок слайдер RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^files/slides/preview/(.+) resize/resize.php?file=$1&is_banners=1&token=%{QUERY_STRING}
3. Добавить в config/config.php
;Изображения баннеров banners_images_dir = files/slides/; resized_banners_images_dir = files/slides/preview/;
4. Создать папки /files/slides и /files/slides/preview
5. Добавить в api/Design.php
$this->smarty->registerPlugin('modifier', 'resize_banners', array($this, 'resize_banners_modifier'));
и
public function resize_banners_modifier($filename, $width=0, $height=0, $set_watermark=false) { $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark); $resized_filename_encoded = $resized_filename; if(substr($resized_filename_encoded, 0, 7) == 'http://') $resized_filename_encoded = rawurlencode($resized_filename_encoded); $resized_filename_encoded = rawurlencode($resized_filename_encoded); return $this->config->root_url.'/'.$this->config->resized_banners_images_dir.$resized_filename_encoded; }
6. Добавить и изменить в api/Image.php
// Пути к папкам с картинками if($is_banners == 1) { $originals_dir = $this->config->root_dir.$this->config->banners_images_dir; $preview_dir = $this->config->root_dir.$this->config->resized_banners_images_dir; } else { $originals_dir = $this->config->root_dir.$this->config->original_images_dir; $preview_dir = $this->config->root_dir.$this->config->resized_images_dir; }
7. Вывод
{$banner->image|resize_banners:970:400}
-
Можно несколько уточнений
1. orders - где? фронт или бэк?
2. Какую цель вы хотите достигнуть? Стандартно из коробки, поменяв валюту на сайте, меняется валюта и происходит конвертация в заказе
{$order->total_price|convert}
-
11 часов назад, bigptach сказал:
Вобщем уверен что вопрос смешной и аматорский, но всеже прошу помочь. хочу вывести цвет товара в тайтл и микроразметку...как правильно написать вывод конкретного свойства в шаблоне? Понятно вывод всех свойств в шаблоне есть, но как вывести к примеру id свойства 10 и все не шарю((
Вам нужен SEO модуль, который даст возможность указать в title товара название одного из свойств товара по его id, если интересно пишите
-
14 минут назад, Kami сказал:
Смотря где вы хотите вывести, если в карточке товара, то смотрите в сторону цикла вывода свойств.
Там можете через стандартный фореч выцеплять нужное свойство по id и выводить куда вам нужно
{foreach $product->features as $f} {if $f->id == 10} //10 это id характеристики {$f->name}{$f->value} {/if} {/foreach}
Тут вопрос про title и о og:title видимо
-
В 23.02.2021 в 21:50, VladSheleg сказал:
Всем привет, ребята подскажите такой вопрос. Раньше был сайт на этой платформе, затем его снесли оставит только два файлы
ajax.zip и kraskade_1.sql возможно ли восстановить сайт с этим двумя файлами?Вы указали не публичные ссылки на файлы которые находятся у вас на Яндекс.Диске
Если в архиве ajax.zip полный архив вашего сайта, а в kraskade_1.sql бекап базы, то восстановить сайт не проблема.
Укажите публичные ссылки на архивы, выбрав в диалоговом меню Яндекс.Диск "Поделиться ссылкой" скопированная ссылка станет публичной. И я помогу вам восстановить ваш сайт
-
-
5 минут назад, ST_RU сказал:
у меня на демо код другой в script/ у вас своя версия
поэтому не работает
Как раз таки, код взят из вашего footer и просто прописан внутри {literal} и вставлен мой токен api ключ. Ничего другого я не прописывал.
Ваш
<link href="https://cdn.jsdelivr.net/npm/suggestions-jquery@19.5.0/dist/css/suggestions.min.css" rel="stylesheet" /> <script src="https://cdn.jsdelivr.net/npm/suggestions-jquery@19.5.0/dist/js/jquery.suggestions.min.js"></script> <script type="text/javascript"> $("input[name='name']").suggestions({ serviceUrl: "https://dadata.ru/api/v2", token: "e3d842006144c57b92d45d7b9382fc476e5aef9d", type: "NAME", params: { parts: ["SURNAME", "NAME", "PATRONYMIC"] } }); $("input[name='address']").suggestions({ serviceUrl: "https://dadata.ru/api/v2", token: "e3d842006144c57b92d45d7b9382fc476e5aef9d", type: "ADDRESS" }); $("input[name='email']").suggestions({ serviceUrl: "https://dadata.ru/api/v2", token: "e3d842006144c57b92d45d7b9382fc476e5aef9d", type: "EMAIL", onSelect: function(suggestion) { console.log(suggestion); } }); </script>
Мой
{literal} <link href="https://cdn.jsdelivr.net/npm/suggestions-jquery@19.5.0/dist/css/suggestions.min.css" rel="stylesheet" /> <script src="https://cdn.jsdelivr.net/npm/suggestions-jquery@19.5.0/dist/js/jquery.suggestions.min.js"></script> <script type="text/javascript"> $("input[name='name']").suggestions({ serviceUrl: "https://dadata.ru/api/v2", token: "6eb9468e848fdc38b3a4d8b33cd821cdd87edc9f", type: "NAME", params: { parts: ["SURNAME", "NAME", "PATRONYMIC"] } }); $("input[name='address']").suggestions({ serviceUrl: "https://dadata.ru/api/v2", token: "6eb9468e848fdc38b3a4d8b33cd821cdd87edc9f", type: "ADDRESS" }); $("input[name='email']").suggestions({ serviceUrl: "https://dadata.ru/api/v2", token: "6eb9468e848fdc38b3a4d8b33cd821cdd87edc9f", type: "EMAIL", onSelect: function(suggestion) { console.log(suggestion); } }); </script> {/literal}
Версия jquery не имеет значения
-
1 минуту назад, ST_RU сказал:
там есть получить новый ключ. они публичные и на них лимит. смотреть нужно ваш случай. смысл гадать? я показал пример. вроде работает.
Я вам об этом и пишу, что получил уже 15 разных ключей в личном кабинете и всё равно ошибка.
demo.simpla2x.ru
Resize Баннеров
in Общие вопросы по функционалу и дизайну
Posted
не смог воспроизвести вашу ошибку, создал 4 группы по 4 картинки в каждой, размеры разные
500х500
600х600
700х700
800х800
Все картинки и группы отображаются