daramal Опубликовано 3 октября, 2015 Жалоба Поделиться Опубликовано 3 октября, 2015 Приветствую всех! Я тут пытаюсь в блоке "Вы смотрели" (Недавно просмотренные товары) вставить те же данные, что и везде, т.е. для каждого товара своя цена, старая цена, вариант, кнопка "в корзину".К сожалению, отображаются только картинки товаров, а вместе цена "Нет в наличии". Быть может, кто доработал этот блок?!Если не сложно, выложите пожалуйста это решение. Спасибо большое! Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 3 октября, 2015 Жалоба Поделиться Опубликовано 3 октября, 2015 (изменено) замените функцию public function get_browsed_products($params, &$smarty) в view/View.php на эту public function get_browsed_products($params, &$smarty) { if(!empty($_COOKIE['browsed_products'])) { $browsed_products_ids = explode(',', $_COOKIE['browsed_products']); $browsed_products_ids = array_reverse($browsed_products_ids); if(isset($params['limit'])) $browsed_products_ids = array_slice($browsed_products_ids, 0, $params['limit']); $products = array(); foreach($this->products->get_products(array('id'=>$browsed_products_ids, 'visible'=>1)) as $p) $products[$p->id] = $p; // Выбираем варианты товаров $variants = $this->variants->get_variants(array('product_id'=>$browsed_products_ids, 'in_stock'=>true)); // Для каждого варианта foreach($variants as &$variant) { // добавляем вариант в соответствующий товар $products[$variant->product_id]->variants[] = $variant; } $browsed_products_images = $this->products->get_images(array('product_id'=>$browsed_products_ids)); foreach($browsed_products_images as $browsed_product_image) if(isset($products[$browsed_product_image->product_id])) $products[$browsed_product_image->product_id]->images[] = $browsed_product_image; foreach($browsed_products_ids as $id) { if(isset($products[$id])) { if(isset($products[$id]->images[0])) $products[$id]->image = $products[$id]->images[0]; $result[] = $products[$id]; } } $smarty->assign($params['var'], $result); } } Изменено 3 октября, 2015 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 3 октября, 2015 Автор Жалоба Поделиться Опубликовано 3 октября, 2015 mishanya, спасибо большое!а не поделитесь еще кодом, что в шаблоне. к примеру в карточке товара.?! Спасибо огромное! Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 3 октября, 2015 Жалоба Поделиться Опубликовано 3 октября, 2015 (изменено) mishanya, спасибо большое!а не поделитесь еще кодом, что в шаблоне. к примеру в карточке товара.?! Спасибо огромное! используйте стандартный код для просмотренных товаров, просто теперь у вас еще доступен массив вариантов - $browsed_product->variants <!-- Просмотренные товары --> {get_browsed_products var=browsed_products limit=20} {if $browsed_products} <h2>Вы просматривали:</h2> <ul id="browsed_products"> {foreach $browsed_products as $browsed_product} <li> <a href="products/{$browsed_product->url}"><img src="{$browsed_product->image->filename|resize:50:50}" alt="{$browsed_product->name|escape}" title="{$browsed_product->name|escape}"></a> {if $browsed_product->variants|count > 0} <!-- Выбор варианта товара --> <form class="variants" action="/cart"> <table> {foreach $browsed_product->variants as $v} <tr class="variant"> <td> <input id="discounted_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $v@first}checked{/if} {if $browsed_product->variants|count<2}style="display:none;"{/if}/> </td> <td> {if $v->name}<label class="variant_name" for="discounted_{$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} </li> {/foreach} </ul> {/if} <!-- Просмотренные товары (The End)--> Изменено 3 октября, 2015 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 3 октября, 2015 Автор Жалоба Поделиться Опубликовано 3 октября, 2015 mishanya, спасибо большое при большое! Успехов Вам во всем! Цитата Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 4 октября, 2015 Автор Жалоба Поделиться Опубликовано 4 октября, 2015 mishanya, извините пожалуйста. Не могли ли Вы в селектах показать код, пожалуйста. А то и так и сяк пробую, не получается в селектах отобразить цены и варианты к ним. Спасибо огромное! Цитата Ссылка на сообщение Поделиться на другие сайты
villain1988 Опубликовано 1 апреля, 2016 Жалоба Поделиться Опубликовано 1 апреля, 2016 А каким образом очищается список просмотренных товаров и можно как-то кнопку прикрутить "Очистить"? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 1 апреля, 2016 Жалоба Поделиться Опубликовано 1 апреля, 2016 А каким образом очищается список просмотренных товаров и можно как-то кнопку прикрутить "Очистить"? хранится в куках и очищается только по истечении срока хранения или при очистке браузера Цитата Ссылка на сообщение Поделиться на другие сайты
Andrey Terkin Опубликовано 1 апреля, 2016 Жалоба Поделиться Опубликовано 1 апреля, 2016 в шаблоне где то делаем кнопку <a href="?clear_browsed=1">очистить просмотренные товары</a> А в файле index.php, после session_start(); ,который лежит в корне сайта добавляем код if (!empty($_GET['clear_browsed'])) { setcookie('browsed_products', null); header('Location: /'); } Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 1 апреля, 2016 Жалоба Поделиться Опубликовано 1 апреля, 2016 При такой очистке просмотренных пользователя перебрасывает на главную. Несколько кривенько выходит... Цитата Ссылка на сообщение Поделиться на другие сайты
Andrey Terkin Опубликовано 1 апреля, 2016 Жалоба Поделиться Опубликовано 1 апреля, 2016 СогласенНу быстренько, поэтому и кривенько(Но это не трагично, на то она и главная страница) Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 1 апреля, 2016 Жалоба Поделиться Опубликовано 1 апреля, 2016 При такой очистке просмотренных пользователя перебрасывает на главную. Несколько кривенько выходит...Если руки из одного места растут то AJAX и jQuery в помощь. Цитата Ссылка на сообщение Поделиться на другие сайты
Andrey Terkin Опубликовано 1 апреля, 2016 Жалоба Поделиться Опубликовано 1 апреля, 2016 (изменено) Зачем здесь аякс?Можно немного допилить и будет с редиректом.Вариант с возвратом на предыдущую страницу:Ссылка <a href="?clear_browsed=1&redirect={url|urlencode}">очистить просмотренные товары</a> и обработчик в /index.php : if (!empty($_GET['clear_browsed'])) { setcookie('browsed_products', null); header('Location: '. (empty($_GET['redirect']) ? '/' : $_GET['redirect'])); exit; } Изменено 1 апреля, 2016 пользователем Andrey Terkin Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 1 апреля, 2016 Жалоба Поделиться Опубликовано 1 апреля, 2016 Ответ был предназначен Корсу а не тебе. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 1 апреля, 2016 Жалоба Поделиться Опубликовано 1 апреля, 2016 а почему бы не так: <a href="{url clear_browsed=1}">очистить просмотренные товары</a> И обработчик в view/View.phpРядом с валютой. if($this->request->get('clear_browsed', 'integer')) { setcookie('browsed_products', null); header("Location: ".$this->request->url(array('clear_browsed'=>null))); } Цитата Ссылка на сообщение Поделиться на другие сайты
villain1988 Опубликовано 2 апреля, 2016 Жалоба Поделиться Опубликовано 2 апреля, 2016 а почему бы не так: <a href="{url clear_browsed=1}">очистить просмотренные товары</a> И обработчик if($this->request->get('clear_browsed', 'integer')) { setcookie('browsed_products', null); header("Location: ".$this->request->url(array('clear_browsed'=>null))); } У меня так почему то работать не хочет Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 2 апреля, 2016 Жалоба Поделиться Опубликовано 2 апреля, 2016 а почему бы не так: <a href="{url clear_browsed=1}">очистить просмотренные товары</a> И обработчик if($this->request->get('clear_browsed', 'integer')) { setcookie('browsed_products', null); header("Location: ".$this->request->url(array('clear_browsed'=>null))); } У меня так почему то работать не хочет Потому что ошибки есть. Если имелся в виду обработчик в /index.php, как в посте #13, то сразу видна грубая ошибка: там не определено $this, естественно, так работать не будет.Возможно, будет работать, если поместить обработчик в view/IndexView.php (кажется, это идейно более правильно) Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 2 апреля, 2016 Жалоба Поделиться Опубликовано 2 апреля, 2016 Да, именно туда я и имел в виду.Точнее, я бы поместил в view/View.phpРядом с валютой. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.