Создаём всплывающее окно авторизации для Joomla

Что такое модули joomla

Модули Joomla – один из основных видов расширений этой CMS. Наряду с модулями, существуют также компоненты, плагины и шаблоны. Модули – это, определенно, одна из причин использовать Joomla для создания сайта.

Альтернативный макет модуля

Иногда бывают ситуации, когда один и тот же модуль нужно выводить в разной разметке. Например, в одном месте сайта последние статьи нужно показывать списком и только заголовки, а в другом – заголовок, описание, вводное изображение.

Хорошо, когда опций модуля хватает чтобы сделать такое разделение. Но часто бывает, что нет. В этом случае нам на помощь приходят альтернативные макеты модулей Joomla.

Альтернативный макет – это файл стандартного макета модуля, имеющий другое название и измененное содержимое.

Чтобы создать и использовать альтернативный макет для модуля необходимо:

  1. Переопределить стандартный макет модуля в шаблон Joomla (подробнее о том, как это сделать, написано в разделе выше)
  2. Переименовать стандартный макет в любое другое название, не содержащее специальных символов (в том числе нижнего подчеркивания)
  3. В настройках модуля найти опцию «Альтернативный макет» и выбрать в ней файл, созданный в п.2.

В примере с модулем авторизации (см. раздел выше) я переопределил его стандартные макеты в шаблон Joomla, а затем переименовал их в header.php и header_logout.php соответственно. После этого в настройках модуля авторизации выбрал переименованный макет:

Всё. Теперь данный экземпляр модуля авторизации будет брать разметку из альтернативного макета.

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

Похожее:  Как зарегистрироваться на и пользоваться личным кабинетом

Вот так выглядит компонент improved ajax login & register который мы настраивали

Мне не понравилось сразу несколько элементов, во первых это фон (серый с узорчиками), его можно поменять в настройках модуля да и всё остальное тоже там настраивается, второе как я показал на рис. ниже это галочки типа как выподающие меню и то чтоформа открывается возле кнопок как на рис. выше а не в центре экрана.

Идём в настройки модуля Improved AJAX Login & Register находим там Theme Parameters и переключаем параметр “Open popups at center” в положение “ON”. Тут же ниже можем поменять серый фон.

Тут ещё куча настроек стиля модуля, описывать все не буду, если будут вопросы пишите.

Сохраняем и смотрим что получилось.

На этом настрока Improved AJAX Login & Register закончена, подключение других компонентов к этому ищите по сайту в других обзорах и уроках. 

Есть вопросы, задавайте не стесняйтесь!

Вставка модуля в компонент joomla

Этот вариант нужен тем, кто уже хоть немного разбирается в PHP.

Иногда возникает необходимость вставить модуль в страницу, генерируемую каким-либо компонентом Joomla. Самый простой пример – необходимо в интернет-магазине (к примеру, Virtuemart) на странице товара вставить модуль обратной связи. Место этой вставки расположено в макете карточки товара. Как быть?

Для вставки модуля Joomla в компонент можно использовать следующий код:

Вывести модуль в модуле joomla

Запомните важный момент! Если перед вами появилась задача вставить модуль в модуль Joomla, то с вероятностью 99% вы что-то делаете неправильно.

Модуль Joomla не предназначен для того, чтобы в него вставляли другой модуль. Это что-то вроде бесконечной песенки «У попа была собака…». Модуль – конечная единица контента в Joomla. Если вам чего-то в нем не хватает, значит, вы неправильно спроектировали структуру сайта или шаблон.

Тем не менее, есть способ, позволяющий вставить один модуль Joomla в другой. Для этого вы должны:

  1. Переопределить макет модуля в шаблон Joomla (про макеты и их переопределения читайте в разделе «Оформление модулей», который будет ниже)
  2. В коде переопределенного макета использовать код для вставки модуля в компонент, который я писал чуть выше.

И это будет работать. Модуль будет вставлен в модуль. Но еще раз повторю: это неправильно! Если вам не хватает какого-то контента в модуле, разумнее будет вставить его в переопределенный макет этого модуля, но никак не добавлять в модуль другой модуль.

