Перейти к содержанию
Официальный форум поддержки Simpla

Ограничить вывод категорий в админке


Рекомендуемые сообщения

Ребят, не могу найти инфу, если обсуждалось, дайте линк. Или подскажите как реализовать.

 

В общем переношу магазин на Симплу, там предыдущие владельцы для создания большого кол-ва посадочных страниц нагенерили более 50к категорий.

 

С трудом импортировал их, теперь новая проблема - не могу открыть каталог в админке. Страницы списка товаров и категорий выпадают в Fatal error.

 

Пока не наведу порядок с категориями, нужно ограничить вывод категорий. Вижу 2 варианта:

 

1. Идеальный - изначально выводить только корневые категории, после клика на одну из них, выводить ее подкатегории и т.д.

 

2. Не идеально, но как временный костыль, пойдет -  ограничить уровень выводимых категорий. Например, 

выводить только категории 1-го и 2-го уровня.

 

Может кто-то сталкивался? ХЕЛП !

Ссылка на сообщение
Поделиться на другие сайты

По непосредственно выводу - идеальный вариант в products.tpl в админке найти строку

{categories_tree categories=$c->subcategories}

И заменить на такую

{if in_array($category->id, $c->children)}
{categories_tree categories=$c->subcategories}
{/if}

Ссылка на сообщение
Поделиться на другие сайты

А еще в таких ситуациях обычно не работает редактирование на странице списка категорий. Если этот список  вообще открывается...

Ссылка на сообщение
Поделиться на другие сайты

Вижу 2 варианта:

 

1. Идеальный - изначально выводить только корневые категории, после клика на одну из них, выводить ее подкатегории и т.д.

 

Ну так в чем проблема? Перейдите на "ручное управление", то есть избавьтесь от рекурсии... 

Изменено пользователем Maksclub
Ссылка на сообщение
Поделиться на другие сайты

 

По непосредственно выводу - идеальный вариант в 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

 

Пробовал даже совсем удалить код вывода категорий, не помогает. Я не правильно определил причину?

Ссылка на сообщение
Поделиться на другие сайты

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...

Изменено пользователем Maksclub
Ссылка на сообщение
Поделиться на другие сайты

Короче сделал я тебе решение отчасти:

 

ИТОГ:

Теперь по умолчанию выводятся категории верхнего уровня

Получить детей например для категории с 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;

 

 

Изменено пользователем Maksclub
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...