Модуль вывода категорий / подкатегорий

5 года 7 мес. назад - 5 года 7 мес. назад #3622 от Dgikar
Люди, подскажите плз (если можно по шагам), как при помощи SEBLOD, сделать вот такой модуль: P. S.
У Joomla, есть родной модуль, называется "Категории" (этот модуль отображает список категорий, входящих в одну общую родительскую категорию), но, для того, чтобы его использовать, нужно для каждой категории / подкатегории, наплодить кучу модулей, а хотелось бы, создать один модуль, в который автоматом подгружались категории / подкатегории...

P. P. S.
Модуль, может быть не обязательно такой как на картинке, главное, функционал чтобы выполнял:
  • отображал подкатегории категории в которой нахожусь, и, отображал количество материалов в данной категории / подкатегории

Заранее благодарю за ответы
Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 7 мес. назад #3626 от Wedal
Dgikar, вообще, есть 2 пути, по которым можно пойти решать эту задачку:

1) Без использования Seblod.
Создаем для модуля отдельное меню. Для каждой категории материалов создаем пункт меню с таким же уровнем вложенности, как и у категории. Далее подключаем скрипт, который оформит все в нужном виде.
Этот способ классический, но мне он не нравится хотя бы потому, что требуется создавать каждый пункт меню вручную. Правда при этом мы получаем огромную гибкость, поскольку можем оформить каждый пункт меню так, как нам хочется. Например, сделать на одном пункте ссылку на блог категории, а на другом - на список материалов категории.

2) С использованием Seblod.
Создаем тип поиска которым получаем:
- список категорий
- количество материалов в каждой категории
- уровень вложенности категории.
Далее создаем вручную шаблон Seblod, который будет представлять полученные данные в том виде, который вы привели. Далее создаем модуль с результатами этого типа поиска.
Этот способ сложнее в реализации, поскольку нужно знать шаблоны SEBLOD и немного PHP, но он позволяет автоматически выводить меню именно той структуры, какую мы видим в категориях. А-ля меню Virtuemart.

Да, вот еще что. Хочу предостеречь от цифр с количеством материалов категорий. Как получить это количество? В базе в готовом виде его нет. Значит только сосчитать. Сосчитать легко - 1 SQL-запрос на категорию. НО! Если категорий будет много, запросов также будет много.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 7 мес. назад - 5 года 7 мес. назад #3630 от Dgikar

Wedal пишет: Dgikar, вообще, есть 2 пути, по которым можно пойти решать эту задачку: ...

Меня, интересует способ с SEBLOD.

Что у меня уже есть на сайте:
  1. Категории / подкатегории
  2. Пункты меню, которые уже ссылаются на эти категории / подкатегории
  3. Около 40-50-ти модулей "Категории" Joomla
Для чего это:
  • Когда юзер, попадает на какую-то страничку (читай входит в такую-то категорию), над товарами / компаниями этой категории, должен отобразиться список всех подкатегорий, той категории, в которой сейчас находится юзер
По-сути, первый вариант (Без использования SEBLOD) предложенный Вами Wedal у меня уже реализован, но, стандартными методами Joomla - без подключения каких-либо скриптов и пр. Поэтому, мне, он тоже не нравится, т. к., приходится плодить родной модуль "Категории" Joomla, а это не есть хорошо...

Второй вариант - то, что нужно!
Но вот как его реализовать, при помощи каких полей, что в них прописать, как сделать уровень вложенности категории и пр. - хоть убей, но, не знаю...

Wedal пишет: ... но он позволяет автоматически выводить меню именно той структуры, какую мы видим в категориях. А-ля меню Virtuemart ...

По-сути, мне не важно как будет отображаться сами категории... Именно так, как показано на картинке из моего первого поста (т. е. с отступами слева, и картинками плюсиков), или тупо в "столбик" (но не через запятую в одну или несколько строк - одна категория / подкатегория - одна строка) - не суть важно. Важно, чтобы у меня в категории, были отображены подкатегории этой категории. В данный момент, у меня реализован вывод подкатегорий так (это родной модуль "Категории" Joomla немного модифицированный для вывода циферок):