Как вставить модуль в материал joomla

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

Для вставки модуля в материал в Joomla есть несколько специальных плагинов. Это работает так. Вы вставляете в статью специальную конструкцию, а при загрузке страницы плагин проверяет, встречается ли она, и если да – заменяет ее модулем.

Вы можете использовать один из двух вариантов:

  1. Вставить в материал позицию модулей
  2. Вставить в материал отдельный модуль

Для вставки позиции модуля используется конструкция:

{loadposition название_позиции}

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

Для вставки отдельного модуля в материал используется конструкция:

{loadmoduleid ID_модуля}

Эта конструкция появилась относительно недавно и, если вы используете не самую свежую версию Joomla, она может у вас не работать.

ID модуля можно узнать в менеджере модулей. Там, напротив каждого из них, указан ID.

Другой вариант использования описанных выше конструкций – это специальная кнопка в редакторе TinyMCE (он используется в Joomla по умолчанию). Данная кнопка позволяет вставлять модули гораздо более удобным способом. Посмотрите:

Как добавить позицию модуля в шаблон

Иногда стандартных позиций шаблона бывает недостаточно. Что делать, есть нам нужно вывести модуль в таком месте шаблона, позиции в котором не существует? Нужно создать новую позицию в шаблоне. На самом деле, это проще, чем кажется.

Если вы используете стандартный шаблон и хотите добавить в нем новую позицию, то вам нужно открыть файл:

/templates/ваш_шаблон/index.php

В нем должна содержаться разметка данного шаблона. Вставить новую позицию можно с помощью следующего кода:

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

В такой вставке важно указать название новой позиции в атрибуте name и ее стиль в атрибуте style. По умолчанию можно указывать стиль xhtml или none. Он определяет структуру вывода модуля (заголовок, контент, общая верстка). Подробнее про стили позиций рассказывается ниже, в разделе про оформление модулей.

Если вы используйте шаблон, основанный на фреймворке, то, скорее всего, сможете посмотреть текущие позиции и добавить новые в его настройках, в админке.

Когда не стоит использовать модули

Не всегда использование модулей на сайте Joomla оправдано. Бывали случаи, когда я сталкивался с сайтами, на которых использовалось 500-800 экземпляров модулей. Стоит ли говорить, что поддержка такого сайта превращалась в настоящий кошмар.

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

Макет модуля

Второй, гораздо более важной составляющей html-разметки модуля, является его макет.

Макет – это файл, который выводит на сайт содержимое модуля. У каждого модуля есть как минимум один макет. Часто модули имеют несколько макетов.

Макеты модуля всегда расположены в каталоге:

/modules/название_модуля/tmpl/

Рассмотрим пример макетов на стандартном модуле авторизации Joomla.

Найти макеты можно в каталоге:

/modules/mod_login/tmpl/

Здесь вы увидите два файла-макета:

  1. default.php
  2. default_logout.php

Почему два? Т.к. это модуль авторизации, то он может быть показан в одном из двух состояний:

  1. Пользователь не авторизован
  2. Пользователь авторизован

Модули html-кода в материалах joomla

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

Модули joomla и com_ajax

Есть еще одна важная вещь, которую нужно знать о модулях, прежде чем браться за разработку.

Модуль не может содержать несколько страниц (в стандартном понимании). Т.е., по сути, модуль только выводит информацию, но не обрабатывает ее, как компонент. Это означает, что вы не можете вызвать модуль по прямому URL.

Т.е., к примеру, модуль не предназначен для реализации формы обратной связи, которая сначала показывает форму, а потом страницу «Спасибо».

Для того чтобы иметь возможность вызова модуля по прямой ссылке, применяется специальный компонент Joomla, который называется com_ajax.

