Модуль Дерево категорий Joomla |
|
|
|
Автор: А.Волос
|
Напишем модуль, который будет выводить дерево (иерархию) категорий для контента Joomla.
- Создадим при помощи утилиты (см. "Модуль Joomla в один клик") болванку для модуля. Назовем его mod_treecat.
- Теперь заархивируем автоматически созданный модуль, установим его в Joomla штатными методами и опубликуем.
- В окне редактирования модуля:
Указываем позицию: Position: position-12
Указываем домашнюю страницу: Menu Assignment/Main Menu/Home
Модуль появился на главной странице. Теперь его можно модифицировать.
Поскольку дерево категорий может быть довольно большим, то выведем модуль в position-12 стандартного шаблона Beez2 - Default.
Эта позиция выводит модуль в центральную контентную часть страницы.
Если вы не хотите выводить модуль на главную страницу, можно создать для него специальную страницу, и пункт меню,
который будет ссылаться на нее. Тогда при нажатии на этот пункт меню будет отображаться страница с деревом категорий.
- Теперь откроем в тектовом редакторе необходимые нам файлы (кроме установочного 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 |