strukov Posted November 30, 2016 Report Share Posted November 30, 2016 Здравствуйте ув. пользователи.Прошу помощи хороших знатоков симплы Пытаюсь настроить вывод рекомендуемых товаров в информере корзизны, даже не спрашивайте зачем)) Проблема такая. В ajax/cart.php добавил: $featured = $simpla->products->get_products(array('featured'=>1)); $simpla->design->assign('featured', $featured); Теперь в информере могу вывести foreach featured соответсвенно. Но не работают изображения, цены и кнопка "в корзину". Я прекрасно понимаю что нужно добавлять в ajax/cart "обработчики" всего этого, но опыта не хватает, как не кручу - не выходит. Кто может помочь? Quote Link to post Share on other sites
mishanya Posted November 30, 2016 Report Share Posted November 30, 2016 (edited) а зачем это делать через аякс карт и обработчики аякс?. у вас же рекомендуемые товары это константа, она не меняется при добавлении/удалении товаров в корзину. выводите как это делается в main.tpl только в cart_informer.tpl Edited November 30, 2016 by mishanya Quote Link to post Share on other sites
strukov Posted November 30, 2016 Author Report Share Posted November 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 Quote Link to post Share on other sites
mishanya Posted November 30, 2016 Report Share Posted November 30, 2016 (edited) 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 Edited November 30, 2016 by mishanya Quote Link to post Share on other sites
strukov Posted November 30, 2016 Author Report Share Posted November 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} Quote Link to post Share on other sites
mishanya Posted November 30, 2016 Report Share Posted November 30, 2016 так и где тут вывод рекомендованных товаров? Quote Link to post Share on other sites
strukov Posted November 30, 2016 Author Report Share Posted November 30, 2016 так и где тут вывод рекомендованных товаров? Убрал. Но по сути сейчас не важно в какое место вставить его Quote Link to post Share on other sites
mishanya Posted November 30, 2016 Report Share Posted November 30, 2016 Убрал. Но по сути сейчас не важно в какое место вставить его так как я вам скажу где ошибка если вы убрали ту часть кода в которой ошибка? Quote Link to post Share on other sites
strukov Posted November 30, 2016 Author Report Share Posted November 30, 2016 так как я вам скажу где ошибка если вы убрали ту часть кода в которой ошибка? .... Просто в любое место по вашему предложению вставляю {get_featured_products var=featured_products} И выходит ошибка (ошибка в файле ajax/cart.php) Quote Link to post Share on other sites
mishanya Posted November 30, 2016 Report Share Posted November 30, 2016 понял, пару минут. действительно этот метод не будет работать, сейчас напишу как сделать Quote Link to post Share on other sites
yr4ik Posted November 30, 2016 Report Share Posted November 30, 2016 (edited) Что б так работало нужно перенести c view/View.php регистрации ф-и get_featured_products в api/Design.php Edited November 30, 2016 by yr4ik Quote Link to post Share on other sites
strukov Posted November 30, 2016 Author Report Share Posted November 30, 2016 mishanya, yr4ik, - Спасибо вам большое Quote Link to post Share on other sites
strukov Posted December 2, 2016 Author Report Share Posted December 2, 2016 Что б так работало нужно перенести c view/View.php регистрации ф-и get_featured_products в api/Design.php К сожалению данный метод не работает (simpla 2.3.3) Quote Link to post Share on other sites
Kors Posted December 2, 2016 Report Share Posted December 2, 2016 Пробуйте в ajax/cart.php заменить require_once('api/Simpla.php'); $simpla = new Simpla();на require_once('view/IndexView.php'); $simpla = new IndexView(); Quote Link to post Share on other sites
strukov Posted December 2, 2016 Author Report Share Posted December 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->" Quote Link to post Share on other sites
Kors Posted December 2, 2016 Report Share Posted December 2, 2016 1. Дублирование кода - сам по себе некрасивый и порочный метод. А уж когда такое предлагают специалисты, выглядит совсем нехорошо...2. Представьте, что когда-нибудь Вы захотите изменить этот плагин. В каком месте будете менять? Надо в ДВУХ. Сразу виден недостаток - двойная работа. А в реальности, скорее всего, через некоторое время Вы забудете, что их два и поменяете только в одном. В результате, очень вероятно, в одних случаях будет срабатывать новый измененный, в других - старый. Если Вы заметите это сразу и поправите, то хорошо. А если не сразу, то уже хуже...3. А если потом еще Вам какой-то спец посоветует в другом подобном случае сдублировать код в ТРЕТЬЕ МЕСТО... В итоге понемногу уничтожаем главное достоинство Simpla - простоту - и движемся прямым путем к Импере. Неверной дорогой идете, товарищ yr4ik... Quote Link to post Share on other sites
strukov Posted December 2, 2016 Author Report Share Posted December 2, 2016 1. Дублирование кода - сам по себе некрасивый и порочный метод. А уж когда такое предлагают специалисты, выглядит совсем нехорошо...2. Представьте, что когда-нибудь Вы захотите изменить этот плагин. В каком месте будете менять? Надо в ДВУХ. Сразу виден недостаток - двойная работа. А в реальности, скорее всего, через некоторое время Вы забудете, что их два и поменяете только в одном. В результате, очень вероятно, в одних случаях будет срабатывать новый измененный, в других - старый. Если Вы заметите это сразу и поправите, то хорошо. А если не сразу, то уже хуже...3. А если потом еще Вам какой-то спец посоветует в другом подобном случае сдублировать код в ТРЕТЬЕ МЕСТО... В итоге понемногу уничтожаем главное достоинство Simpla - простоту - и движемся прямым путем к Импере. Неверной дорогой идете, товарищ yr4ik... Почему дублировать? Из view/View.php я его удалил, оставил только в api/Design.php Quote Link to post Share on other sites
Kors Posted December 2, 2016 Report Share Posted December 2, 2016 Таким способом, конечно, лучше.Но теперь у Вас get_featured_products в одном классе, а другие подобные - в другом. Тоже как-то странно... Quote Link to post Share on other sites
strukov Posted December 2, 2016 Author Report Share Posted December 2, 2016 Но теперь у Вас get_featured_products в одном классе, а другие подобные - в другом. Тоже как-то странно...Тут вы правы Quote Link to post Share on other sites
yr4ik Posted December 2, 2016 Report Share Posted December 2, 2016 (edited) 1. Дублирование кода - сам по себе некрасивый и порочный метод. А уж когда такое предлагают специалисты, выглядит совсем нехорошо...2. Представьте, что когда-нибудь Вы захотите изменить этот плагин. В каком месте будете менять? Надо в ДВУХ. Сразу виден недостаток - двойная работа. А в реальности, скорее всего, через некоторое время Вы забудете, что их два и поменяете только в одном. В результате, очень вероятно, в одних случаях будет срабатывать новый измененный, в других - старый. Если Вы заметите это сразу и поправите, то хорошо. А если не сразу, то уже хуже...3. А если потом еще Вам какой-то спец посоветует в другом подобном случае сдублировать код в ТРЕТЬЕ МЕСТО... В итоге понемногу уничтожаем главное достоинство Simpla - простоту - и движемся прямым путем к Импере. Неверной дорогой идете, товарищ yr4ik... Не прочитал внимательно - теперь начинаешь!Про дублирование я ничего не писал. Сказал что нужно ПЕРЕНЕСТИ! По поводу того что подобные функции теперь в другом классе: Инициализацией View класса - ты вызываешь инициализацию целой кучи не нужных для нас методов и классов. Тут из выходов - только 1. То что выполняется в ф-и get_featured_products нужно продублировать в ajax контроллере.Но что тогда? Опять же дублирование кода... Так что как лучше? Edited December 2, 2016 by yr4ik Quote Link to post Share on other sites
Kors Posted December 2, 2016 Report Share Posted December 2, 2016 Не прочитал внимательно - теперь начинаешь! Про дублирование я ничего не писал. Сказал что нужно ПЕРЕНЕСТИ!Сознаю свою ошибку. Прочитал невнимательно.По поводу того что подобные функции теперь в другом классе: Инициализацией View класса - ты вызываешь инициализацию целой кучи не нужных для нас методов и классов. Тут из выходов - только 1. То что выполняется в ф-и get_featured_products нужно продублировать в ajax контроллере. Но что тогда? Опять же дублирование кода... Так что как лучше?Да, есть такой момент. Что лучше - вопрос непростой. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.