Com_ajax работает с модулями следующим образом:

  1. При запросе в адресной строке передается URL вида: php?option=com_ajax&module=название_модуля&format=raw(или json)&method=назавание_метода
  2. Com_ajax из параметров понимает к какому модулю обратиться, какой формат ответа от него ждать и какой метод должен быть выполнен, чтобы ответ был получен
  3. В модуле, в файле helper.php должен присутствовать метод, имя которого передается в com_ajax и название которого заканчивается на «Ajax». Например, если в com_ajax передается параметр &method=getForm, то в хелпере должен быть метод getFormAjax.

Вот и всё. Сам этот метод должен генерировать то, что будет ответом на такой URL. Это может быть, в том числе, макет модуля. Таким образом, используя com_ajax, вы сможете вывести модуль по прямому URL.

Более подробную информацию по com_ajax и варианты его использования вы можете найти здесь.

Модули для текста (или меню) в несколько колонок

Часто бывает, что необходимо сделать что-то такое:

Не нужно создавать для этого три разных модуля. Почему? Да, это кажется проще на первый взгляд, но когда вы сделаете аналогичным образом еще несколько блоков, то их поиск и редактирование превратится в кошмар.

Правильный подход: Выводите HTML-код в одном модуле и используйте CSS для создания нескольких колонок.

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

Модуль авторизации – core design

Рисунок 1 к статье Модуль авторизацииПри развитии нового проекта, наступает такое время, когда нужно экономить место на главной странице сайта, чтобы представить все Особо важные (на Ваш взгляд) менюшки, модули, ссылки и различные прибамбасы. Важно, чтобы посетители смогли все это увидеть уже при первом входе на сайт, чтобы увлекшись им они приходили к Вам снова. Неплохо помогут решить подобные проблемы модули, которые изначально выглядят в виде ярлыков и кнопок, но при клике по ним возникает всплывающее окно с полной информацией, оформленной функционально и красиво. Жаль, что большинство подобных модулей используют библиотеку JQuery и при установке на сайт очередного модуля с подобной функцией, некоторые перестают работать. Сегодня, я , как и обещал, хочу предложить Вам модуль регистрации со всплывающим окном в виде формы регистрации и входа на ресурс, который работает на совершенно другой платформе

обеспечивающей различные эффекты : Core Design Login 2.5.x для Joomla 2.5.

Рисунок 2 к статье Модуль авторизацииРабота модуля обеспечивается технологией Highslide JS. Вообще студия Core Design, знаменитая своими волшебными шаблонами работающими на основе технологии Higeslide JS при помощи собственных плагинов, в данном случае потребуется предварительно установить и включить плагин Core Design Scriptegrator plugin (в нашем архиве имеется). Но давайте все по порядку. Скачиваете с нашего сайта модуль всплывающего окна авторегистрации mod_cdlogin_2.5.x.2.0.4_rus и плагин plg_system_cdscriptegrator_2.5.x.2.2.9_rus. По окончанию “rus”, Вы конечно догадались что модуль и плагин русифицированы, поэтому настроить эти расширения не составит большого труда. Устанавливаем сначала плагин, затем модуль стандартным способом через менеджер расширений в админпанели. Заходим в менеджер плагинов, если трудно искать, включаем фильтр System. Найдя, открываем плагин и не меняя настроек просто включаем его. Затем переходим в менеджер модулей, открываем для настройки установленный модуль. Слева в рубрике “подробно” все как обычно. Меняете название по своему вкусу, ставите опубликовано и выбираете привязку к меню, то есть те странички, на которых Вы хотите видеть данный модуль.

Справа в основных параметрах:

Рисунок 3 к статье Модуль авторизацииМожете вписать в окна текст приветствия, который Вы хотите показывать во всплывающем окне формы авторизации. Можно просто проигнорировать, так как вполне достаточно и самой лаконичной формы. Дальше Вы должны выбрать на какие страницы или блоги должен попадать Ваш пользователь при входе на сайт, и при закрытии формы авторизации. В графе “приветствуем” ставим галочку в чекбокс “да”. Шифровать форму входа – ставим нет. Если поставить “да” то при входе пользователю будет выведена такая страшная форма, предупреждающая о неподтвержденности подлинности Вашего сайта, что вряд ли кто отважится зайти на сайт, в страхе за целостность своего компа. У нас с Вами противоположная задача, поэтому ставим нет.

