Форум русской поддержки Joomla!® CMS
17.08.2017, 03:46:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Основной курс по Joomla
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Вывод дочерних категорий в меню

 (Прочитано 1653 раз)
0 Пользователей и 1 Гость смотрят эту тему.
balancer
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« : 18.02.2014, 14:45:13 »

Всем доброго дня,

на сайте имеется глобальная родительская категория первого уровня, в ней лежат дочерние категории с брендами и прочими категориями. При выводе модуля меню отображается так Глобальная категория > выпадающий список с дочерними категориями. Вопрос, нельзя ли сразу вывести все дочерние категории, в обход родительской?

более наглядно, можно ли сделать так, чтобы подкатегории BenQ и DTECH были на месте Компьютерных комплектующих?
« Последнее редактирование: 18.02.2014, 15:12:18 от balancer » Записан
skyrec
Давно я тут
****

Репутация: +10/-0
Offline Offline

Сообщений: 388


Люблю я детей !!!


« Ответ #1 : 18.02.2014, 15:15:44 »

Я думаю можно, надо поковырять условия вывода категорий в шаблоне модуля.
Записан
balancer
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #2 : 18.02.2014, 15:28:57 »

Установлен модель JSE Megamenu, шаблон выглядит так
Код:
<?php
/**
 * @version $Id$
 * @author Joomseller
 * @package Joomla.Site
 * @subpackage mod_jse_jp_megamenu
 * @copyright Copyright (C) 2008 - 2013 Joomseller. All rights reserved.
 * @license License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php
 */

// no direct access
defined('_JEXEC') or die('Restricted access');
print_r($menu);
?>

<div id="jsejp_mm_<?php echo $module->id ?>" class="jsejp-megamenu <?php echo $menuStyle?> ">
<button class="button-bar" type="button">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="javascript:void(0)"><?php echo JText::_('JSE_jp_MEGAMENU_MENU')?></a>
<?php
if (!file_exists(JPATH_SITE.'/components/com_jshopping')){
echo  '<div style="float: left;color:red">This module can not work without the JoomShopping Component</div>';
}else{
$megamenu = new JPMegamenu();
list($menu,$order) = $megamenu->render($params,true);
echo $menu;
}

?>
</div>

попробую сделать как вы посоветовали. спасибо.

Может кто-нибудь еще с этим сталкивался?
Записан
lesh1j
Давно я тут
****

Репутация: +30/-0
Offline Offline

Пол: Мужской
Сообщений: 231


« Ответ #3 : 18.02.2014, 20:46:02 »

Вот простейший модуль, который выведет только дочерние категории, если нужны дополнительные функции, пиши, доделаю
не нашел, как прикрепить файл поэтому, выложу код, там всего 5 файлов
Структура:
language/ru-RU/ru-RU.mod_parentcat.ini
tmpl/default.php
mod_parentcat.php
mod_parentcat.xml
helper.php

файл language/ru-RU/ru-RU.mod_parentcat.ini
Код:
MOD_PARENTCAT="дочерние категории joomshoping"
MOD_PARENTCAT_XML_DESCRIPTION="Описание модуля дочерние категории joomshoping"

файл tmpl/default.php
Код:
<?php
// No direct access.
defined('_JEXEC') or die('(@)|(@)');
?>
<ul class="pc_list">
<?php
foreach ($categories as $category) {
$link = SEFLink('index.php?option=com_jshopping&controller=category&task=view&category_id='.$category->id, 1);
echo '<li class="pc_item_list"><a href="'.$link.'">'.$category->name.'</a></li>';
}
?>
</ul>

файл mod_parentcat.php
Код:
<?php
// No direct access.
defined('_JEXEC') or die('(@)|(@)');

require_once dirname(__FILE__).'/helper.php';
$categories = modParentcatHelper::getParentcategory($params);

require JModuleHelper::getLayoutPath('mod_parentcat', $params->get('layout', 'default'));

файл mod_parentcat.xml
Код:
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" method="upgrade">
<name>mod_parentcat</name>
<creationDate>February 2014</creationDate>
<author>BelNet</author>
<authorEmail>info@belnet.by</authorEmail>
<authorUrl>http://www.belnet.by</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
        <version>1.0.0</version>
        <description>MOD_PARENTCAT_XML_DESCRIPTION</description>
        <files>
                <filename module="mod_parentcat">mod_parentcat.php</filename>
                <filename>mod_parentcat.xml</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<folder>tmpl</folder>
        </files>
<languages folder="language">
<language tag="ru-RU">ru-RU/ru-RU.mod_parentcat.ini</language>
</languages>
</extension>

файл helper.php
Код:
<?php
// No direct access.
defined('_JEXEC') or die('(@)|(@)');

