Novecheg Опубликовано 23 августа, 2012 Жалоба Поделиться Опубликовано 23 августа, 2012 У меня он пока "новый".DB:ALTER TABLE `s_products` ADD `new` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `hit`ProductAdmin.php:$product->new = $this->request->post('new', 'boolean');Products.php$query = "SELECT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.featured, p.new, p.meta_title, p.meta_keywords, p.meta_description, b.name as brand, b.url as brand_url FROM __products p $category_id_filter LEFT JOIN __brands b ON p.brand_id = b.id WHERE 1 $product_id_filter $brand_id_filter $features_filter $keyword_filter $is_featured_filter $discounted_filter $in_stock_filter $visible_filter GROUP BY p.id ORDER BY $order $sql_limit"; $query = $this->db->placehold($query);(это в 103 строке, аналогично в 216 строке идёт запрос, в нём добавить p.new)Product.tpl в админке: <div class="checkbox"> <input name=new value="1" type="checkbox" id="new_checkbox" {if $product->new}checked{/if}/> <label for="new_checkbox">NEW</label> </div> Вот и всё. Теперь у товара есть свойство $product->new, одного только свойства "хит" явно было недостаточно. Используйте на своё усмотрение. Цитата Ссылка на сообщение Поделиться на другие сайты
Novecheg Опубликовано 23 августа, 2012 Автор Жалоба Поделиться Опубликовано 23 августа, 2012 Использование:лучшая цена, новинка, скидка, распродажа... Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 22 сентября, 2012 Жалоба Поделиться Опубликовано 22 сентября, 2012 сделал вывод новинок для версии 2.0.2, но есть вопрос.проделанные действия:в файле simpla/view/View.php примерно строка 90 после:$this->design->smarty->registerPlugin("function", "get_browsed_products", array($this, 'get_browsed_products'));добавляем$this->design->smarty->registerPlugin("function", "get_new_products", array($this, 'get_new_products_plugin'));после функцииpublic function get_browsed_products($params, &$smarty) { if(!empty($_COOKIE['browsed_products'])) { .... } }добавляемpublic function get_new_products_plugin($params, &$smarty) { if(!isset($params['visible'])) $params['visible'] = 1; if(!isset($params['sort'])) $params['sort'] = 'created'; if(!empty($params['var'])) { foreach($this->products->get_products($params) as $p) $products[$p->id] = $p; if(!empty($products)) { // id выбраных товаров $products_ids = array_keys($products); // Выбираем варианты товаров $variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true)); // Для каждого варианта foreach($variants as &$variant) { // добавляем вариант в соответствующий товар $products[$variant->product_id]->variants[] = $variant; } // Выбираем изображения товаров $images = $this->products->get_images(array('product_id'=>$products_ids)); foreach($images as $image) $products[$image->product_id]->images[] = $image; foreach($products as &$product) { if(isset($product->variants[0])) $product->variant = $product->variants[0]; if(isset($product->images[0])) $product->image = $product->images[0]; } } $smarty->assign($params['var'], $products); } }в файле design/тема/html/hits.tpl добавляем {* Новинки *} {get_new_products var=new_products limit=3} {if $new_products} <h1></h1> <!-- Список товаров--> <ul id="catalog"> {foreach $new_products as $product} <!-- Товар--> <li class="product"> <!-- Фото товара --> <div class="image"> <a href="products/{$product->url}"> {if $product->image} <img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/> {/if} </a> </div> <!-- Фото товара (The End) --> <!-- Название товара --> <h3><center><a product_id="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></center></h3></br> <!-- Название товара (The End) --> {if $product->variants|count > 0} <!-- Цена товара --> <form class="cart" method="get" action="cart"> {if $product->variant->price|convert > 0} <div class="price"> <center>{$product->variant->price|convert} <i>{$currency->sign|escape}</i></center> </div> {/if} </form> <!-- Цена товара (The End)--> {/if} </li> <!-- Товар (The End)--> {/foreach} </ul> <!-- Список товаров (The End)--> {/if}Теперь вопрос!При выводе товара в hits.tpl выводит первые указанные 3 товара, которые в админке в каталоге товаров находятся первыми, т.е. вверху каталога.Помогите пожалуйста сделать, чтобы можно было новинку выбрать вручную, в карточке товара установить галочку "Новинка" и данный товар выводился в файле hits.tpl. Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 16 ноября, 2012 Жалоба Поделиться Опубликовано 16 ноября, 2012 Я сделал новинки по типу рекомендуемых, только в место рекомендуемых у меня хиты.Выкладываю для версии симплы 2.0.2Инструкция:1. в базу в таблице s_products добавляем поле: ALTER TABLE `s_products` ADD `new` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `hit` 2. в файле simpla/ProductAdmin.php добавляем: $product->new = $this->request->post('new');3. в файле api/Products.php в данной функции добавляем p.new,: $query = "SELECT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.hit, p.new, p.meta_title, p.meta_keywords, p.meta_description, b.name as brand, b.url as brand_url FROM __products p LEFT JOIN __variants pv ON (stock IS NULL OR stock>0) AND p.id = pv.product_id AND pv.position=(SELECT MIN(position) FROM __variants WHERE (stock>0 OR stock IS NULL) AND product_id=p.id LIMIT 1) $category_id_filter LEFT JOIN __brands b ON p.brand_id = b.id WHERE 1 $product_id_filter $brand_id_filter $features_filter $keyword_filter $hit_filter $discounted_filter $in_stock_filter $visible_filter GROUP BY p.id ORDER BY $order $sql_limit"; так же внизу в данной функции тоже добавим p.new, $query = $this->db->placehold("SELECT DISTINCT p.id, p.url, p.brand_id, p.name, p.annotation, p.body, p.position, p.created as created, p.visible, p.hit, p.new, p.meta_title, p.meta_keywords, p.meta_description FROM __products AS p LEFT JOIN __brands b ON p.brand_id = b.id WHERE $filter GROUP BY p.id LIMIT 1", intval($id));4. в файле simpla/design/html/product.tpl добавим включение и выключение: <div class="checkbox"> <input name=new value="1" type="checkbox" id="new_checkbox" {if $product->new}checked{/if}/> <label for="new_checkbox">NEW</label> </div>5. в файле view/View.php добавляем: $this->design->smarty->registerPlugin("function", "get_new", array($this, 'get_new_plugin'));и ниже public function get_new_plugin($params, &$smarty) { if(!isset($params['visible'])) $params['visible'] = 1; $params['new'] = 1; if(!empty($params['var'])) { foreach($this->products->get_products($params) as $p) $products[$p->id] = $p; if(!empty($products)) { // id выбраных товаров $products_ids = array_keys($products); // Выбираем варианты товаров $variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true)); // Для каждого варианта foreach($variants as &$variant) { // добавляем вариант в соответствующий товар $products[$variant->product_id]->variants[] = $variant; } // Выбираем изображения товаров $images = $this->products->get_images(array('product_id'=>$products_ids)); foreach($images as $image) $products[$image->product_id]->images[] = $image; foreach($products as &$product) { if(isset($product->variants[0])) $product->variant = $product->variants[0]; if(isset($product->images[0])) $product->image = $product->images[0]; } } $smarty->assign($params['var'], $products); } }6. в файле hits.tpl делаем вывод: {get_new var=new limit=3} {if $new} <h1>Новые товары в магазине</h1> <ul id="catalog"> {foreach $new as $product} ......... {/foreach} </ul> {/if} Пользуйтесь с удовольствием! Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 18 января, 2013 Жалоба Поделиться Опубликовано 18 января, 2013 Спасибо. Хорошее решение. А можно такое же, но для версии 2.1. В ней уже нет ни hits.tpl, ни колонки hit в таблице БД. А что нужно поправить, не знаю. Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 18 января, 2013 Жалоба Поделиться Опубликовано 18 января, 2013 в место hits.tpl сейчас main.tpl, а в место hit в таблице на featured Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 18 января, 2013 Жалоба Поделиться Опубликовано 18 января, 2013 Спасибо большое, вроде получилось. А не подскажите, как в списке товаров в админке вывести поле или значок, чтоб видеть, у какого товара стоит галочка "Новый". Думаю это не сложно, но в смарти я профан. Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 18 января, 2013 Жалоба Поделиться Опубликовано 18 января, 2013 Только что заметил, что товар выводится не тот, у которого стоит флажок, а тот, который попадал в новинки (последний добавленный). В каком файле копать? Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 18 января, 2013 Жалоба Поделиться Опубликовано 18 января, 2013 С последним разобрался. В версии 2.1 и думаю выше нужно было править еще и все фильтры в файле api/Products.php. В общем я поиском находил в этом файле слово featured и дублировал, но уже подставлял new.Напрмерif(!empty($filter['featured'])) $is_featured_filter = $this->db->placehold('AND p.featured=?', intval($filter['featured'])); if(!empty($filter['new'])) $new_filter = $this->db->placehold('AND p.new=?', intval($filter['new']));или$is_featured_filter $new_filterВ общем везде, где было featured. Может чего лишнего поправил, но заработало. Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 18 января, 2013 Жалоба Поделиться Опубликовано 18 января, 2013 По первому вопросу, саму галочку (чекбокс) в админке я вывел. Он отмечен у товара, у которого в БД поле New равно единице, а вот сделать, чтобы его можно было менять не заходя на страницу товара, не догоню как. В какой функции это прописать и как, ума не приложу. Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 19 января, 2013 Жалоба Поделиться Опубликовано 19 января, 2013 http://forum.simplacms.ru/discussion/comment/22897#Comment_22897тут я описал, как сделать есть на складе или нет, по аналогии можешь вывести Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 20 января, 2013 Жалоба Поделиться Опубликовано 20 января, 2013 Вы уж простите, что напрягаю, но есть проблемка. Все сделал, как было описано, на всякий случай перепроверил. Все иконки в списке товаров перескочили на строку ниже.Что поправить? Спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 20 января, 2013 Жалоба Поделиться Опубликовано 20 января, 2013 в стилях нужно изменить ширину блока помоему main_list Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 20 января, 2013 Жалоба Поделиться Опубликовано 20 января, 2013 Всё бы ничего, но при изменении ширины этого блока даже на 5 пикс. пропадает правый блок с сортировкой по брендам и т.д.Пошел немного другим путем:В стилях изменил значения 2 и 8 на 1 и 7 кода.icons a{ padding: 7px; margin: 1px;Затем изменил размер самих иконок с 16х16 на 13х13. Чуть мельче стали, но в одну строку. Еще раз огромное спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 20 января, 2013 Жалоба Поделиться Опубликовано 20 января, 2013 Хотя нашел и другой выход: в main_list ширину увеличить на 20 пикс, а в right_menu уменьшить отступ на 20 пикс. Но всё равно спасибо, а то перерыл методом тыка весь CSS, а нужного места так и не нашел. Цитата Ссылка на сообщение Поделиться на другие сайты
qwaszx Опубликовано 22 ноября, 2013 Жалоба Поделиться Опубликовано 22 ноября, 2013 Хотя нашел и другой выход: в main_list ширину увеличить на 20 пикс, а в right_menu уменьшить отступ на 20 пикс. Но всё равно спасибо, а то перерыл методом тыка весь CSS, а нужного места так и не нашел. если ещё актуально, то в файле simpla/design/css/style. css найти строку #list .product_name и менять значение widthменяется ширина строки с наименованием товара. Цитата Ссылка на сообщение Поделиться на другие сайты
larenso Опубликовано 6 марта, 2015 Жалоба Поделиться Опубликовано 6 марта, 2015 На 2.3.3 без проблем встает? Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 2 декабря, 2016 Жалоба Поделиться Опубликовано 2 декабря, 2016 сделал вывод новых товаров под версию 2.0, подскажите пожалуйста, как можно сделать так, чтобы новинки отображались, когда добавляешь новый товар, он автоматически выводился на сайте - что это новинка? А то пока не включишь галочку в админке в карточке товара, что это новинка, то он не отображается на сайте как новинка. Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 25 января, 2017 Жалоба Поделиться Опубликовано 25 января, 2017 подскажите пожалуйста, как можно выводить новинки по дате добавления и если включен чекбокс на странице товара? в файле view/View.php в функции get_new_plugin $params['new'] = 1; добавил if(!isset($params['sort'])) $params['sort'] = 'created'; Как можно объеденить два эти парамметра, чтобы выводило по дате и если включен чекбокс (принудительно новинка) ? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 26 января, 2017 Жалоба Поделиться Опубликовано 26 января, 2017 подскажите пожалуйста, как можно выводить новинки по дате добавления и если включен чекбокс на странице товара? в файле view/View.php в функции get_new_plugin $params['new'] = 1; добавил if(!isset($params['sort'])) $params['sort'] = 'created'; Как можно объеденить два эти парамметра, чтобы выводило по дате и если включен чекбокс (принудительно новинка) ? вам нужно еще в api/Products.php создать фильтр по этому полю. смотрите как сделано для рекомендуемых. в ф-ях get_products и get_count_products Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 26 января, 2017 Жалоба Поделиться Опубликовано 26 января, 2017 да да, спасибо! в файле api/Products.php case 'created': $order = 'p.created DESC'; break; Подскажите пожалуйста по $params в файле view/View.php в функции get_new_plugin, как можно объеденить? Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 27 января, 2017 Жалоба Поделиться Опубликовано 27 января, 2017 ребята, профессионалы - помогите пожалуйста сделать правильный вывод новинок и по дате добавления и если включен чекбокс в товаре. например при фильтре на странице товаров по новым товарам выводились сначала товары, которые отмечены чекбоксом и следом были товары по дате и на главной так же выводились в таком порядке Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 29 января, 2017 Жалоба Поделиться Опубликовано 29 января, 2017 (изменено) в файле view/View.php в функции get_new_plugin после $params['visible'] = 1; прописал if(!isset($params['sort'])) $params['sort'] = 'new'; в файле api/Products.php после case 'name': $order = 'p.name'; break; прописал case 'new': $order = 'p.created DESC, p.new DESC'; break; в файле design/default/html/products.tpl прописал фильтр <a {if $sort=='new'} class="selected"{/if} href="{url sort=new}">новые товары</a> При фильтрации по новым товарам, в первую очередь фильтрует новые по дате, а следом идут отмеченные чекбоксом в товаре.А на главной отображаются новые товары только по дате. Не получается настроить на странице товаров при фильтрации по новым товарам (сначало отмеченные чекбоксом в товаре - новый товар, а следом новые товары по дате добавления) и на главной отображение Изменено 29 января, 2017 пользователем Skynet Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 31 января, 2017 Жалоба Поделиться Опубликовано 31 января, 2017 Люди, откликнитесь. Помогите пожалуйста. Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 6 февраля, 2017 Жалоба Поделиться Опубликовано 6 февраля, 2017 Ребята, у кого есть время, помогите пожалуйста? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.