daramal Posted October 3, 2015 Report Share Posted October 3, 2015 Приветствую всех! Я тут пытаюсь в блоке "Вы смотрели" (Недавно просмотренные товары) вставить те же данные, что и везде, т.е. для каждого товара своя цена, старая цена, вариант, кнопка "в корзину".К сожалению, отображаются только картинки товаров, а вместе цена "Нет в наличии". Быть может, кто доработал этот блок?!Если не сложно, выложите пожалуйста это решение. Спасибо большое! Quote Link to post Share on other sites
mishanya Posted October 3, 2015 Report Share Posted October 3, 2015 (edited) замените функцию 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); } } Edited October 3, 2015 by mishanya Quote Link to post Share on other sites
daramal Posted October 3, 2015 Author Report Share Posted October 3, 2015 mishanya, спасибо большое!а не поделитесь еще кодом, что в шаблоне. к примеру в карточке товара.?! Спасибо огромное! Quote Link to post Share on other sites
mishanya Posted October 3, 2015 Report Share Posted October 3, 2015 (edited) 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)--> Edited October 3, 2015 by mishanya Quote Link to post Share on other sites
daramal Posted October 3, 2015 Author Report Share Posted October 3, 2015 mishanya, спасибо большое при большое! Успехов Вам во всем! Quote Link to post Share on other sites
daramal Posted October 4, 2015 Author Report Share Posted October 4, 2015 mishanya, извините пожалуйста. Не могли ли Вы в селектах показать код, пожалуйста. А то и так и сяк пробую, не получается в селектах отобразить цены и варианты к ним. Спасибо огромное! Quote Link to post Share on other sites
villain1988 Posted April 1, 2016 Report Share Posted April 1, 2016 А каким образом очищается список просмотренных товаров и можно как-то кнопку прикрутить "Очистить"? Quote Link to post Share on other sites
mishanya Posted April 1, 2016 Report Share Posted April 1, 2016 А каким образом очищается список просмотренных товаров и можно как-то кнопку прикрутить "Очистить"? хранится в куках и очищается только по истечении срока хранения или при очистке браузера Quote Link to post Share on other sites
Andrey Terkin Posted April 1, 2016 Report Share Posted April 1, 2016 в шаблоне где то делаем кнопку <a href="?clear_browsed=1">очистить просмотренные товары</a> А в файле index.php, после session_start(); ,который лежит в корне сайта добавляем код if (!empty($_GET['clear_browsed'])) { setcookie('browsed_products', null); header('Location: /'); } Quote Link to post Share on other sites
Kors Posted April 1, 2016 Report Share Posted April 1, 2016 При такой очистке просмотренных пользователя перебрасывает на главную. Несколько кривенько выходит... Quote Link to post Share on other sites
Andrey Terkin Posted April 1, 2016 Report Share Posted April 1, 2016 СогласенНу быстренько, поэтому и кривенько(Но это не трагично, на то она и главная страница) Quote Link to post Share on other sites
Noxter Posted April 1, 2016 Report Share Posted April 1, 2016 При такой очистке просмотренных пользователя перебрасывает на главную. Несколько кривенько выходит...Если руки из одного места растут то AJAX и jQuery в помощь. Quote Link to post Share on other sites
Andrey Terkin Posted April 1, 2016 Report Share Posted April 1, 2016 (edited) Зачем здесь аякс?Можно немного допилить и будет с редиректом.Вариант с возвратом на предыдущую страницу:Ссылка <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; } Edited April 1, 2016 by Andrey Terkin Quote Link to post Share on other sites
Noxter Posted April 1, 2016 Report Share Posted April 1, 2016 Ответ был предназначен Корсу а не тебе. Quote Link to post Share on other sites
Kosjak76 Posted April 1, 2016 Report Share Posted April 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))); } Quote Link to post Share on other sites
villain1988 Posted April 2, 2016 Report Share Posted April 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))); } У меня так почему то работать не хочет Quote Link to post Share on other sites
Kors Posted April 2, 2016 Report Share Posted April 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 (кажется, это идейно более правильно) Quote Link to post Share on other sites
Kosjak76 Posted April 2, 2016 Report Share Posted April 2, 2016 Да, именно туда я и имел в виду.Точнее, я бы поместил в view/View.phpРядом с валютой. 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.