Andrey77 Опубликовано 18 октября, 2014 Жалоба Поделиться Опубликовано 18 октября, 2014 Пробежался по всему коду, но не смог найти где можно изменить стандартное значение 30 на какое-то другое. Подскажите, пожалуйста, где это делается. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 18 октября, 2014 Жалоба Поделиться Опубликовано 18 октября, 2014 Пробежался по всему коду, но не смог найти где можно изменить стандартное значение 30 на какое-то другое. Подскажите, пожалуйста, где это делается.Удосужились бы для начала в админке в настройках глянуть и нашли бы там секцию "Настройки каталога", а в ней пункт "Товаров на странице сайта". Цитата Ссылка на сообщение Поделиться на другие сайты
Andrey77 Опубликовано 18 октября, 2014 Автор Жалоба Поделиться Опубликовано 18 октября, 2014 Удосужились бы для начала в админке в настройках глянуть и нашли бы там секцию "Настройки каталога", а в ней пункт "Товаров на странице сайта". OMG, что-то я совсем заработался. Спасибо! Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 18 октября, 2014 Жалоба Поделиться Опубликовано 18 октября, 2014 Пробежался по всему коду, но не смог найти где можно изменить стандартное значение 30 на какое-то другое. Подскажите, пожалуйста, где это делается.Вы либо не там искали либо не искали вообще.Если попробовать поискать в файле view/ProductsView.php, то можно найти такую строку:$items_per_page = $this->settings->products_num; Которая как не сложно догадаться отвечает за количество выводимых товаров на одну страницу каталога. Цитата Ссылка на сообщение Поделиться на другие сайты
Andrey77 Опубликовано 18 октября, 2014 Автор Жалоба Поделиться Опубликовано 18 октября, 2014 Вы либо не там искали либо не искали вообще.Если попробовать поискать в файле view/ProductsView.php, то можно найти такую строку: $items_per_page = $this->settings->products_num; Которая как не сложно догадаться отвечает за количество выводимых товаров на одну страницу каталога. Я искал цифру 30 Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 23 октября, 2016 Жалоба Поделиться Опубликовано 23 октября, 2016 Подскажите, хочу вывести на странице каталога возможность выбора кол-ва отображаемых товаров. В view/ProductsView.php заменил код на: // Показать все страницы сразу if($this->request->get('page') == 'all') $items_per_page = $products_count; elseif($this->request->get('limit','integer') > 0) $items_per_page = $this->request->get('limit','integer'); $filter['limit'] = $items_per_page; $filter['page'] = $current_page; $pages_num = ceil($products_count/$items_per_page); $this->design->assign('total_pages_num', $pages_num); а потом в products: <div class="limit"> Выводить по <a {if !$smarty.get.limit || $smarty.get.limit == 20} class="selected"{/if} href="{url limit=20 page=null}">20</a> <a {if $smarty.get.limit == 50} class="selected"{/if} href="{url limit=50 page=null}">50</a> <a {if $smarty.get.limit == 100} class="selected"{/if} href="{url limit=100 page=null}">100</a> <a {if $smarty.get.page == 'all'} class="selected"{/if} href="{url limit=null page=all}">все</a> </div> Работает только отображение всех. Остальное нет. Подскажите в чем проблема?? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 23 октября, 2016 Жалоба Поделиться Опубликовано 23 октября, 2016 Скорее всего, потому, что замененный код в view/ProductsView.php выполняется ПОСЛЕ того, как выполнен подсчет // Вычисляем количество страниц $products_count = $this->products->count_products($filter); Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 23 октября, 2016 Жалоба Поделиться Опубликовано 23 октября, 2016 Скорее всего, потому, что замененный код в view/ProductsView.php выполняется ПОСЛЕ того, как выполнен подсчет // Вычисляем количество страниц$products_count = $this->products->count_products($filter);Вроде нетвот весь файл: <?PHP /** * Simpla CMS * * @copyright 2011 Denis Pikusov * @link http://simplacms.ru * @author Denis Pikusov * * Этот класс использует шаблон products.tpl * */ require_once('View.php'); class ProductsView extends View { /** * * Отображение списка товаров * */ function fetch() { // GET-Параметры $category_url = $this->request->get('category', 'string'); $brand_url = $this->request->get('brand', 'string'); $mode = $this->request->get('mode', 'string'); $filter = array(); $filter['visible'] = 1; if ($mode == 'hits') { $filter['featured'] = 1; } if ($mode == 'sale') { $filter['discounted'] = 1; } if ($mode == 'new') { $filter['is_new'] = 1; } // Если задан бренд, выберем его из базы if (!empty($brand_url)) { $brand = $this->brands->get_brand((string)$brand_url); if (empty($brand)) return false; $this->design->assign('brand', $brand); $filter['brand_id'] = $brand->id; } // Выберем текущую категорию if (!empty($category_url)) { $category = $this->categories->get_category((string)$category_url); if (empty($category) || (!$category->visible && empty($_SESSION['admin']))) return false; $this->design->assign('category', $category); $filter['category_id'] = $category->children; } // Если задано ключевое слово $keyword = $this->request->get('keyword'); if (!empty($keyword)) { $this->design->assign('keyword', $keyword); $filter['keyword'] = $keyword; } // Сортировка товаров, сохраняем в сесси, чтобы текущая сортировка оставалась для всего сайта if($sort = $this->request->get('sort', 'string')) $_SESSION['sort'] = $sort; if (!empty($_SESSION['sort'])) $filter['sort'] = $_SESSION['sort']; else $filter['sort'] = 'position'; $this->design->assign('sort', $filter['sort']); // Свойства товаров if(!empty($category)) { $features = array(); $filter['features'] = array(); foreach($this->features->get_features(array('category_id'=>$category->id, 'in_filter'=>1)) as $feature) { $features[$feature->id] = $feature; if(($val = $this->request->get($feature->id))!='') $filter['features'][$feature->id] = $val; } $options_filter['visible'] = 1; $features_ids = array_keys($features); if(!empty($features_ids)) $options_filter['feature_id'] = $features_ids; $options_filter['category_id'] = $category->children; if(isset($filter['features'])) $options_filter['features'] = $filter['features']; if(!empty($brand)) $options_filter['brand_id'] = $brand->id; $options = $this->features->get_options($options_filter); foreach($options as $option) { if(isset($features[$option->feature_id])) $features[$option->feature_id]->options[] = $option; } foreach($features as $i=>&$feature) { if(empty($feature->options)) unset($features[$i]); } $this->design->assign('filter_features', $filter['features']); $this->design->assign('features', $features); } // Постраничная навигация $items_per_page = $this->settings->products_num; // Текущая страница в постраничном выводе $current_page = $this->request->get('page', 'integer'); // Если не задана, то равна 1 $current_page = max(1, $current_page); $this->design->assign('current_page_num', $current_page); // Вычисляем количество страниц $products_count = $this->products->count_products($filter); // Показать все страницы сразу if($this->request->get('page') == 'all') $items_per_page = $products_count; elseif($this->request->get('limit','integer') > 0) $items_per_page = $this->request->get('limit','integer'); $filter['limit'] = $items_per_page; $filter['page'] = $current_page; $pages_num = ceil($products_count/$items_per_page); $this->design->assign('total_pages_num', $pages_num); /////////////////////////////////////////////// // Постраничная навигация END /////////////////////////////////////////////// $discount = 0; if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id']))) $discount = $user->discount; // Товары $products = array(); foreach($this->products->get_products($filter) as $p) $products[$p->id] = $p; // Если искали товар и найден ровно один - перенаправляем на него if(!empty($keyword) && $products_count == 1) header('Location: '.$this->config->root_url.'/products/'.$p->url); if(!empty($products)) { $products_ids = array_keys($products); foreach($products as &$product) { $product->variants = array(); $product->images = array(); $product->properties = array(); } $variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true)); foreach($variants as &$variant) { //$variant->price *= (100-$discount)/100; $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]; } /* $properties = $this->features->get_options(array('product_id'=>$products_ids)); foreach($properties as $property) $products[$property->product_id]->options[] = $property; */ $this->design->assign('products', $products); } // Выбираем бренды, они нужны нам в шаблоне if(!empty($category)) { $brands = $this->brands->get_brands(array('category_id'=>$category->children, 'visible'=>1)); $category->brands = $brands; } // Устанавливаем мета-теги в зависимости от запроса if($this->page) { $this->design->assign('meta_title', $this->page->meta_title); $this->design->assign('meta_keywords', $this->page->meta_keywords); $this->design->assign('meta_description', $this->page->meta_description); } elseif(isset($category)) { $this->design->assign('meta_title', $category->meta_title); $this->design->assign('meta_keywords', $category->meta_keywords); $this->design->assign('meta_description', $category->meta_description); } elseif(isset($brand)) { $this->design->assign('meta_title', $brand->meta_title); $this->design->assign('meta_keywords', $brand->meta_keywords); $this->design->assign('meta_description', $brand->meta_description); } elseif(isset($keyword)) { $this->design->assign('meta_title', $keyword); } $this->body = $this->design->fetch('products.tpl'); return $this->body; } } Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 23 октября, 2016 Жалоба Поделиться Опубликовано 23 октября, 2016 У меня локально Ваш код работает правильно. Например http://localhost/simpla237/catalog/mobilnye-telefony?limit=3 показывает 3 товара Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 23 октября, 2016 Жалоба Поделиться Опубликовано 23 октября, 2016 У меня локально Ваш код работает правильно.Напримерhttp://localhost/simpla237/catalog/mobilnye-telefony?limit=3показывает 3 товараа может это быть связано с тем, что в админке -> в настройках кол-ва товаров в каталоге у меня стоит у меня стоит 12? Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 23 октября, 2016 Жалоба Поделиться Опубликовано 23 октября, 2016 (изменено) версия симплы 2.3.7. У меня не работает(( Изменено 23 октября, 2016 пользователем motya88 Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 23 октября, 2016 Жалоба Поделиться Опубликовано 23 октября, 2016 Если дадите FTP доступ, могу посмотреть... Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 23 октября, 2016 Жалоба Поделиться Опубликовано 23 октября, 2016 Если дадите FTP доступ, могу посмотреть...если бы мог то дал, я пока учусь на денвере Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 26 октября, 2016 Жалоба Поделиться Опубликовано 26 октября, 2016 Подскажите, хочу вывести на странице каталога возможность выбора кол-ва отображаемых товаров. В view/ProductsView.php заменил код на: // Показать все страницы сразу if($this->request->get('page') == 'all') $items_per_page = $products_count; elseif($this->request->get('limit','integer') > 0) $items_per_page = $this->request->get('limit','integer'); $filter['limit'] = $items_per_page; $filter['page'] = $current_page; $pages_num = ceil($products_count/$items_per_page); $this->design->assign('total_pages_num', $pages_num); а потом в products: <div class="limit"> Выводить по <a {if !$smarty.get.limit || $smarty.get.limit == 20} class="selected"{/if} href="{url limit=20 page=null}">20</a> <a {if $smarty.get.limit == 50} class="selected"{/if} href="{url limit=50 page=null}">50</a> <a {if $smarty.get.limit == 100} class="selected"{/if} href="{url limit=100 page=null}">100</a> <a {if $smarty.get.page == 'all'} class="selected"{/if} href="{url limit=null page=all}">все</a> </div> Работает только отображение всех. Остальное нет. Подскажите в чем проблема??Блин, проверил на чистой simpla все работает.Как найти ошибку? Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 26 октября, 2016 Жалоба Поделиться Опубликовано 26 октября, 2016 (изменено) Точнее я понял, проблема в моем файле view/ProductsView.php. А где именно пока не пойму Вот ссылка на файл. Помогите найти ошибку, плииииииииииииз Изменено 26 октября, 2016 пользователем motya88 Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 26 октября, 2016 Жалоба Поделиться Опубликовано 26 октября, 2016 Pls, help Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 27 октября, 2016 Жалоба Поделиться Опубликовано 27 октября, 2016 Точнее я понял, проблема в моем файле view/ProductsView.php. А где именно пока не пойму Вот ссылка на файл. Помогите найти ошибку, плииииииииииииз у вас там нет кода elseif($this->request->get('limit','integer') > 0) $items_per_page = $this->request->get('limit','integer'); Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 27 октября, 2016 Жалоба Поделиться Опубликовано 27 октября, 2016 Мишаня, спасибо. мне стыдно А почему к примеру товаров всего 42.и есть вот этот код: <div class="catalog-item-limit"> <a {if !$smarty.get.limit || $smarty.get.limit == 12} class="selected"{/if} href="{url limit=12 page=null}">12</a> <a {if $smarty.get.limit == 48} class="selected"{/if} href="{url limit=48 page=null}">48</a> <a {if $smarty.get.page == 'all'} class="selected"{/if} href="{url limit=null page=all}">Все</a> </div> Когда нажимаю "все", то класс "selected" у 12 и у "все"? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 27 октября, 2016 Жалоба Поделиться Опубликовано 27 октября, 2016 Мишаня, спасибо. мне стыдно А почему к примеру товаров всего 42.и есть вот этот код: <div class="catalog-item-limit"> <a {if !$smarty.get.limit || $smarty.get.limit == 12} class="selected"{/if} href="{url limit=12 page=null}">12</a> <a {if $smarty.get.limit == 48} class="selected"{/if} href="{url limit=48 page=null}">48</a> <a {if $smarty.get.page == 'all'} class="selected"{/if} href="{url limit=null page=all}">Все</a> </div> Когда нажимаю "все", то класс "selected" у 12 и у "все"? потому что у вас срабатывает условие 1 и условие 3. тоесть у вас фактически нет страницы но выводит все товары. попробуйте так <div class="catalog-item-limit"> <a {if (!$smarty.get.limit && $smarty.get.page != 'all') || $smarty.get.limit == 12} class="selected"{/if} href="{url limit=12 page=null}">12</a> <a {if $smarty.get.limit == 48} class="selected"{/if} href="{url limit=48 page=null}">48</a> <a {if $smarty.get.page == 'all'} class="selected"{/if} href="{url limit=null page=all}">Все</a> </div> Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 27 октября, 2016 Жалоба Поделиться Опубликовано 27 октября, 2016 потому что у вас срабатывает условие 1 и условие 3. тоесть у вас фактически нет страницы но выводит все товары. попробуйте так <div class="catalog-item-limit"> <a {if (!$smarty.get.limit && $smarty.get.page != 'all') || $smarty.get.limit == 12} class="selected"{/if} href="{url limit=12 page=null}">12</a> <a {if $smarty.get.limit == 48} class="selected"{/if} href="{url limit=48 page=null}">48</a> <a {if $smarty.get.page == 'all'} class="selected"{/if} href="{url limit=null page=all}">Все</a> </div> Спасибо!Получилось Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.