Перейти к содержанию
Официальный форум поддержки Simpla

Вывод рекомендуемых товаров в информере корзизны.


Рекомендуемые сообщения

Здравствуйте ув. пользователи.

Прошу помощи хороших знатоков симплы  :)

 

Пытаюсь настроить вывод рекомендуемых товаров в информере корзизны, даже не спрашивайте зачем)) 

Проблема такая.

 

В ajax/cart.php добавил:

$featured = $simpla->products->get_products(array('featured'=>1));
$simpla->design->assign('featured', $featured);

 

Теперь в информере могу вывести foreach featured соответсвенно. Но не работают изображения, цены и кнопка "в корзину". Я прекрасно понимаю что нужно добавлять в ajax/cart "обработчики" всего этого, но опыта не хватает, как не кручу - не выходит. Кто может помочь?

Ссылка на сообщение
Поделиться на другие сайты

а зачем это делать через аякс карт и обработчики аякс?. у вас же рекомендуемые товары это константа, она не меняется при добавлении/удалении товаров в корзину.

 

выводите как это делается в main.tpl только в cart_informer.tpl

Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

а зачем это делать через аякс карт и обработчики аякс?. у вас же рекомендуемые товары это константа, она не меняется при добавлении/удалении товаров в корзину.

 

выводите как это делается в 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
Ссылка на сообщение
Поделиться на другие сайты

 

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

Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

<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}
Ссылка на сообщение
Поделиться на другие сайты

так и где тут вывод рекомендованных товаров?

 

Убрал. Но по сути сейчас не важно в какое место вставить его

Ссылка на сообщение
Поделиться на другие сайты

Убрал. Но по сути сейчас не важно в какое место вставить его

 

так как я вам скажу где ошибка если вы убрали ту часть кода в которой ошибка?

Ссылка на сообщение
Поделиться на другие сайты

так как я вам скажу где ошибка если вы убрали ту часть кода в которой ошибка?

 

....

 

Просто в любое место по вашему предложению вставляю 

{get_featured_products var=featured_products}

 

 

И выходит ошибка (ошибка в файле ajax/cart.php)

Ссылка на сообщение
Поделиться на другие сайты

Что б так работало нужно перенести c view/View.php регистрации ф-и get_featured_products в api/Design.php 

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Что б так работало нужно перенести c view/View.php регистрации ф-и get_featured_products в api/Design.php 

 

К сожалению данный метод не работает (simpla 2.3.3)

Ссылка на сообщение
Поделиться на другие сайты

Пробуйте в  ajax/cart.php  заменить

   require_once('api/Simpla.php');
   $simpla = new Simpla();
на
   require_once('view/IndexView.php');
   $simpla = new IndexView();
 

Ссылка на сообщение
Поделиться на другие сайты

Пробуйте в  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->"

Ссылка на сообщение
Поделиться на другие сайты

1. Дублирование кода - сам по себе некрасивый и порочный метод. А уж когда такое предлагают специалисты, выглядит совсем нехорошо...

2. Представьте, что когда-нибудь Вы захотите изменить этот плагин. В каком месте будете менять? Надо в ДВУХ. Сразу виден недостаток - двойная работа. А в реальности, скорее всего, через некоторое время Вы забудете, что их  два и поменяете только в одном. В результате, очень вероятно, в одних случаях будет срабатывать новый измененный, в других - старый. Если Вы заметите это сразу и поправите, то хорошо. А если не сразу, то уже хуже...

3. А если потом еще Вам какой-то спец посоветует в другом подобном случае сдублировать код в ТРЕТЬЕ МЕСТО...

 

В итоге понемногу уничтожаем главное достоинство Simpla - простоту - и движемся прямым путем к Импере. Неверной дорогой идете, товарищ yr4ik...

Ссылка на сообщение
Поделиться на другие сайты

1. Дублирование кода - сам по себе некрасивый и порочный метод. А уж когда такое предлагают специалисты, выглядит совсем нехорошо...

2. Представьте, что когда-нибудь Вы захотите изменить этот плагин. В каком месте будете менять? Надо в ДВУХ. Сразу виден недостаток - двойная работа. А в реальности, скорее всего, через некоторое время Вы забудете, что их  два и поменяете только в одном. В результате, очень вероятно, в одних случаях будет срабатывать новый измененный, в других - старый. Если Вы заметите это сразу и поправите, то хорошо. А если не сразу, то уже хуже...

3. А если потом еще Вам какой-то спец посоветует в другом подобном случае сдублировать код в ТРЕТЬЕ МЕСТО...

 

В итоге понемногу уничтожаем главное достоинство Simpla - простоту - и движемся прямым путем к Импере. Неверной дорогой идете, товарищ yr4ik...

 

Почему дублировать? Из view/View.php я его удалил, оставил только в api/Design.php

Ссылка на сообщение
Поделиться на другие сайты

Таким способом, конечно,  лучше.

Но теперь у Вас get_featured_products в одном классе, а другие подобные - в другом. Тоже как-то странно...

Ссылка на сообщение
Поделиться на другие сайты

Но теперь у Вас get_featured_products в одном классе, а другие подобные - в другом. Тоже как-то странно...

Тут вы правы  :)

Ссылка на сообщение
Поделиться на другие сайты

1. Дублирование кода - сам по себе некрасивый и порочный метод. А уж когда такое предлагают специалисты, выглядит совсем нехорошо...

2. Представьте, что когда-нибудь Вы захотите изменить этот плагин. В каком месте будете менять? Надо в ДВУХ. Сразу виден недостаток - двойная работа. А в реальности, скорее всего, через некоторое время Вы забудете, что их  два и поменяете только в одном. В результате, очень вероятно, в одних случаях будет срабатывать новый измененный, в других - старый. Если Вы заметите это сразу и поправите, то хорошо. А если не сразу, то уже хуже...

3. А если потом еще Вам какой-то спец посоветует в другом подобном случае сдублировать код в ТРЕТЬЕ МЕСТО...

 

В итоге понемногу уничтожаем главное достоинство Simpla - простоту - и движемся прямым путем к Импере. Неверной дорогой идете, товарищ yr4ik...

 

Не прочитал внимательно - теперь начинаешь!

Про дублирование я ничего не писал. Сказал что нужно ПЕРЕНЕСТИ!

 

По поводу того что подобные функции теперь в другом классе:

 

Инициализацией View класса - ты вызываешь инициализацию целой кучи не нужных для нас методов и классов.

 

Тут из выходов - только 1. То что выполняется в ф-и get_featured_products нужно продублировать в ajax контроллере.

Но что тогда? Опять же дублирование кода... Так что как лучше?

Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

Не прочитал внимательно - теперь начинаешь!

Про дублирование я ничего не писал. Сказал что нужно ПЕРЕНЕСТИ!

Сознаю свою ошибку. Прочитал невнимательно.

По поводу того что подобные функции теперь в другом классе:

 

Инициализацией View класса - ты вызываешь инициализацию целой кучи не нужных для нас методов и классов.

 

Тут из выходов - только 1. То что выполняется в ф-и get_featured_products нужно продублировать в ajax контроллере.

Но что тогда? Опять же дублирование кода... Так что как лучше?

Да, есть такой момент. Что лучше - вопрос непростой.
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...