Andrey77 Posted October 18, 2014 Report Share Posted October 18, 2014 Пробежался по всему коду, но не смог найти где можно изменить стандартное значение 30 на какое-то другое. Подскажите, пожалуйста, где это делается. Quote Link to post Share on other sites
Noxter Posted October 18, 2014 Report Share Posted October 18, 2014 Пробежался по всему коду, но не смог найти где можно изменить стандартное значение 30 на какое-то другое. Подскажите, пожалуйста, где это делается.Удосужились бы для начала в админке в настройках глянуть и нашли бы там секцию "Настройки каталога", а в ней пункт "Товаров на странице сайта". Quote Link to post Share on other sites
Andrey77 Posted October 18, 2014 Author Report Share Posted October 18, 2014 Удосужились бы для начала в админке в настройках глянуть и нашли бы там секцию "Настройки каталога", а в ней пункт "Товаров на странице сайта". OMG, что-то я совсем заработался. Спасибо! Quote Link to post Share on other sites
Noxter Posted October 18, 2014 Report Share Posted October 18, 2014 Пробежался по всему коду, но не смог найти где можно изменить стандартное значение 30 на какое-то другое. Подскажите, пожалуйста, где это делается.Вы либо не там искали либо не искали вообще.Если попробовать поискать в файле view/ProductsView.php, то можно найти такую строку:$items_per_page = $this->settings->products_num; Которая как не сложно догадаться отвечает за количество выводимых товаров на одну страницу каталога. Quote Link to post Share on other sites
Andrey77 Posted October 18, 2014 Author Report Share Posted October 18, 2014 Вы либо не там искали либо не искали вообще.Если попробовать поискать в файле view/ProductsView.php, то можно найти такую строку: $items_per_page = $this->settings->products_num; Которая как не сложно догадаться отвечает за количество выводимых товаров на одну страницу каталога. Я искал цифру 30 Quote Link to post Share on other sites
motya88 Posted October 23, 2016 Report Share Posted October 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> Работает только отображение всех. Остальное нет. Подскажите в чем проблема?? Quote Link to post Share on other sites
Kors Posted October 23, 2016 Report Share Posted October 23, 2016 Скорее всего, потому, что замененный код в view/ProductsView.php выполняется ПОСЛЕ того, как выполнен подсчет // Вычисляем количество страниц $products_count = $this->products->count_products($filter); Quote Link to post Share on other sites
motya88 Posted October 23, 2016 Report Share Posted October 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; } } Quote Link to post Share on other sites
Kors Posted October 23, 2016 Report Share Posted October 23, 2016 У меня локально Ваш код работает правильно. Например http://localhost/simpla237/catalog/mobilnye-telefony?limit=3 показывает 3 товара Quote Link to post Share on other sites
motya88 Posted October 23, 2016 Report Share Posted October 23, 2016 У меня локально Ваш код работает правильно.Напримерhttp://localhost/simpla237/catalog/mobilnye-telefony?limit=3показывает 3 товараа может это быть связано с тем, что в админке -> в настройках кол-ва товаров в каталоге у меня стоит у меня стоит 12? Quote Link to post Share on other sites
motya88 Posted October 23, 2016 Report Share Posted October 23, 2016 (edited) версия симплы 2.3.7. У меня не работает(( Edited October 23, 2016 by motya88 Quote Link to post Share on other sites
Kors Posted October 23, 2016 Report Share Posted October 23, 2016 Если дадите FTP доступ, могу посмотреть... Quote Link to post Share on other sites
motya88 Posted October 23, 2016 Report Share Posted October 23, 2016 Если дадите FTP доступ, могу посмотреть...если бы мог то дал, я пока учусь на денвере Quote Link to post Share on other sites
motya88 Posted October 26, 2016 Report Share Posted October 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 все работает.Как найти ошибку? Quote Link to post Share on other sites
motya88 Posted October 26, 2016 Report Share Posted October 26, 2016 (edited) Точнее я понял, проблема в моем файле view/ProductsView.php. А где именно пока не пойму Вот ссылка на файл. Помогите найти ошибку, плииииииииииииз Edited October 26, 2016 by motya88 Quote Link to post Share on other sites
motya88 Posted October 26, 2016 Report Share Posted October 26, 2016 Pls, help Quote Link to post Share on other sites
mishanya Posted October 27, 2016 Report Share Posted October 27, 2016 Точнее я понял, проблема в моем файле view/ProductsView.php. А где именно пока не пойму Вот ссылка на файл. Помогите найти ошибку, плииииииииииииз у вас там нет кода elseif($this->request->get('limit','integer') > 0) $items_per_page = $this->request->get('limit','integer'); Quote Link to post Share on other sites
motya88 Posted October 27, 2016 Report Share Posted October 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 и у "все"? Quote Link to post Share on other sites
mishanya Posted October 27, 2016 Report Share Posted October 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> Quote Link to post Share on other sites
motya88 Posted October 27, 2016 Report Share Posted October 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> Спасибо!Получилось 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.