class modParentcatHelper
{
public static function getParentcategory(&$params)
{
$lang = JSFactory::getLang();

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('`category_id` AS id, `'.$lang->get('name').'` AS name');
$query->from('#__jshopping_categories');
$query->where('category_parent_id > 0');
$query->where('category_publish = 1');
$query->order('ordering DESC');
$db->setQuery($query);

$categories = $db->loadObjectList();

return $categories;
}

}

всё это в архив и уставить как обычный модуль, ну и в каждую папку пустой index.html для защиты от доступа к списку файлов
Записан
balancer
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #4 : 19.02.2014, 09:34:48 »

lesh1j,
спасибо большое, все работает.

Извиняюсь за наглость, если у Вас найдется лишний, не могли бы вы подсказать как реализовать эту чтобы раскрытыми были только категории у которых category_parent_id=0, и применительно к модулю, используемому мной, то есть сейчас выглядит это дело вот так

а можно бы было чтобы остались только 2 категории, Dtech и BenQ, а их дочерние категории из них вываливались. Используемый модуль категории - http://rghost.ru/download/52521913/069bf1191bab564587b3d71c2dbe1090fdce959c/megamenu_1.0.0_JoomShopping_j25j3x.zip

если слишком нагло, то может есть какое-то другое меню, с такими функциями.

В любом случае, большое спасибо
Записан
zemelea
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 48


« Ответ #5 : 27.09.2014, 14:45:20 »

Вот простейший модуль......
Спасибо за решение! У меня задача немного другая. Нужно получить список всех дочерних подкатегорий текущей категории. Немного подправил helper.php
Код:
<?php
// No direct access.
defined('_JEXEC') or die('(@)|(@)');

class modParentcatHelper
{
public static function getParentcategory(&$params)
{
 
                $cid = JRequest::getInt( 'category_id' ); //++
                          
$lang = JSFactory::getLang();

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('`category_id` AS id, `'.$lang->get('name').'` AS name');
$query->from('#__jshopping_categories');
$query->where('category_parent_id > 0');
$query->where('category_publish = 1');
                $query->where('category_parent_id ='.$cid); //++
$query->order('ordering DESC');
$db->setQuery($query);

$categories = $db->loadObjectList();

return $categories;
}

}

Но вот никак не могу понять как удобнее получить не только список подкатегорий на 1 уровень ниже родителя, а все подкатегории. Посмотрел БД, там только 2 колонки за это отвечают: category_id и category_parent_id. Неужели всех детей можно получить только циклом?
Записан
dmitry_stas
Профи
********

Репутация: +935/-6
Offline Offline

Сообщений: 9954



« Ответ #6 : 27.09.2014, 15:20:18 »

если быть точнее, то не циклом, а с помощью рекурсии. а почему "неужели только"? что смущает?
Записан
zemelea
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 48


« Ответ #7 : 27.09.2014, 16:07:32 »

Смущает то, что я не знаю как это реализовать, чтобы не делать 50 запросов в бд)
Записан
dmitry_stas
Профи
********

Репутация: +935/-6
Offline Offline

Сообщений: 9954



« Ответ #8 : 27.09.2014, 18:41:07 »

так сделайте 1 запрос на все категории вместе, а проход уже сделайте на php Azn посмотрите, как строится дерево категорий в админке в списке товаров (селект выбора категорий)
Записан
katjuha6
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152



« Ответ #9 : 28.02.2017, 21:48:47 »

здравствуйте!
я понимаю, что тема уже давно затихла, то вдруг мне повезет =)
встала такая же задача
Цитировать
Спасибо за решение! У меня задача немного другая. Нужно получить список всех дочерних подкатегорий текущей категории. Немного подправил helper.php
скажите, пожалуйста, а можно ли добавить в этот модуль вывод еще и изображений категории?

заранее спасибо за ответ!
Записан
dmitry_stas
Профи
********

Репутация: +935/-6
Offline Offline

Сообщений: 9954



« Ответ #10 : 28.02.2017, 21:52:03 »

category_image добавьте в select
Записан
katjuha6
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 152



« Ответ #11 : 28.02.2017, 22:02:17 »

в helper под строку
Код:
$query->select('`category_id` AS id, `'.$lang->get('name').'` AS name');
добавила
Код:
$query->select('`category_image` AS image');

работает.
только вопрос: правильно так? либо же можно это как-то в одну строку собрать?
Записан
dmitry_stas
Профи
********

Репутация: +935/-6
Offline Offline

Сообщений: 9954



« Ответ #12 : 28.02.2017, 22:35:21 »

можно и в одну строку, через запятую. но нет разницы по сути
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet