strukov Опубликовано 30 ноября, 2016 Жалоба Поделиться Опубликовано 30 ноября, 2016 Здравствуйте ув. пользователи.Прошу помощи хороших знатоков симплы Пытаюсь настроить вывод рекомендуемых товаров в информере корзизны, даже не спрашивайте зачем)) Проблема такая. В ajax/cart.php добавил: $featured = $simpla->products->get_products(array('featured'=>1)); $simpla->design->assign('featured', $featured); Теперь в информере могу вывести foreach featured соответсвенно. Но не работают изображения, цены и кнопка "в корзину". Я прекрасно понимаю что нужно добавлять в ajax/cart "обработчики" всего этого, но опыта не хватает, как не кручу - не выходит. Кто может помочь? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 30 ноября, 2016 Жалоба Поделиться Опубликовано 30 ноября, 2016 (изменено) а зачем это делать через аякс карт и обработчики аякс?. у вас же рекомендуемые товары это константа, она не меняется при добавлении/удалении товаров в корзину. выводите как это делается в main.tpl только в cart_informer.tpl Изменено 30 ноября, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 30 ноября, 2016 Автор Жалоба Поделиться Опубликовано 30 ноября, 2016 а зачем это делать через аякс карт и обработчики аякс?. у вас же рекомендуемые товары это константа, она не меняется при добавлении/удалении товаров в корзину. выводите как это делается в main.tpl только в cart_informer.tpl Fatal error: Call to a member function get_featured_products_plugin() on a non-object in /public_html/compiled/themename/2074eb64c04fb7cff1a0671531a69700ee5804e3.file.cart_informer.tpl.php on line 89 Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 30 ноября, 2016 Жалоба Поделиться Опубликовано 30 ноября, 2016 (изменено) Fatal error: Call to a member function get_featured_products_plugin() on a non-object in /public_html/compiled/themename/2074eb64c04fb7cff1a0671531a69700ee5804e3.file.cart_informer.tpl.php on line 89 покажите код cart_informer Изменено 30 ноября, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 30 ноября, 2016 Автор Жалоба Поделиться Опубликовано 30 ноября, 2016 <div class="card"><a href="/cart" >Корзина</a> <span class="zero">{if $cart->total_products>0}</span> <div class="cart">{$cart->total_products}</span></p> <a href="/cart" ></a> </div> </div> <div class="open-panel"> <div class="products-box {if $cart->purchases|count > 4} scroll{/if}"> {foreach $cart->purchases as $i => $purchase} <div class="item-in-cart clearfix" id="item-in-cart-{$purchase->variant->id}"> {$image = $purchase->product->images|first} {if $image} <div class="image"> <img src="{$image->filename|resize:100:100}" alt="{$product->name|escape}" /> </div> {/if} <div class="desc"> <strong><a href="products/{$purchase->product->url}">{$purchase->product->name|escape}{if $purchase->vname}, <span class="light">{$purchase->vname|escape}</span>{/if}</a></strong> <span class="light-clr qty"> Кол-во: <input type='number' data-delindx='{$i}' class='plusprod' data-min='{$purchase->amount}' data-id='{$purchase->variant->id}' style='width:40px;display:inline-block;' value='{$purchase->amount}'/> <a title="Удалить из корзины" <a href="cart/remove/{$i}"><span class="remove-sign"></span></a> </span> </div> <div class="price"> <strong id="total_cost_informer_{$purchase->variant->id}">{$purchase->total_price|convert} {$currency->sign}</strong> </div> </div> {/foreach} </div> <div class="item-in-cart summary clearfix" id="item-in-cart-{$purchase->variant->id}"> <div class="image"> </div> <div class="desc">Итого:</div> <div class="price"> <strong class="size-16">{$cart->total_price|convert} {$currency->sign|escape}</strong> </div> </div> <div class="proceed"> <a href="./cart" class="btn btn-danger pull-right bold higher">Оформить заказ <i class="icon-shopping-cart"></i></a> </div> </div> {else} <div class="cart"> <p class="items"><span class="dark-clr">{$cart->total_products}</span></p> <a href="./cart" class="btn btn-danger"> </a> </div> <div class="open-panel"> <div class="item-in-cart clearfix"> <p class="empty">В корзине нет товаров.</p> </div> </div> {/if} Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 30 ноября, 2016 Жалоба Поделиться Опубликовано 30 ноября, 2016 так и где тут вывод рекомендованных товаров? Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 30 ноября, 2016 Автор Жалоба Поделиться Опубликовано 30 ноября, 2016 так и где тут вывод рекомендованных товаров? Убрал. Но по сути сейчас не важно в какое место вставить его Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 30 ноября, 2016 Жалоба Поделиться Опубликовано 30 ноября, 2016 Убрал. Но по сути сейчас не важно в какое место вставить его так как я вам скажу где ошибка если вы убрали ту часть кода в которой ошибка? Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 30 ноября, 2016 Автор Жалоба Поделиться Опубликовано 30 ноября, 2016 так как я вам скажу где ошибка если вы убрали ту часть кода в которой ошибка? .... Просто в любое место по вашему предложению вставляю {get_featured_products var=featured_products} И выходит ошибка (ошибка в файле ajax/cart.php) Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 30 ноября, 2016 Жалоба Поделиться Опубликовано 30 ноября, 2016 понял, пару минут. действительно этот метод не будет работать, сейчас напишу как сделать Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 30 ноября, 2016 Жалоба Поделиться Опубликовано 30 ноября, 2016 (изменено) Что б так работало нужно перенести c view/View.php регистрации ф-и get_featured_products в api/Design.php Изменено 30 ноября, 2016 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 30 ноября, 2016 Автор Жалоба Поделиться Опубликовано 30 ноября, 2016 mishanya, yr4ik, - Спасибо вам большое Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 2 декабря, 2016 Автор Жалоба Поделиться Опубликовано 2 декабря, 2016 Что б так работало нужно перенести c view/View.php регистрации ф-и get_featured_products в api/Design.php К сожалению данный метод не работает (simpla 2.3.3) Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 2 декабря, 2016 Жалоба Поделиться Опубликовано 2 декабря, 2016 Пробуйте в ajax/cart.php заменить require_once('api/Simpla.php'); $simpla = new Simpla();на require_once('view/IndexView.php'); $simpla = new IndexView(); Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 2 декабря, 2016 Автор Жалоба Поделиться Опубликовано 2 декабря, 2016 Пробуйте в ajax/cart.php заменить require_once('api/Simpla.php'); $simpla = new Simpla();на require_once('view/IndexView.php'); $simpla = new IndexView(); Спасибо, но все-же вышло по методу yr4ik Просто когда вставлял в api/Design.php код регистрации плагина $this->design->smarty->registerPlugin("function", "get_is_new_products", array($this, 'get_is_new_products_plugin'));не убрал из него "design->" Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 2 декабря, 2016 Жалоба Поделиться Опубликовано 2 декабря, 2016 1. Дублирование кода - сам по себе некрасивый и порочный метод. А уж когда такое предлагают специалисты, выглядит совсем нехорошо...2. Представьте, что когда-нибудь Вы захотите изменить этот плагин. В каком месте будете менять? Надо в ДВУХ. Сразу виден недостаток - двойная работа. А в реальности, скорее всего, через некоторое время Вы забудете, что их два и поменяете только в одном. В результате, очень вероятно, в одних случаях будет срабатывать новый измененный, в других - старый. Если Вы заметите это сразу и поправите, то хорошо. А если не сразу, то уже хуже...3. А если потом еще Вам какой-то спец посоветует в другом подобном случае сдублировать код в ТРЕТЬЕ МЕСТО... В итоге понемногу уничтожаем главное достоинство Simpla - простоту - и движемся прямым путем к Импере. Неверной дорогой идете, товарищ yr4ik... Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 2 декабря, 2016 Автор Жалоба Поделиться Опубликовано 2 декабря, 2016 1. Дублирование кода - сам по себе некрасивый и порочный метод. А уж когда такое предлагают специалисты, выглядит совсем нехорошо...2. Представьте, что когда-нибудь Вы захотите изменить этот плагин. В каком месте будете менять? Надо в ДВУХ. Сразу виден недостаток - двойная работа. А в реальности, скорее всего, через некоторое время Вы забудете, что их два и поменяете только в одном. В результате, очень вероятно, в одних случаях будет срабатывать новый измененный, в других - старый. Если Вы заметите это сразу и поправите, то хорошо. А если не сразу, то уже хуже...3. А если потом еще Вам какой-то спец посоветует в другом подобном случае сдублировать код в ТРЕТЬЕ МЕСТО... В итоге понемногу уничтожаем главное достоинство Simpla - простоту - и движемся прямым путем к Импере. Неверной дорогой идете, товарищ yr4ik... Почему дублировать? Из view/View.php я его удалил, оставил только в api/Design.php Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 2 декабря, 2016 Жалоба Поделиться Опубликовано 2 декабря, 2016 Таким способом, конечно, лучше.Но теперь у Вас get_featured_products в одном классе, а другие подобные - в другом. Тоже как-то странно... Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 2 декабря, 2016 Автор Жалоба Поделиться Опубликовано 2 декабря, 2016 Но теперь у Вас get_featured_products в одном классе, а другие подобные - в другом. Тоже как-то странно...Тут вы правы Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 2 декабря, 2016 Жалоба Поделиться Опубликовано 2 декабря, 2016 (изменено) 1. Дублирование кода - сам по себе некрасивый и порочный метод. А уж когда такое предлагают специалисты, выглядит совсем нехорошо...2. Представьте, что когда-нибудь Вы захотите изменить этот плагин. В каком месте будете менять? Надо в ДВУХ. Сразу виден недостаток - двойная работа. А в реальности, скорее всего, через некоторое время Вы забудете, что их два и поменяете только в одном. В результате, очень вероятно, в одних случаях будет срабатывать новый измененный, в других - старый. Если Вы заметите это сразу и поправите, то хорошо. А если не сразу, то уже хуже...3. А если потом еще Вам какой-то спец посоветует в другом подобном случае сдублировать код в ТРЕТЬЕ МЕСТО... В итоге понемногу уничтожаем главное достоинство Simpla - простоту - и движемся прямым путем к Импере. Неверной дорогой идете, товарищ yr4ik... Не прочитал внимательно - теперь начинаешь!Про дублирование я ничего не писал. Сказал что нужно ПЕРЕНЕСТИ! По поводу того что подобные функции теперь в другом классе: Инициализацией View класса - ты вызываешь инициализацию целой кучи не нужных для нас методов и классов. Тут из выходов - только 1. То что выполняется в ф-и get_featured_products нужно продублировать в ajax контроллере.Но что тогда? Опять же дублирование кода... Так что как лучше? Изменено 2 декабря, 2016 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 2 декабря, 2016 Жалоба Поделиться Опубликовано 2 декабря, 2016 Не прочитал внимательно - теперь начинаешь! Про дублирование я ничего не писал. Сказал что нужно ПЕРЕНЕСТИ!Сознаю свою ошибку. Прочитал невнимательно.По поводу того что подобные функции теперь в другом классе: Инициализацией View класса - ты вызываешь инициализацию целой кучи не нужных для нас методов и классов. Тут из выходов - только 1. То что выполняется в ф-и get_featured_products нужно продублировать в ajax контроллере. Но что тогда? Опять же дублирование кода... Так что как лучше?Да, есть такой момент. Что лучше - вопрос непростой. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.