Wedal пишет: ... Да, вот еще что. Хочу предостеречь от цифр ... Если категорий будет много, запросов также будет много.

А как же тогда на большинстве сайтов это решается?
Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 7 мес. назад #3633 от Wedal
Dgikar,

Когда юзер, попадает на какую-то страничку (читай входит в такую-то категорию), над товарами / компаниями этой категории, должен отобразиться список всех подкатегорий, той категории, в которой сейчас находится юзер

Важно, чтобы у меня в категории, были отображены подкатегории этой категории.

а разве Joomla так не делает? Вроде умела.

А как же тогда на большинстве сайтов это решается?

А никак. Мирятся с лишними запросами(более мощный сервер и.т.п), а многие просто не знают того, что подобное имеет место быть.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 7 мес. назад #3635 от Dgikar

Wedal пишет: Dgikar,

Когда юзер, попадает на какую-то страничку (читай входит в такую-то категорию), над товарами / компаниями этой категории, должен отобразиться список всех подкатегорий, той категории, в которой сейчас находится юзер

Важно, чтобы у меня в категории, были отображены подкатегории этой категории.

а разве Joomla так не делает? Вроде умела.


Ну, кроме как сделать вывод категорий / подкатегорий через Joomla модуль "Категории"... Иного способа, я не знаю... А если использовать модуль "Категории", и учитывать, что у меня будет порядка 40 000 категорий (это только на русском, а еще 7-мь языков), то, боюсь подсчитывать, сколько Joomla модулей "Категории" нужно будет сделать для каждой категории, у которой есть подкатегории...

Поэтому, думаю, что правильное решение будет использовать SEBLOD, для создания модуля, который будет выводить категории / подкатегории... Вопрос, только в том, как его делать? Какие поля нужны, что в них прописывать... Этого я не знаю... А Вы Wedal, знаете? Может наставить на путь истинный? Пожалуйста...

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 6 мес. назад #3637 от Wedal
Dgikar, ну вот это разве не оно?

Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 6 мес. назад - 5 года 6 мес. назад #3640 от Dgikar

Wedal пишет: Dgikar, ну вот это разве не оно? ...

Не-а, не оно... :(

Не оно, потому, что:
  1. снова таки, нужно будет плодить кучу модулей, только уже не модулей "Категории", а модулей "Меню"
  2. использовать меню, для вывода структуры категорий - не получится, т. к., при входе в паррент категорию, меню не покажет чилдрен категории в чистом виде, а покажет все вместе: и паррент и чилдрен... Можно конечно, в модуле "Меню" погемороится, и настроить уровень вывода категорий (пунктов меню), но, это куда геморнее, нежели использовать родной модуль Joomla "Категории"
Одним словом, или гемороится и плодить кучу модулей (что "Меню" (более проблематичный способ), что "Категории" - более практичный способ, нежели "Меню"), но, и тот, и тот способы - не подходят, т. к., чем больше модулей, тем хуже работает Joomla...

У меня, сейчас, уже около 40-50 модулей "Категории", так на то, чтобы открыть любой модуль для создания/редактирования/сохранения, у меня уходит до 5-7-и минут на это действие + 1-2-е минуты, на "ковыряние" в самом модуле. В итоге, 7-9-ть минут, на один модуль - это по-моему не позволительная "роскошь", а с увеличением количества модулей (у меня, планируется около 360 000 категорий на 8-и языках), представьте, сколько времени будет открываться модуль для редактирования... как минимум сутки...

Решение:
  • Сделать модуль на SEBLOD, который будет автоматом подгружать в себя, и выводить на страницу чилдрен категории, при входе юзера в парент категорию

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 6 мес. назад #3643 от Wedal
Dgikar, я никак не пойму зачем такие сложности.
1) Создаем N категорий.
2) Создаем N пунктов меню типа "блог категории" и связываем каждый из них с соответствующей категорией. Уровни вложенности категорий и пунктов меню должны совпадать.
3) В глобальных настройках материалов указываем все настройки для блога категории.