В дополнительных параметрах

Рисунок 4 к статье Модуль авторизацииАльтернативный макет – оставляем. Суффикс модуля – при необходимости присваиваем. Кэширование – не кэшировать. Далее по ссылкам. Вводите собственные URL для  графы регистрации, восстановления пароля и логина. Если ничего не вводить а оставить Джумловские, то будет соблюдена стандартная процедура восстановления. Настройки показа: здесь все понятно если посмотреть всплывающие подсказки. На некоторых шаблонах у меня не настраивалась прозрачность фона, он сразу становился радикально черным при установке любого значения кроме нуля. Но это не так важно. Я пытался синхронно с модулем менять настройки в соответствующем плагине. Не помогло. Если кто выяснит сообщите пожалуйста в комментариях. В конце концов мы с Вами делаем одно общее дело. Вот, собственно и весь мой отчет о всплывающем модуле авторизации и входа на сайт. Да, чуть не забыл, при установке данного модуля отключите стандартный модуль входа. До встречи. Олег


Скачать mod cdlogin 2.5.x.2.0.4 rus и плагин plg system cdscriptegrator 2.5.x.2.2.9 rus

Если эта статья показалась вам полезной, пожалуйста, проголосуйте за нее. Это поможет другим быстрее найти эту статью из множества других менее полезных.
( 9 Голосов ) 

Вы должны зарегистрироваться для комментирования

Модуль с уникальной информацией для страницы каталога или интернет-магазина

Бывает, что случается такое: на каждой странице каталога товаров (или чего-то еще) появляется необходимость поместить блок с уникальной информацией. Скажем, заказчик просит добавить на странице каждого товара слайдер с дополнительными фотографиями.

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

Правильный подход: использовать дополнительные поля для товара в каталоге. В них загружать слайды и формировать слайдер в макете карточки товара.

Настройка модулей joomla

Прежде всего. Модули, которые вы настраиваете в админке и видите на сайте – это экземпляры. Уникальный модуль – это каркас, файловая система, но не настройки (разве что только те, которые заданы по умолчанию).

У каждого модуля есть как общие настройки, так и свои собственные. Собственные настройки модуля создает разработчик, и они обычно отличаются для каждого модуля. Общие же настройки одинаковы во всех модулях. О них мы сейчас и поговорим.

Ограничение на просмотр модулей

Еще одной важной возможностью модулей Joomla является разграничение доступа.

Предположим, у нас есть задача в определенной позиции шаблона:

  • Для неавторизованных пользователей показывать форму входа
  • Для авторизованных пользователей показывать пользовательское меню.

Оформление модулей

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

Позиции модулей

Одна из самых важных настроек, которая есть у каждого модуля Joomla, это Позиция.

Позиция модуля – это место в шаблоне, где модуль может быть выведен.

В каждом шаблоне позиции разные. Их создают разработчики шаблонов.

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

Выбор позиции модуля представляет собой выпадающий список:

Разумеется, для того чтобы выбрать позицию, нужно понимать, где она расположена в шаблоне Joomla. Для обычных шаблонов позиции можно посмотреть так:

  1. Перейти в Расширения –> Менеджер шаблонов –> Настройки и активировать опцию Просмотр позиций модулей:

Порядок модулей

Порядок вывода модулей определяется индивидуально для каждой позиции.

Изменять порядок в настройках каждого отдельного модуля я не советую. Это неудобно. Гораздо проще зайти в менеджер модулей, отфильтровать модули по отдельной позиции, нажать на сортировку по самой первой колонке, а затем перетащить модули мышкой так, как нужно:

Просмотр модулей joomla

Для начала давайте разберемся с тем, как посмотреть уникальные модули, которые установлены (или предустановлены) на сайте. Это можно сделать двумя способами:

Первый способ.  В админке перейти в Расширения –> Менеджер расширений –> Управление. На открывшейся странице нажать кнопку Инструменты поиска, и в появившемся фильтре выбрать тип расширения Модуль. Посмотрите пример:

