Noxter Опубликовано 22 мая, 2014 Жалоба Поделиться Опубликовано 22 мая, 2014 Пагинация для рекомендуемых товаров на главной.Чтобы разбить товары на страницы откройте файл view/view.php и замените функцию get_featured_products_plugin на мою: public function get_featured_products_plugin($params, &$smarty) { if(!isset($params['visible'])) $params['visible'] = 1; $params['featured'] = 1; if(!empty($params['var'])) { // Постраничная навигация $items_per_page = $this->settings->products_num; // Текущая страница в постраничном выводе $current_page = $this->request->get('page', 'int'); // Если не задана, то равна 1 $current_page = max(1, $current_page); $this->design->assign('current_page_num', $current_page); // Вычисляем количество страниц $products_count = $this->products->count_products($params); // Показать все страницы сразу if($this->request->get('page') == 'all') $items_per_page = $products_count; $pages_num = ceil($products_count/$items_per_page); $this->design->assign('total_pages_num', $pages_num); $this->design->assign('total_products_num', $products_count); $params['page'] = $current_page; $params['limit'] = $items_per_page; 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/default/html/main.tpl и после:{if $featured_products} добавьте:{include file="pagination.tpl"} $this->settings->products_num отвечает за количество товаров на страницу которое берется с настроек сайта, вместо этого можете вписать свое число.Все готово! Цитата Ссылка на сообщение Поделиться на другие сайты
Savelife Опубликовано 22 мая, 2014 Жалоба Поделиться Опубликовано 22 мая, 2014 А как изменить строку $items_per_page = $this->settings->products_num; чтобы выводилось по 20 товаров на странице? Цитата Ссылка на сообщение Поделиться на другие сайты
Blashemy Опубликовано 22 мая, 2014 Жалоба Поделиться Опубликовано 22 мая, 2014 А как изменить строку $items_per_page = $this->settings->products_num; чтобы выводилось по 20 товаров на странице?$items_per_page = 20; Цитата Ссылка на сообщение Поделиться на другие сайты
likebeats Опубликовано 16 октября, 2014 Жалоба Поделиться Опубликовано 16 октября, 2014 А как тоже самое сделать для новых продуктов? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 16 октября, 2014 Жалоба Поделиться Опубликовано 16 октября, 2014 А как тоже самое сделать для новых продуктов?Пагинацию одновременно и для новых и для рекомендуемых? И так уже при такой доработке главная страница перестает быть главной, а тут еще две пагинации по двум спискам... Технически оно, конечно, реализовать и не особо сложно, но будет ли это хорошо, поймет ли пользователь? А есть еще на главной стандартно третий список, в нем тоже пагинацию устроить можно... Цитата Ссылка на сообщение Поделиться на другие сайты
likebeats Опубликовано 16 октября, 2014 Жалоба Поделиться Опубликовано 16 октября, 2014 Пагинацию одновременно и для новых и для рекомендуемых? И так уже при такой доработке главная страница перестает быть главной, а тут еще две пагинации по двум спискам... Технически оно, конечно, реализовать и не особо сложно, но будет ли это хорошо, поймет ли пользователь? А есть еще на главной стандартно третий список, в нем тоже пагинацию устроить можно...Нет, меня интересуют только новые Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 16 октября, 2014 Жалоба Поделиться Опубликовано 16 октября, 2014 Тогда, видимо, по аналогии... Цитата Ссылка на сообщение Поделиться на другие сайты
3loY Опубликовано 23 декабря, 2014 Жалоба Поделиться Опубликовано 23 декабря, 2014 ... Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 12 января, 2015 Жалоба Поделиться Опубликовано 12 января, 2015 Разве не лучше сделать табами или слайдером, зачем пагинацию? В каких случаях это выгодно и лучше? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 13 сентября, 2015 Автор Жалоба Поделиться Опубликовано 13 сентября, 2015 Разве не лучше сделать табами или слайдером, зачем пагинацию? В каких случаях это выгодно и лучше?Затем что некоторым заказчикам кровь с носа нужна именно пагинация а не слайдер. Дубль главной конечно же не лучшее решение, вернее вообще лучше так не делать, но ты попробуй это объясни заказчику. Цитата Ссылка на сообщение Поделиться на другие сайты
Боло Опубликовано 19 февраля, 2017 Жалоба Поделиться Опубликовано 19 февраля, 2017 Так и не ответили тут, как такое сделать для "Новых товаров" ? У меня на главной странице лишь Новые товары и хотелось бы их пагиновать Цитата Ссылка на сообщение Поделиться на другие сайты
Smartycms Опубликовано 19 февраля, 2017 Жалоба Поделиться Опубликовано 19 февраля, 2017 (изменено) Так и не ответили тут, как такое сделать для "Новых товаров" ? У меня на главной странице лишь Новые товары и хотелось бы их пагиновать Сделать по аналогии только для get_new_products_plugin, заменив get_featured на get_new а так же if(!isset($params['visible'])) $params['visible'] = 1; $params['featured'] = 1; if(!empty($params['var'])) на if(!isset($params['visible'])) $params['visible'] = 1; if(!isset($params['sort'])) $params['sort'] = 'created'; if(!empty($params['var'])) Или-же просто в коде плагина перед if(!empty($products)) вставить // Постраничная навигация $items_per_page = $this->settings->products_num; // Текущая страница в постраничном выводе $current_page = $this->request->get('page', 'int'); // Если не задана, то равна 1 $current_page = max(1, $current_page); $this->design->assign('current_page_num', $current_page); // Вычисляем количество страниц $products_count = $this->products->count_products($params); // Показать все страницы сразу if($this->request->get('page') == 'all') $items_per_page = $products_count; $pages_num = ceil($products_count/$items_per_page); $this->design->assign('total_pages_num', $pages_num); $this->design->assign('total_products_num', $products_count); $params['page'] = $current_page; $params['limit'] = $items_per_page; foreach($this->products->get_products($params) as $p) $products[$p->id] = $p; далее в шаблоне по инструкции выше. Изменено 19 февраля, 2017 пользователем smartycms Цитата Ссылка на сообщение Поделиться на другие сайты
Боло Опубликовано 20 февраля, 2017 Жалоба Поделиться Опубликовано 20 февраля, 2017 (изменено) Не получается. По инструкции из первого поста, меняю функцию get_featured_products_plugin на новый, далее по совету smartycms, меняю название измененного плагина из get_featured_products_plugin на get_new_products_plugin.Верно пока делаю?Вообще, в исходной странице View.php после плагина get_featured_products_plugin идет плагин get_new_products_plugin так? Если название нашего измененного плагина get_featured... изменю на get_new... то получается подряд идут 2 плага get_new.... Это нормально?Думаю нет, может это я не так понял т.к. у меня после изменения названия на get_new выходит ошибка на странице Fatal error: Cannot redeclare View::get_new_products_plugin() in Z:\home\test1.ru\subdomain\simpla\view\View.php on line 232-------------------А если я удалю второй плагин get_new.. то идет такая ошибкаFatal error: Uncaught --> Smarty: Plugin "get_featured_products" not callable <-- thrown in Z:\home\test1.ru\subdomain\simpla\Smarty\libs\sysplugins\smarty_internal_templatebase.php on line 431 Изменено 20 февраля, 2017 пользователем Боло Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.