Всё. Не нужно никаких модулей. Макет блога категории показывает на одной странице список подкатегорий выбранной категории, а ниже список материалов выбранной категории в виде блога. Потребуется только один модуль меню, который будет выводить все пункты меню всех уровней вложенности, а далее подключаем скрипт для красивого отображения подкатегорий и всё.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 6 мес. назад #3648 от Dgikar

Wedal пишет: ... Не нужно никаких модулей. Макет блога категории ...

Блин..... Точно!!! ....

Я изначально пошел не правильно... Нужно было по Вашему пути сделать, а я начал прикручивать модули "Категории"...

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 6 мес. назад #3649 от rydberg
Расскажу о своем опыте решения подобной задачи.
Реализовал по сути тот же джумловский модуль "категории" с помощью Seblod. Так оказалось, что Seblod для вывода подобного модуля делает тучу SQL-запросов, например, на одной из страниц для вывода 18 таких модулей Seblod делал ~400 запросов к базе данных, а всего-то нужно было вывести по 10 ссылок на подкатегории каждой из 18 категорий.
Пришлось переделать подобные модули как mod_php и написать php код для вывода ссылок на подкатегории. Это сократило время генерации страницы вдвое.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 6 мес. назад #3657 от Dgikar

rydberg пишет: Расскажу о своем опыте решения подобной задачи... Пришлось переделать подобные модули как mod_php и написать php код для вывода ссылок на подкатегории...

Сорри за нескромность... А Вы можете поделиться решением?

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 6 мес. назад #3663 от rydberg
Для вывода php кода использовал модуль "Flexi Custom Code", Joomla 2.5.
<?php
$menuItemid = 114; 
 
$sql = "SELECT id, title, path"
." FROM #__menu"
." WHERE id=$menuItemid"
." UNION"
." SELECT id, title, path"
." FROM #__menu"
." WHERE parent_id=$menuItemid";
 
$db = JFactory::getDBO();
$db->setQuery($sql);
$res = $db->loadAssocList();
 
reset($res);
$row = $res[0];
echo '<p class="box_label"><a href="'.$row["path"].'">'.$row["title"].'</a></p>';
echo '<ul class="list_subcategories">';
for ($i=1; $i < count($res); $i++) {
	$row = next($res);
	echo '<li><a href="'.$row["path"].'">'.$row["title"].'</a></li>';
}
echo '</ul>';
?>
Модуль выведет родительский пункт меню и все подменю 1-го уровня вложенности, если нужно глубже - то нужно немного модифицировать код.
Модуль не выводит количество материалов в каждой подкатегории.

$menuItemid мне было легче задать вручную, хотя можно получать текущий Itemid меню
$menuItemid=JRequest::getInt('Itemid');
но тут есть свои нюансы.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 4 мес. назад - 5 года 4 мес. назад #3938 от Amazing

Wedal пишет: ...
Да, вот еще что. Хочу предостеречь от цифр с количеством материалов категорий. Как получить это количество? В базе в готовом виде его нет. Значит только сосчитать. Сосчитать легко - 1 SQL-запрос на категорию. НО! Если категорий будет много, запросов также будет много.


А сложно ли добавить в БД таблицу, в которой будет храниться информация о кол-ве материалов в каждой категории. И таблица эта обновлялась бы автоматически, при добавлении каждого нового материала?

P.S. Возможно оффтоп, но думаю тема актуальная

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

5 года 4 мес. назад #3956 от Wedal
Amazing, да, сложно. Хаки, хаки, хаки.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 6 мес. назад - 4 года 6 мес. назад #5698 от Евгений

Wedal пишет: 2) С использованием Seblod.
Создаем тип поиска которым получаем:
- список категорий
- количество материалов в каждой категории
- уровень вложенности категории.

Как сделать тип поиска, которым получаем список категорий - вполне понятно.
А вот как в том же типе поиска получить количество материалов в каждой категории и уровень вложенности категорий - для меня полная загадка. Нельзя ли объяснить подробнее?
Ну, вернее, понятно, что через оверрайд позиции и запрос к БД это дело извлекается без проблем, просто я подумал, может быть, у Вас есть более изящное решение?

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.


Вверх