Здесь же, кстати, можно удалить ненужные модули.

Вы можете спросить: почему на картинке некоторые модули повторяются? Дело в том, что все модули разделены на две области:

  • Область фронтенда – то, что будут видеть пользователи сайта
  • Область бэкенда (админки) – то, что будут видеть пользователи админки

Для каждой области есть свой уникальный модуль.

Второй способ. В файлах сайта нужно перейти в одну из папок:

Эти же каталоги указывают нам расположение модулей в файловой структуре Joomla.

Просмотреть экземпляры модулей Joomla тоже очень просто. Достаточно перейти в админке в Расширения –> Менеджер модулей. Здесь вы увидите список всех созданных экземпляров модулей:

Заметьте, в менеджере модулей показаны экземпляры модулей только одной из областей. По умолчанию это «Сайт». Если вы хотите посмотреть экземпляры модулей админки, то нужно выбрать соответствующую опцию в фильтре, показанном на рисунке выше.

Теперь, когда мы разобрались с тем, что такое уникальный модуль и экземпляр модуля, пора поговорить о настройке.

Сколько модулей может быть на странице

Последнее, о чем хочется поговорить во вводной части – допустимое количество модулей на сайте.

Освоить модули легко. Установить еще легче. Если вы только недавно познакомились с Joomla, то можете словить эйфорию от работы с ними. Не поддавайтесь ей.

Если вы подбираете для сайта интересный модуль, делайте это на тестовом сайте. Не устанавливайте на боевой сайт всё подряд. Это может аукнуться когда-нибудь в будущем.

Другой вариант – веб-мастер делает на модулях весь сайт, вообще забывая про компоненты. За время работы мне доводилось видеть несколько проектов, на которых использовались сотни модулей (нет, не уникальных, но экземпляров какого-нибудь одного, например html-кода).

Создаём всплывающее окно авторизации для joomla

  • (function($){

  • $.facebox=function(data, klass){

  • $.facebox.loading()

  • if(data.ajax) fillFaceboxFromAjax(data.ajax, klass)

  • elseif(data.image) fillFaceboxFromImage(data.image, klass)

  • elseif(data.div) fillFaceboxFromHref(data.div, klass)

  • elseif($.isFunction(data))data.call($)

  • else$.facebox.reveal(data, klass)

  • }

  • $.extend($.facebox,{

  • settings:{

  • opacity :0.2,

  • overlay :true,

  • loadingImage :,

  • closeImage :,

  • imageTypes :[‘png’,‘jpg’,‘jpeg’,‘gif’],

  • faceboxHtml :

  • <div id=”facebox” style=”display:none;”>

  • <div>

  • <div>

  • </div>

  • <a href=”#”>close</a>

  • </div>

  • </div>’

  • },

  • loading:function(){

  • init()

  • if($(‘#facebox .loading’).length==1)returntrue

  • showOverlay()

  • $(‘#facebox .content’).empty()

  • $(‘#facebox .body’).children().hide().end().

  • append(‘<div><img src=”‘ $.facebox.settings.loadingImage ‘”/></div>’)

  • $(‘#facebox’).css({

  • top: getPageScroll()[1] (getPageHeight()/10),

  • left:$(window).width()/2205

  • }).show()

  • $(document).bind(‘keydown.facebox’,function(e){

  • if(e.keyCode==27)$.facebox.close()

  • returntrue

  • })

  • $(document).trigger(‘loading.facebox’)

  • },

  • reveal:function(data, klass){

  • $(document).trigger(‘beforeReveal.facebox’)

  • if(klass)$(‘#facebox .content’).addClass(klass)

  • $(‘#facebox .content’).append(data)

  • $(‘#facebox .loading’).remove()

  • $(‘#facebox .body’).children().fadeIn(‘normal’)

  • $(‘#facebox’).css(‘left’,$(window).width()/ 2 – ($(‘#facebox .popup’).width() /2))

  • $(document).trigger(‘reveal.facebox’).trigger(‘afterReveal.facebox’)

  • },

  • close:function(){

  • $(document).trigger(‘close.facebox’)

  • returnfalse

  • }

  • })

  • $.fn.facebox=function(settings){

  • if($(this).length==0)return

  • init(settings)

  • function clickHandler(){

  • $.facebox.loading(true)

  • var klass =this.rel.match(/facebox[?.(w )]?/)

  • if(klass) klass = klass[1]

  • fillFaceboxFromHref(this.href, klass)

  • returnfalse

  • }

  • returnthis.bind(‘click.facebox’, clickHandler)

  • }

  • function init(settings){

  • if($.facebox.settings.inited)returntrue

  • else$.facebox.settings.inited=true

  • $(document).trigger(‘init.facebox’)

  • makeCompatible()

  • var imageTypes =$.facebox.settings.imageTypes.join(‘|’)

  • $.facebox.settings.imageTypesRegexp=new RegExp(.(‘ imageTypes ‘)$’,‘i’)

  • if(settings)$.extend($.facebox.settings, settings)

  • $(‘body’).append($.facebox.settings.faceboxHtml)

  • var preload =[new Image(),new Image()]

  • preload[0].src=$.facebox.settings.closeImage

  • preload[1].src=$.facebox.settings.loadingImage

  • $(‘#facebox’).find(‘.b:first, .bl’).each(function(){

  • preload.push(new Image())

  • preload.slice(1).src=$(this).css(‘background-image’).replace(/url((. ))/,‘$1’)

  • })

  • $(‘#facebox .close’).click($.facebox.close)

  • $(‘#facebox .close_image’).attr(‘src’,$.facebox.settings.closeImage)

  • }

  • // getPageScroll() by quirksmode.com

  • function getPageScroll(){

  • var xScroll, yScroll;

  • if(self.pageYOffset){

  • yScroll = self.pageYOffset;

  • xScroll = self.pageXOffset;

  • }elseif(document.documentElement&amp;&amp; document.documentElement.scrollTop){// Explorer 6 Strict

  • yScroll = document.documentElement.scrollTop;

  • xScroll = document.documentElement.scrollLeft;

  • }elseif(document.body){// all other Explorers

  • yScroll = document.body.scrollTop;

  • xScroll = document.body.scrollLeft;

  • }

  • returnnew Array(xScroll,yScroll)

  • }

  • // Adapted from getPageSize() by quirksmode.com

  • function getPageHeight(){

  • var windowHeight

  • if(self.innerHeight){// all except Explorer

  • windowHeight = self.innerHeight;

  • }elseif(document.documentElement&amp;&amp; document.documentElement.clientHeight){// Explorer 6 Strict Mode

  • windowHeight = document.documentElement.clientHeight;

  • }elseif(document.body){// other Explorers

  • windowHeight = document.body.clientHeight;

  • }

  • return windowHeight

  • }

  • function makeCompatible(){

  • var$s =$.facebox.settings

  • $s.loadingImage=$s.loading_image||$s.loadingImage

  • $s.closeImage=$s.close_image||$s.closeImage

  • $s.imageTypes=$s.image_types||$s.imageTypes

  • $s.faceboxHtml=$s.facebox_html||$s.faceboxHtml

  • }

  • function fillFaceboxFromHref(href, klass){

  • // div

  • if(href.match(/#/)){

  • var url = window.location.href.split(‘#’)[0]

  • var target = href.replace(url,)

  • if(target ==‘#’)return

  • $.facebox.reveal($(target).html(), klass)

  • // image

  • }elseif(href.match($.facebox.settings.imageTypesRegexp)){

  • fillFaceboxFromImage(href, klass)

  • // ajax

  • }else{

  • fillFaceboxFromAjax(href, klass)

  • }

  • }

  • function fillFaceboxFromImage(href, klass){

  • var image =new Image()

  • image.onload=function(){

  • $.facebox.reveal(‘<div><img src=”‘ image.src ‘” /></div>’, klass)

  • }

  • image.src= href

  • }

  • function fillFaceboxFromAjax(href, klass){

  • $.get(href,function(data){$.facebox.reveal(data, klass)})

  • }

  • function skipOverlay(){

  • return$.facebox.settings.overlay==false||$.facebox.settings.opacity===null

  • }

  • function showOverlay(){

  • if(skipOverlay())return

  • if($(‘#facebox_overlay’).length==0)

  • $(“body”).append(‘<div id=”facebox_overlay”></div>’)

  • $(‘#facebox_overlay’).hide().addClass(“facebox_overlayBG”)

  • .css(‘opacity’,$.facebox.settings.opacity)

  • .click(function(){$(document).trigger(‘close.facebox’)})

  • .fadeIn(200)

  • returnfalse

  • }

  • function hideOverlay(){

  • if(skipOverlay())return

  • $(‘#facebox_overlay’).fadeOut(200,function(){

  • $(“#facebox_overlay”).removeClass(“facebox_overlayBG”)

  • $(“#facebox_overlay”).addClass(“facebox_hide”)

  • $(“#facebox_overlay”).remove()

  • })

  • returnfalse

  • }

  • $(document).bind(‘close.facebox’,function(){

  • $(document).unbind(‘keydown.facebox’)

  • $(‘#facebox’).fadeOut(function(){

  • $(‘#facebox .content’).removeClass().addClass(‘content’)

  • $(‘#facebox .loading’).remove()

  • $(document).trigger(‘afterClose.facebox’)

  • })

  • hideOverlay()

  • })

  • })(jQuery);

  • Стандартные модули joomla

    Чтобы еще лучше разобраться с тем, что такое модули, давайте посмотрим на те из них, которые будут доступны сразу после установки Joomla. Посмотрите картинку:

    Стандартный набор охватывает практически весь типовой функционал. Здесь есть:

    • Вставка html-кода
    • Меню
    • Форма авторизации
    • Список статей/категорий/тегов
    • Хлебные крошки
    • Поиск

    Если вы видите что-то из вышеперечисленного на сайте, то с вероятностью 99% перед вами модуль Джумла.

    Самую большую часть набора представляют модули вывода материалов. Не все из них идеальны, но большинство вполне годные.

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

    Стиль позиции модуля

    Далее поговорим про html-структуру модулей на сайте. Она формируется из двух частей:

    1. Стиль позиции модуля в шаблоне
    2. Макет модуля

    Каждая из этих частей формирует итоговую html-разметку модуля на сайте. Фактически то, что будет вставлено в шаблон вместо:

     Здесь мы рассмотрим первую часть – стиль позиции модуля.

    Стилей может быть несколько. Какой именно стиль будет применен, указывается во вставке позиции модуля. Посмотрите пример вставки чуть выше. Здесь применен стиль xhtml.

    Вы можете переопределять стили позиций, а также создавать свои собственные стили. Посмотрим как.

    Стандартный набор стилей позиции модуля расположен в файле:

    /templates/system/html/modules.php

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

    /templates/ВАШ_ШАБЛОН/html/

    Кстати, очень велика вероятность, что в вашем шаблоне такой файл уже существует. Тогда ничего копировать не нужно – редактируйте файл из вашего шаблона.

    Содержимое файла стилей позиции модуля на первый взгляд может показаться сложным, но в реальности оно довольно простое. В файле содержится набор функций. Одна функция определяет один стиль. Шаблон имен функций такой:

    modChrome_название_стиля

    т.е., к примеру, функция стиля xhtml будет называться:

    modChrome_xhtml

    Содержимое функции определяет html-разметку стиля позиции. Здесь есть всего две основные переменные, которые нужно вывести:

    1. $module->title – заголовок модуля
    2. $module->content –содержимое макета модуля

    Всё остальное – различные параметры и дополнительная логика. Ориентируйтесь на примеры функций в файле, и вы сможете создать свой уникальный стиль для позиции.

    Всё это прекрасная теория. На практике же лично я использую в основном только два стандартных стиля:

    1. xhtml – выводит заголовок и содержимое модуля в простых блоках
    2. none – выводит содержимое модуля (без заголовка) без какой-либо разметки. Читай – только макет.

    Ну и в целом – изменение стилей позиций модулей – достаточно редкая задача. Чаще всего хватает стандартного их набора. Но зная про стили позиций, вы не будете теряться, когда увидите дополнительную html-разметку вокруг выведенного в шаблон модуля.

    Суффикс класса модуля

    Суффикс класса модуля является довольно полезной опцией, когда вам нужно оформить по-разному два экземпляра одного модуля.

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

    Подробно про суффикс класса модуля вы можете прочитать в отдельной статье, целиком посвящённой этой теме. Всем, кто постоянно использует Joomla, настоятельно рекомендую к ознакомлению.

    Управление модулями joomla

    Управление модулями Joomla с одной стороны очевидное, но с другой стороны содержит очень много тонкостей, о которых важно помнить. Далее мы рассмотрим их.

    Прежде всего, нужно понимать, чем отличается уникальный модуль от экземпляра модуля.

    Уникальный модуль – такой, который устанавливается, как отдельное расширение и занимает отдельную папку в Joomla.

    Экземпляр модуля – отдельно хранящаяся (в базе данных) конфигурация уникального модуля.

    Чтобы было проще понять, давайте рассмотрим такой пример. Предположим, у нас на сайте есть слайдеры на двух разных страницах. Сами (функционально) они одинаковые, но должны иметь разный контент. Например, в одном слайдере две картинки, а в другом три другие. Также первый прокручивается автоматически, а второй нет.

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

    У одного уникального модуля может быть неограниченное количество экземпляров. Еще раз повторю. Экземпляр – это совокупность настроек модуля, хранящаяся в базе данных и всё. Хотя есть, конечно, и более сложные случаи. О них поговорим позднее.

    Связь модулей и пунктов меню. вывод модулей на отдельных страницах

    Второй по важности общей настройкой я считаю привязку модулей к страницам сайта.

    По умолчанию в Joomla модули привязываются к пунктам меню. Это может вызывать некоторые затруднения у новичков в Joomla.

    Чтобы вывести модуль на отдельной странице, нужно сделать следующее:

    1. В менеджере меню создать новый пункт меню типа Материал (Статья) и выбрать для него статью, на страницу которой нужно привязать модуль. Это не обязательно должна быть статья. Это может быть и страница сайта другого типа. Здесь вы можете выбрать любой тип пункта меню.
    2. В настройках модуля, на вкладке Привязка к пунктам меню, выбрать пункт меню, который был создан в п.1.

    Вывод модулей joomla в разных частях сайта

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

    Advanced module manager – вывод модуля на страницах, не привязанных к пунктам меню

    Очень часто встречается ситуация, когда нужно вывести модуль только на некоторых страницах, которые не привязаны к пунктам меню. Например, вы хотите вывести модуль с баннером только на отдельных страницах каталога товаров, а к пункту меню привязан только верхний уровень каталога (обычная ситуация в Virtuemart). Это слабая сторона Joomla, т.к. стандартный функционал CMS не позволит вам сделать это.

    Да, если вы разработчик, и хорошо разбираетесь в шаблонах Joomla и PHP, то без труда сможете добавить нужную привязку в шаблоне Joomla. Но что делать всем остальным?

    На помощь придет стороннее расширение Advanced Module Manager. Оно улучшает менеджер модулей Joomla, добавляя новые различные варианты привязки модулей, а том числе и по URL страницы.

    Advanced Module Manager имеет две версии: бесплатную и коммерческую. Различие между ними в количестве разнообразных привязок. Подробнее прочитать про это расширение и сравнить его версии можно здесь.

    Что касается моего опыта – я крайне редко использую Advanced Module Manager, поскольку в нем есть и минусы. Такая широта функционала дает, в свою очередь, и гораздо бОльшую нагрузку. Поэтому не устанавливайте данное расширение бездумно. Используйте его только в том случае, на это действительно есть необходимость. И, однозначно, если вам нужно сделать всего 1-3 нестандартных привязки модулей, не стоит устанавливать такого монстра.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *