kazak Опубликовано 19 января, 2018 Жалоба Поделиться Опубликовано 19 января, 2018 Ребят, не могу найти инфу, если обсуждалось, дайте линк. Или подскажите как реализовать. В общем переношу магазин на Симплу, там предыдущие владельцы для создания большого кол-ва посадочных страниц нагенерили более 50к категорий. С трудом импортировал их, теперь новая проблема - не могу открыть каталог в админке. Страницы списка товаров и категорий выпадают в Fatal error. Пока не наведу порядок с категориями, нужно ограничить вывод категорий. Вижу 2 варианта: 1. Идеальный - изначально выводить только корневые категории, после клика на одну из них, выводить ее подкатегории и т.д. 2. Не идеально, но как временный костыль, пойдет - ограничить уровень выводимых категорий. Например, выводить только категории 1-го и 2-го уровня. Может кто-то сталкивался? ХЕЛП ! Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 19 января, 2018 Жалоба Поделиться Опубликовано 19 января, 2018 По непосредственно выводу - идеальный вариант в products.tpl в админке найти строку {categories_tree categories=$c->subcategories} И заменить на такую {if in_array($category->id, $c->children)} {categories_tree categories=$c->subcategories} {/if} Цитата Ссылка на сообщение Поделиться на другие сайты
Плохиш Опубликовано 20 января, 2018 Жалоба Поделиться Опубликовано 20 января, 2018 А еще в таких ситуациях обычно не работает редактирование на странице списка категорий. Если этот список вообще открывается... Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 20 января, 2018 Жалоба Поделиться Опубликовано 20 января, 2018 (изменено) Вижу 2 варианта: 1. Идеальный - изначально выводить только корневые категории, после клика на одну из них, выводить ее подкатегории и т.д. Ну так в чем проблема? Перейдите на "ручное управление", то есть избавьтесь от рекурсии... Изменено 20 января, 2018 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
kazak Опубликовано 20 января, 2018 Автор Жалоба Поделиться Опубликовано 20 января, 2018 По непосредственно выводу - идеальный вариант в products.tpl в админке найти строку {categories_tree categories=$c->subcategories} И заменить на такую {if in_array($category->id, $c->children)} {categories_tree categories=$c->subcategories} {/if} Kosjak76, спасибо! Код рабочий, проверил на втором своем сайте. Только мой вопрос не решился почему-то(( Все равно пишет:Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3 bytes) in /var/www/www-root/data/www/domain.com.ua/api/Database.php on line 143 Пробовал даже совсем удалить код вывода категорий, не помогает. Я не правильно определил причину? Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 20 января, 2018 Жалоба Поделиться Опубликовано 20 января, 2018 (изменено) Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3 bytes) in /var/www/www-root/data/www/domain.com.ua/api/Database.php on line 143 категорий настолько много, что и этого решения не хватило для памяти PHP... Изменено 20 января, 2018 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 20 января, 2018 Жалоба Поделиться Опубликовано 20 января, 2018 (изменено) - Изменено 20 января, 2018 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 20 января, 2018 Жалоба Поделиться Опубликовано 20 января, 2018 (изменено) - Изменено 20 января, 2018 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 20 января, 2018 Жалоба Поделиться Опубликовано 20 января, 2018 (изменено) Короче сделал я тебе решение отчасти: ИТОГ:Теперь по умолчанию выводятся категории верхнего уровняПолучить детей например для категории с id=5 можно, добавив в конец адреса &parent_id=5,то есть адрес будет выглядеть так: site.ru/simpla/index.php?module=CategoriesAdmin&parent_id=25 Благодаря этому возле каждой категории можно вывести ссылку на дочек, куда подставлять ее(категории) idЕсли нужно подгрузить их прямо в каталоге — это к AJAX Если все равно список киллометровый — нужно делать пагинацию (постранично отдавать список категорий) 1. Удаить строки из /simpla/design/html/categories.tpl которые зачеркнуты на скринеhttps://yadi.sk/i/WG_nX43E3Rdmxz 2. В /api/Categories.php добавить новый метод: // Функция возвращает массив категорий public function get_categories_test($filter = array()) { $parent_id = 'WHERE c.parent_id=0'; if(!empty($filter['parent_id'])) { $parent_id = $this->db->placehold('WHERE c.parent_id=?', intval($filter['parent_id'])); } $query = $this->db->placehold("SELECT c.id, c.parent_id, c.name, c.url, c.visible, c.position FROM s_categories c $parent_id ORDER BY c.parent_id, c.position"); $this->db->query($query); return $this->db->results(); } 3. В файле для админки /simpla/CategoriesAdmin.phpзаменяем: $categories = $this->categories->get_categories_tree();на: $categories = $this->categories->get_categories_test($filter);в начале метода fetch() (строка 8-9) пишем: $parent_id = $this->request->get('parent_id'); $filter = array(); $filter['parent_id'] = $parent_id; Изменено 21 января, 2018 пользователем Maksclub Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.