Чтение онлайн

на главную

Жанры

Разрботка расширений для CMS Joomla
Шрифт:

Рассмотрен практический пример создания модуля. Рассмотрены классы для постраничного вывода списка элементов и для управления навигационной цепочкой.

Цель лекции:Понять принцип разработки модулей. Ознакомиться с методами классов JPagination и JPathway.

Модули

Как уже говорилось, модули в Joomla используются для отображения небольших фрагментов контента, обычно в левой или правой колонке или верхней или нижней областях страницы. Типичный модуль выводит информацию из таблицы какого-нибудь компонента, например, случайную фотографию или несколько последних статей.

По

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

Постраничный вывод информации (класс JPagination)

Joomla позволяет разбивать длинные списки на страницы, задавая длину списка по умолчанию ( "Сайт" - "Общие настройки", выпадающий список "Длина списка по умолчанию"). Для вывода списков элементов с разбивкой на страницы как в бэкенде, и так и во фронтенде используется класс JPagination. Его открытые (public) поля хранят следующую информацию:

total - общее количество записей; limitstart - порядковый номер записи, с которой нужно начать вывод; limit - количество записей на страницу; prefix - префикс переменных запроса.

Соответственно, конструктор принимает эти четыре значения в качестве параметров:

__construct(int $total, int $limitstart, int $limit, string $prefix = '')

Например:

$paginationObject = new JPagination(100, 20, 10, 'somePrefix');

Как вы, возможно, помните, второй и третий параметры метода JDatabase::setQuery - это смещение для начала выборки и количество выбираемых строк. Они в точности соответствуют параметрам limitstart и limit. Поэтому используйте одни и те же значения для создания объекта JPagination и для задания параметров setQuery:

$db->setQuery("SELECT * FROM #__mycomponent", $limitstart, $limit); $rows = $db->loadObjectList; jimport('joomla.html.pagination'); $paginationObject = new JPagination($total, $limitstart, $limit);

После создания объекта JPagination необходимо вызвать один из его методов для отображения счетчика страниц, ссылки на предыдущую/следующую страницу и т.д. Все эти методы не имеют параметров и возвращают HTML-код соответствующих элементов. Для наглядности посмотрите на результаты работы этих методов (таблица 7.1).

Таблица 7.1. Методы класса JPagination Метод РезультатgetPagesCounter

Рис. 7.1. Результат работы метода getPagesCounter getResultsCounter

Рис. 7.2. Результат работы метода getResultCounter getPagesLinks

Рис. 7.3. Результат работы метода getPagesLinks getListFooter

Рис. 7.4.

Результат работы метода getListFooter getLimitBox

Рис. 7.5. Результат работы метода getLimitBox

Например:

echo $paginationObject->getListFooter;

Также класс JPagination содержит методы orderUpIcon и orderDownIcon для вывода стрелок "вверх" и "вниз", использующихся для задания собственного порядка записей.

Управление навигационной цепочкой (класс JPathway)

Навигационная цепочка("хлебные крошки") - это последовательность элементов, представляющая собой путь по сайту от корня до текущей страницы. Для управления навигационной цепочкой в Joomla существует объект JPathway, доступ к которому можно получить так:

global $app; $pathway =& $app->getPathway;

Добавление элемента в навигационную цепочку

bool addItem(string $name, string $link='')

где

$name - название (текст) элемента; $link - гиперссылка.

Например:

$pathway->addItem('Категория #1','mycomponent/category/1'); $pathway->addItem('Элемент #1');

Получившаяся цепочка показана на рис. 7.6.

Рис. 7.6. Навигационная цепочка

Обратите внимание, что для элемента, который окажется в цепочке последним, ссылка выводиться не будет, даже если она задана. Это понятно, т.к. последний элемент соответствует текущей странице, ссылка на которую и без того известна. Тем не менее, такая ссылка не теряется и сохраняется в массиве _pathway, в котором класс JPathway хранит элементы цепочки как объекты с двумя полями - name и link.

Получение массива элементов навигационной цепочки

array getPathway

Для приведенного выше примера массив выглядит так:

Array ([0]=>stdClass Object ([name]=>Категория #1 [link]=>mycomponent/category/1) [1]=>stdClass Object ([name]=>Элемент #1 [link]=>))

Получение только названий элементов без ссылок

array getPathwayNames

Для того же примера этот метод вернет массив

Array ([0]=>[1]=>Категория #1 [2]=>Элемент #1)

Изменение названия заданного элемента

bool setItemName(int $id, string $name)

где

$id - индекс элемента; $name - новое название.

Пример:

$pathway->setItemName(0,'Категория #2');

Вид навигационной цепочки после выполнения этого кода показан на рис. 7.7.

Рис. 7.7. Измененная навигационная цепочка

Замена массива элементов навигационной цепочки

Поделиться:
Популярные книги

Тринадцатый IV

NikL
4. Видящий смерть
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Тринадцатый IV

Огненный князь 6

Машуков Тимур
6. Багряный восход
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 6

Изгой. Пенталогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
9.01
рейтинг книги
Изгой. Пенталогия

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Искушение генерала драконов

Лунёва Мария
2. Генералы драконов
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Искушение генерала драконов

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Смерть может танцевать 2

Вальтер Макс
2. Безликий
Фантастика:
героическая фантастика
альтернативная история
6.14
рейтинг книги
Смерть может танцевать 2

Гром над Академией Часть 3

Машуков Тимур
4. Гром над миром
Фантастика:
фэнтези
5.25
рейтинг книги
Гром над Академией Часть 3

Провалившийся в прошлое

Абердин Александр М.
1. Прогрессор каменного века
Приключения:
исторические приключения
7.42
рейтинг книги
Провалившийся в прошлое

Последняя жертва

Мид Райчел
6. Академия вампиров
Фантастика:
ужасы и мистика
9.51
рейтинг книги
Последняя жертва

Возвышение Меркурия. Книга 8

Кронос Александр
8. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 8

Наследник старого рода

Шелег Дмитрий Витальевич
1. Живой лёд
Фантастика:
фэнтези
8.19
рейтинг книги
Наследник старого рода

Книга 5. Империя на марше

Тамбовский Сергей
5. Империя у края
Фантастика:
альтернативная история
5.00
рейтинг книги
Книга 5. Империя на марше

Кодекс Охотника. Книга XVI

Винокуров Юрий
16. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVI