понедельник, 29 декабря 2008 г.

Joomla и AJAX: Шаг 3 com_content

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

Суть всего редактирования заключается компонента заключается в исправлении ссылок с index.php на index2.php и исправления событий onClick и свойства href.

Кроме того, com_content работает с модулем pageNavigation, который разбивает содержимое на страницы -- исправить ссылки в нем тоже не помешает.

Выкладываю окончательный вариант.

Скачать com_content

Joomla и AJAX: Шаг 2 mod_mainmenu

Тем не менее, использование стандартного модуля mod_mainmenu не позволяет использовать этот шаблон -- загрузка страниц все равно происходит с перезагрузкой и полной загрузки контента.

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

<div id="content_box" style="display: none;">


<div id="content">

</div>


</div>
content_box -- это модуль ThickBox, как видим, он по умолчанию не отображается.
В content происходит загрузка контента с использованием AJAX.

Таким образом, ссылка меняется крайне хитрым образом:
<a
onclick="javascript:ajaxpage
('http://site.ru/index2.php
?option=com_content
&task=blogcategory
&id=14&Itemid=38', 'content');"
class="thickbox"
id="active_menu"
href="#TB_inline?height=600
&width=800&inlineId=content_box&amp">
Условия проживания</a>
  1. В ссылке меняется index.php на index2.php. index2.php отображает только содержимое главного модуля.
  2. Класс ссылки меняется на thickbox, id остается main_menu, так что возможность управлениея стилем меню осталась.
  3. Сама ссылка меняется на href="#TB_inline?height=600&width=800&inlineId=content_box&amp" Таким образом ссылка идет на модуль thickbox, ширину и высоту которого настраиваем отдельно.
  4. Так как href уже занят, переход по ссылке вешаем на onClick ссылки.
Скачать mod_mainmenu

Joomla и AJAX: Шаг 1 Шаблон

В стандартной поставке в joomla нет ни шаблонов, ни компонентов, которые бы использовали AJAX, я вот и решил немного восполнить этот недостаток.

Загуглив по ключевым словам Joomla и AJAX получил ссылку вот на эту статью: Использование AJAX в шаблонах Joomla. Идея хорошая и меня натолкнула кое-на-что еще.

Всем известен скрипт ThickBox, который позволяет показывать любой контент во всплывающем фрейме.

В результате объединения получился вот такой вот шаблон.

Скачать шаблон

Посмотреть шаблон можно здесь.