Оригинал статьи вы можете посмотреть по ссылке Joomla Component Tabbed Interface For Backend
У многих известных компонентов в Backend есть закладки, предоставляющие логическое разделение информации по закладкам вместо использования громоздких форм. Код для таких интерфейсов содержится в ядре Joomla и ждет применения в Вашем следующем проекте.
(Примечание: информация из этого учебника была написана для ранних копий Mambo и на данный момент устарела. В скором времени эта информация будет обновлена. )
Вернемся к учебнику по компоненту Daily Message…
У Daily Message есть экран конфигурирования, который вызывается установкой переменной ‘act’ в значение ‘configure’. Эта переменная отслеживается в файле admin.dailymessage.php, который передает классу HTML_joeDailyMessage указание на выполнение функции listConfiguration(), которая, в свою очередь, выводит все опции конфигурирования.
Несмотря на то, что и ранее компонент хорошо работал, предположим, что я хочу использовать закладки для экрана администрирования. Таким образом, мы легко сумеем вставить в компонент интерфейс с закладками.
{moscode} function listConfiguration($option, &$rows) { ?>
Bold | bold ); ?> |
Italic | italic ); ?> |
Underline | underline ); ?> |
Show Date | showdate ); ?> |
configid ?> /> Если у Вас возникли вопросы по этой вставке, вернитесь к описанию файла admin.dailymessage.html.php в учебнике Daily Message Component. Теперь мы можем добавить закладки.
{moscode} function listConfiguration($option, &$rows) { ?> {/moscode}
Сначала нужно добавить JavaScript, запускающий действия закладок. Скрипты уже встроены в Joomla и сделают для нас основную работу.
{moscode}
Bold | Italic | Underline | Show Date |
{/moscode}
После получения результатов запроса для конфигурационной таблицы (снова рекомендуется обратиться к учебнику Daily Message), мы создаем закладки в верхней части формы, используя таблицу. Атрибут “id” в каждой ячейке устанавливается в ‘tabx’, где x отвечает за позицию закладки в таблице, начиная с позиции 1. Первая пустая ячейка гарантирует, что закладки не будут сбрасываться в левую часть экрана. Последняя ячейка предотвращает разрастание других вправо. Несмотря на указанную толщину (90%) она редко занимает столько места.
{moscode}
{/moscode}
Начнем форму с добавления содержимого для первой закладки. Назовем содержимое каждой закладки соответственно имени (‘page1’,’page2’, и т.д.). Таким образом, JavaScript сделает всю работу, позволив нам сконцентрироваться на интерфейсе.
{moscode}
{/moscode}
Остальные четыре примера во многом повторяют первый. Совершенство – хорошая вещь, даже если оно кажется избыточным. Я делаю это, потому что знаю, если сделать иначе, начнется поток e-mail-ов, в которых будет: «Джо, помогите! Я ввел Ваш код так, как сказано на Вашем сайте и теперь получаю только первую страницу и кучу JavaScript ошибок при попытке перейти куда-нибудь еще!» Таким образом, Вы получаете полноценный код вместо нескольких строк с кучей замещающих знаков (как это обычно бывает в других руководствах).
{moscode} configid ?> /> {/moscode}
Теперь мы работаем со скрытыми переменными. Они взяты из учебника Daily Message, т.е. при желании Вы можете заглянуть туда и освежить в памяти принципы их работы. Должно быть, Вы уже заметили, что мы также закрыли тэг
. Следовательно, все четыре этих элемента находятся в одной форме ‘adminForm’. В зависимости от того, что Вы хотите получить, это может быть благословение или проклятие. Если Вы хотите получить список на каждой странице, используя удобные панели управления Joomla, Вам не повезло. Проблема в том, что все скрипты встраиваются в ‘adminForm’ и никуда более. Если Вы попробуете создать несколько форм с именем ‘adminForm’, скрипты откажутся работать. Однако, если у Вас экран конфигурации велик и содержит переменные из одной таблицы в базе данных, использование встроенных закладок помогает организовать настройки изящнее.
{moscode} dhtml.cycleTab('tab1'); Далее необходимо сообщить Joomla какую закладку мы хотим загрузить. На первый раз это может показаться ненужным, однако позволит добавить гибкости в Ваш дизайн. Предположим, что Вам нужно направить пользователя к некоторым настройкам из любой части Backend-а. Вы можете переслать через HTTP переменную и заменить приведенный выше код на оператор switch() или if(), которые выведут нужную закладку.
Подведем итоги. Элегантный, простой интерфейс делается с помощью DHTML кода закладок, содержащегося в Joomla. Он может очень помочь Вам, если у Вас интерфейс с 2-3 экранами элементов для одной формы, но может и усложнить Вам работу. Используйте разумно!
А здесь Вы можете скачать дополнение к компоненту Ежедневных Сообщений с закладками (не потребует удаления Daily Message):