Читаем Разрботка расширений для CMS Joomla полностью

function showQuestions($option, &$rows, &$pageNav) { $maxlen = 100; ?>

...
getListFooter();?>
...

Код, полученный с помощью getListFooter(), выведет выпадающий список для выбора количества элементов на странице и ссылки на другие страницы. Название элемента

Для проверки задайте в настройках сайта длину списка по умолчанию, равную 5, и добавьте вопросы так, чтобы их количество стало больше, чем 5. Примерный вид, который теперь примет список вопросов в бэкенде, показан на рис. 7.12.

(есть увеличенное изображение)


Рис. 7.12.  Список вопросов с разбиением на страницы

Нацигационная цепочка

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

all - название компонента; category - название компонента, название категории; question шаблон default - название компонента, название категории, текст вопроса; шаблон default_form - название компонента, текст "Задать вопрос".


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

В файле /components/com_myquestions/controller.phpизмените код методов класса QuestionController так:

function display() { global $app; $pathway =& $app->getPathway(); $pathway->addItem(JText::_('COM_MYQUESTIONS'), JRoute::_('index.php?option=com_myquestions')); … } function showForm() { global $app; $pathway =& $app->getPathway(); $pathway->addItem(JText::_('COM_MYQUESTIONS'), JRoute::_('index.php?option=com_myquestions')); $pathway->addItem(JText::_('COM_MYQUESTIONS_ADD_QUESTION')); … }

Изменим метод отображения категории так, чтобы в навигационной цепочке выводилось название категории. Добавьте в метод QuestionViewCategory::display() в файле /components/com_myquestions/views/category/tmpl/default.php

код:

global $app; $pathway =& $app->getPathway(); $pathway->addItem($name_cat);

Метод QuestionViewQuestion::display() в файле /components/com_myquestions/views/question/tmpl/default.phpизмените так:

function display($tpl=null) { if ($tpl !== 'form') { global $option, $app; … $pathway =& $app->getPathway(); $pathway->addItem($question->name_cat, $this->link_cat); $pathway->addItem(JString::substr(strip_tags($question->question), 0, 15).'...'); } parent::display($tpl); }

В случае запроса шаблона default_form в данном методе не требуется никаких изменений, так как необходимые элементы навигационной цепочки уже были добавлены в контроллере. По этой же причине не нужно ничего изменять в методе display() представления all.

Добавьте в файл /language/ru-RU/ru-RU.com_myquestions.iniстроку:

COM_MYQUESTIONS="Моя система «вопрос – ответ»"

Навигационная цепочка, которая теперь отображается во фронтенде компонента, показана на рис. 7.13.

Рис. 7.13.  Навигационная цепочка на странице с выводом одного вопроса

Ключевые термины

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

Краткие итоги

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

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

Для управления навигационной цепочкой в Joomla существует объект JPathway. Его методы позволяют добавлять элементы в навигационную цепочку, изменять названия отдельных элементов или весь массив целиком.

Вопросы


Почему разработать модуль легче, чем компонент?

Каким образом Joomla позволяет разбивать длинные списки на страницы?

Какой объект используется для управления навигационной цепочкой?

Упражнения

Адаптируйте код из раздела " Практика" для своего варианта (см. список вариантов в дополнительных материалах).

Перейти на страницу:

Похожие книги

Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT