Home Joomla Статьи Статьи о Joomla Модуль Дерево категорий Joomla
Модуль Дерево категорий Joomla PDF Печать E-mail
Автор: А.Волос   

Напишем модуль, который будет выводить дерево (иерархию) категорий для контента Joomla.

  1. Создадим при помощи утилиты (см. "Модуль Joomla в один клик") болванку для модуля. Назовем его mod_treecat.
  2. Теперь заархивируем автоматически созданный модуль, установим его в Joomla штатными методами и опубликуем.
  3. В окне редактирования модуля:

    Указываем позицию: Position: position-12
    Указываем домашнюю страницу: Menu Assignment/Main Menu/Home

    Модуль появился на главной странице. Теперь его можно модифицировать. Поскольку дерево категорий может быть довольно большим, то выведем модуль в position-12 стандартного шаблона Beez2 - Default. Эта позиция выводит модуль в центральную контентную часть страницы.

    Если вы не хотите выводить модуль на главную страницу, можно создать для него специальную страницу, и пункт меню, который будет ссылаться на нее. Тогда при нажатии на этот пункт меню будет отображаться страница с деревом категорий.

  4. Теперь откроем в тектовом редакторе необходимые нам файлы (кроме установочного mod_treecat.xml - он нам не нужен, поскольку в этом модуле мы не будем использовать параметров), и отредактируем их:

     

    helper.php

     
    
    <?php
    // no direct access
    defined('_JEXEC') or die;
    
    /**
     * @package		Joomla.Site
     * @subpackage	mod_treecat
     * @since		2.5
     */
    class mod_treecatHelper
    {
    	/**
    	 * 
    	 *
    	 */
    	static function getList(&$params)
    	{
    		$db = JFactory::getDBO();
    		$db->setQuery("SELECT a.id, a.title, a.level, a.parent_id FROM cb6di_categories AS a WHERE a.parent_id > 0 AND extension = 'com_content' ORDER BY a.lft");
    		$list = $db->loadObjectList();
    		
    		return $list;
    
    	}
    }
      
    ?>
    
     
    

    mod_treecat.php

     
    <?php
    // no direct access
    defined('_JEXEC') or die;
    
    // Include the syndicate functions only once
    require_once dirname(__FILE__).'/helper.php';
    
    $list	= mod_treecatHelper::getList($params);
    
    if(count($list)) {
    	require JModuleHelper::getLayoutPath('mod_treecat', $params->get('layout', 'default'));
    }
     
    

    default.php:

     
    <?php
    /**
     * @package		Joomla.Site
     * @subpackage	mod_treecat
     */
    
    // No direct access.
    defined('_JEXEC') or die;
    
    // Note. It is important to remove spaces between elements.
    ?>
    
    <h2>Дерево категорий Joomla (тип com_content) </h2>
    <ul>
    		<?php foreach($list as $lt) { ?>
    <li>		
    			<?php $temp = $lt->level;?>
    			
    			
    			<?php for($i =0; $i<$temp; $i++) {?>
    				<?php echo "  -  "; ?>
    			<?php } ?>	
    			
    			<?php echo $lt->title; ?>
    			<?php echo "  id="; ?>
    			<?php echo $lt->id; ?>
    			<?php echo "
    "; ?>
    		<?php } ?>		
    
    </ul>
    
    <?php ?>
    
     
    

    Результат:

    Дерево категорий Joomla (тип com_content)

     

    - Sample Data-Articles id= 14
    - - Joomla! id= 19
    - - - Extensions id= 20
    - - - - Components id= 21
    - - - - Modules id= 22
    - - - - - Content Modules id= 64
    - - - - - User Modules id= 65
    - - - - - Display Modules id= 66
    - - - - - Utility Modules id= 67
    - - - - - Navigation Modules id= 75
    - - - - Templates id= 23
    - - - - - Beez 20 id= 69
    - - - - - Beez 5 id= 70
    - - - - - Atomic id= 68
    - - - - Languages id= 24
    - - - - Plugins id= 25
    - - Park Site id= 26
    - - - Park Blog id= 27
    - - - Photo Gallery id= 28
    - - - - Animals id= 72
    - - - - Scenery id= 73
    - - Fruit Shop Site id= 29
    - - - Growers id= 30
    - - - Recipes id= 76
    - Uncategorised id= 9

     

    Как вариант можно вывести дерево категорий не на экран компьютера, а например в текстовый файл.
    Можно дописать программу, чтобы она под каждой категорией выводила соответствующие ей наименования материалов.
    Можно (через запрос к БД) наименования материалов сделать ссылками. Получится практически карта сайта!

     

    Скачать файл "Модуль Дерево категорий Joomla ": Скачать

     

     

Обновлено 29.09.2014 10:22