Вконтакте Facebook Twitter Лента RSS

Файловая структура расширения.

Здравствуйте, уважаемые читатели блога сайт. Эта статья посвящена новичкам в сайтостроении. Когда ты сам уже давно прошел этот этап (имеющий место быть в становлении абсолютно любого вебмастера), то кажется, что все и так понятно.

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

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

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

Как связаны сайт на Joomla и админка этой CMSОбщедоступную версию сайта на Джумле (или любом другом движке) мы как бы формируем с нуля — устанавливаем шаблон, наполняем материалами, добавляем модули с меню и прочими необходимыми инструментами. Эта версия сайта будет такой, какой вы захотите сделать ее сами. По началу же, сразу после установки движка (если вы не ставили демо-данные), это будет что-то совсем неприглядное (название сайта, пару пунктов меню — пустой стеллаж для ваших мыслей, выплеснутых на просторы интернета).
  • Скрытая от всех кроме вас (и тех, кого вы посчитаете нужным туда пустить, например сотрудников вашей компании, вашей второй половинки или еще кого-то) часть называется административной панелью или, в просторечье, админкой. Ее внешний вид и имеющиеся в ней инструменты унифицированы и будут изначально одинаковы для всех, кто решит создавать свой сайт на движке Джумла.Зачем нужна админка? Для того, чтобы вам не нужно было лазить по файлам вашего сайта и вносить в них тексты ваших статей. Админ-панель позволяет работать с сайтом так же просто, как вы работаете с Вордом (во всяком случае в тех аспектах, которые касаются добавления статей). Ну, еще и тысячи других возможностей предоставляет админка, о которых мы обязательно поговорим. Однако, суть работы с ней (логику) нужно постичь, ибо в этом кроется ключ к ее освоению и успешному использованию.
  • Не смотря на то, что основной безусловно является та часть вашего сайта, которая будет доступна всем — в админке вы будете проводить практически сто процентов своего времени, отведенного вами на работу с вашим интернет-проектом.

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

    Как попасть в админку Joomla 3 ? Довольно просто. Достаточно добавить к Урл адресу главной страницы вашего сайта через слеш «administrator». Если бы мой блог работал под управлением этого движка (на самом деле, у меня WordPress), то для доступа к административной панели достаточно было бы в адресной строке набрать:

    Https://сайт/administrator/

    Если вы подключитесь к своему сайту по Фтп (или зайдете в папку локального сервера), то в корне (это то место, куда вы попадаете сразу после подключения) действительно найдете папку «administrator», а внутри нее файл index.php, который и запускает админку. Все по-честному.

    Php»? Можно и так, но вовсе не обязательно. Дело в том, что веб-сервер (это программа, работающая на реальном или локальном хостинге) при обращении к папке будет пытаться найти в ней файлик index (с расширением php или html), чтобы его и открыть. С этим, кстати, связан неприятный момент (читайте по ссылке, как с этим можно и нужно бороться).

    Собственно, и при вводе в адресную строку браузера Урл адреса главной страницы своего сайта также идет обращение к реальному файлу. И он опять же называется index.php, но живет уже в самом корне сайта (на том же уровне, что и папка administrator). Это как раз и есть классический пример появления зеркал (например, по двум Урлам https://сайт и https://сайт/index.php будет открываться одна и та же страница — почему это плохо, читайте по приведенной в предыдущем абзаце ссылке).

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

    Для пущей безопасности работы с сайтом можно использовать различные плагины, позволяющие, например, спрятать вашу админку. Т.е при переходе по адресу «http://vashdomen.ru/administrator/» предложения ввести пароль не последует. Для входа в админку нужно будет использовать путь, который вам укажет плагин. В данном случае я описал работу плагина jsecure , но существует и масса других вариантов, например, создание еще одной пары логина и пароля, которые потребуется вводить после официального входа от Joomla. Но не суть.

    Оборотная сторона сайта на основе Joomla (зазеркалье)

    Итак, мы очутились в святая-святых Джумлы — в админке. Доступ сюда имеете только вы и те, кому вы эту привилегию предоставили (можно назначить разные уровни доступа, при которых будут доступны разные наборы возможностей админки). Если вы работали ранее с , то никаких особых вопросов у вас не возникнет, ибо в «тройке» и «двойке с половиной» общая суть и с тех пор не поменялись. Добавилось удобства, красивостей и безопасности. Разница заключается в нюансах, о которых я не премину упомянуть.

    Как устроена админка Джумлы 3?

    Если же вы вообще никогда с Джумлой дела не имели, то придется немного поднапрячься, чтобы понять суть ее устройства. В общем-то, это не сложно, но для человека, никогда с ЦМС дела не имевшего, логика ее работы может оказаться не очевидной. Сужу я, конечно же, по себе, но вы можете оказаться куда более сообразительными. Тем не менее продолжу в расчете на то, что вы новичок . Остальных прощу меня простить за излишние подробности. Спасибо.

    Главная страница админки Джумла 3 похожа на то, что мы видели в версии 2.5 и даже 1.5 (ее сейчас уже официально не поддерживают, что может сказываться на безопасности). Собственно, про чехарду вы можете почитать по ссылке. Если говорить кратко, то пока не выйдет 3.5, самой стабильной будет считаться 2.5. Все версии 3.х являются предварительными и далеко не все расширения вы сможете на них установить (например, любимый в рунете пока с трешкой не дружит, а вот дружит).

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

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

    Если вы будете находиться не на главной странице админки, а перейдете по одному из пунктов верхнего меню, то в левом меню будут отображаться относящиеся к нему «быстрые ссылки» , что опять же ускоряет процесс работы над сайтом в Джумле 3. Например, при переходе на вкладку создания нового пользователя, слева будет отображаться меню со всеми необходимыми вам в этом нелегком деле «быстрыми ссылками»:

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

    Ан нет. Еще на скриншоте отображено замечательное изменение, которого лично мне не хватало в версии 1.5 — возможность автоматического обновления Joomla до последней актуальной версии простым нажатием кнопки в админ-панели. Раньше это делать приходилось , сейчас же даже прямо из админки (с небольшими нюансиками). Красота. Вот я как раз и обновлюсь до новой версии 3.3.3.

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

    Что интересного есть в админке Joomla 3 ? За что хвататься в первую очередь? Что важно, а что второстепенно? Почему так много всего и что с этим всем делать? Как, наконец, создать страницу, меню, добавить картинку или видеоролик? Ну, совершенно не понятно, глядя на всю этому путницу пунктов меню в админке. По крайней мере таково было мое личное впечатление от первого «боестолкновения» с административной панелью Джумлы.

    Давайте начнем с ориентации в смысле того, чтобы понять, как вернуться к начальной точке , а именно на главную страницу админки, если вы глубоко закопались в настройках чего-либо (хотя я и упоминал, что куда угодно можно попасть из верхнего меню, которое для всех страниц админки остается неизменным). Для этого служит эмблемка Джумлы, расположенная в левом верхнем углу, а также пункт верхнего меню «Система» — «Панель управления».

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

    Изначально, правда, ваш сайт будет представлять из себя жалкое зрелище, но уже после его наполнения и структурирования все станет «голубым и зеленым» (в смысле, прекрасным) и ваша душа станет «петь и ликовать». Но для достижения этого придется потрудиться.

    Что можно cразу поменять в общих настройках Joomla 3?

    Имеет смысл сразу же перед началом работы изменить некоторые общие настройки Джумла. Давайте попробуем это сделать. Попасть в них можно из верхнего меню: «Система» — «Общие настройки». Вот прям на этом месте становится очень страшно, ибо их тут жуть как много (и это только на одной из пяти возможных вкладок — «Сайт», а что будет на других даже представлять не хочется):

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

    Итак, во-первых, вы можете тут поменять название сайта, которое придумали при установке движка (могли ведь поторопиться или просто написать что-нибудь «от балды», лишь бы отстали). Здесь же можно будете поменять в одноименном поле настроек (с помощью него вы сможете форматировать тексты добавляемых статей). Правда, плагин нового редактора вам предварительно придется установить, а уже потом заходить в общие настройки и выбирать из выпадающего списка «Редактор по умолчанию». В общем-то, и встроенный TinyMCE имеет большой функционал, но его нужно будет настроить (думаю, что об этом еще поговорим отдельно).

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

    Поначалу эта зараза все нервы истрепала, ибо стоило мне перестать проявлять активность в админке на срок более чем 15 минут (отвлекся на почту, пошел чайку попить и т.п.), то меня за раз выбрасывало из админки и приходилось вновь залогиниваться и искать место моего последнего пребывания в недрах админки. Нить проводимых действий обрывалась, а с учетом того, что я на тот момент и так вел себя как «слепой котенок» (не всегда мог вспомнить, как на эту страницу настроек я попал) — позитива данное обстоятельство в работу не вносило.

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

    Категории и материалы — что это и как ими пользоваться

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

    Статьи в Джумле добавляются на вкладке «Материалы» — «Менеджер материалов» . Но не торопитесь туда идти, ибо сначала нужно будет подготовиться. Что я имею в виду? Если говорить языком обывателя, то нам нужно заготовить папочки, где мы эти самые статьи будет хранить. И не только хранить. Joomla имеет замечательные инструменты для показа всего содержимого этих папочек (в виде списка или в виде небольших анонсов) пользователям, зашедшим на ваш сайт. Это очень удобно и мы об этом будет подробно говорить.

    Для создания этих самых папочек нам нужно выбрать вкладку «Материалы» — «Менеджер категорий» . Раньше в Джумле 1.5 можно было создавать папочки только двух уровней вложенности — здоровые папки под названием Разделы, в которых могли располагаться папки поменьше — Категории.

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

    Итак, заходим в «Материалы» — «Менеджер категорий» — «Создать» и открываем счет категориям на своем сайте. Фактически, этим самым вы определяете структуру вашего будущего сайта — группируете будущие материалы, которые будут на нем размещаться. Эту структуру потом можно будет использовать в меню на сайте для того, чтобы вашим посетителям было бы проще в нем ориентироваться.

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

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

    Создание категорий и подкатегорий в Джумле

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

    Поле «Алиас» (псевдоним) не изменило своего назначения со времен Джумлы 1.5 и позволяет подкорректировать Урл адрес того пункта меню, который будет ссылаться на данную категорию (при этом можно использовать символы ,,,[_],[-]).. Если это поле не заполнить, то система сама категории и использует это в Урл адресе (получится примерно так — «https://сайт/novsti»).

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

    Сохранять произведенные изменения теперь можно с помощью аж целых трех кнопок (в Joomla 1.5 было только два варианта):

  • Сохранить — вы сохраните внесенные изменения и при этом так и останетесь на этой же странице
  • Сохранить и закрыть — изменения сохранятся, а вас перебросит на уровень выше (в нашем случае в Менеджер категорий)
  • Сохранить и создать — после сохранения откроется окно создания новой категории. Удобно при создании всей структуры категорий на вашем сайте.
  • Естественно, что при создании дочерних категорий (подкатегорий) нужно будет еще выбирать родительскую категорию (в нашем примере «Новости»), внутри которой она будет в дальнейшем жить.

    Если вы внимательно присмотритесь к выпадающему списка, то заметите там категорию с названием «Uncategorised» . Вы ее не создавали — так откуда же она взялась? Все очень просто. Эту виртуальную категорию создала сама Joomla 3 и в ней будут храниться статьи, которые вы не решитесь отнести к какой-либо категории. Это может быть, например, страница с контактами, схемой проезда и тому подобное. Все они будут жить в Uncategorised.

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

    Там же вы найдете и Uncategorised (без категорий). Если захотите в уже созданных что-то отредактировать, то просто кликните по их названию. Для удаления лишних категорий достаточно будет поставить галочку (слева от их названия) и нажать на кнопку «В корзину», расположенную сверху. А как попасть в эту самую корзину ? Например, чтобы удалить оттуда все окончательно или восстановить случайно удаленное.

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

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

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

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

    Лучше один раз увидеть, чем сто раз услышать — не правда ли? Мне вот тоже так кажется, посему предлагаю вам посмотреть 15 уроков по быстрому старту на Joomla 3 . Они будут воспроизводиться один за другим автоматом, а если хотите, то можете переключаться на следующий урок с помощью соответствующей кнопки на панели плеера или выбрать нужный урок из выпадающего меню в верхнем левом углу окна плеера:

    Приятного просмотра!

    Удачи вам! До скорых встреч на страницах блога сайт

    Вам может быть интересно

    Сайт на Joomla стал выдавать кучу ошибок типа - Strict Standards: Non-static method JLoader::import () should not be called statically in
    Создание карты для сайта на Joomla с помощью компонента Xmap
    Модули в Joomla - просмотр позиции, настройка и вывод, а так же назначение суффиксов класса
    Обновление Joomla до последней версии
    Контакты для сайта и форма обратной связи с помощью встроенного компонента Joomla
    Расширения для Joomla - что это такое и где скачать компоненты, модули и плагины для Джумлы, как их устанавливать и удалять
    Компонент K2 для создания блогов, каталогов и порталов на Joomla - возможности, установка и русификация
    Что такое Joomla
    CMS Joomla - принципы работы бесплатной системы управления контентом, создание страниц и их кэширование

    В этом уроке мы создадим простой компонент, который строчку «Hello!» в браузере.
    Перед тем, как начать создавать компонент, у Вас на сервере должна быть установлена CMS Joomla 1.5. Если Вы еще не установили, то это можно сделать с помощью уроков в разделе «Установка Joomla ».

    В этом уроке сначала создадим папку компонента под названием com_hello, в которую нам нужно добавить пять файлов:
    site/hello.php - точка входа в наш компонент;
    site/controller.php - содержит наше основное управление компонентом (Контроллер);
    site/views/hello/view.html.php - обрабатывает данные и передает их в шаблон для вывода;
    site/views/hello/tmpl/default.php - шаблон для вывода данных;
    hello.xml- XML служит для передачи инструкций для Joomla по установке компонента.

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

    CMS Joomla всегда обрабатывает ссылку в корневом файле index.php для страниц Front End (сайт) или administrator/index.php для страниц Back End (админ-панель). Функция обработки URL загрузит требуемый компонент, основанный на значении "option" в URL (метод GET) или переданных данных методом POST.

    Для нашего компонента, URL выглядит так:
    index.php?option=com_hello&view=hello

    Это означает, что если пользователь введет в браузере строчку http://имя сайта/index.php?option=com_hello&view=hello, то переменная «option» получит значение «com_hello&view=hello».

    http://имя сайта/components/com_hello/hello.php.

    Код для этого файла довольно типичен для всех компонент:

    Примечание к коду:

    JPATH_COMPONENT – это абсолютный путь к текущему компоненту; в наше случае - components/com_hello.
    Для Front End - JPATH_COMPONENT_SITE
    Для Back End - JPATH_COMPONENT_ADMINISTRATOR
    DS означает автоматический выбор слеша (разделителя директорий) "\" или "/".
    JRequest:getVar() находит переменную в URL (или в данных POST). Например, наш URL может выглядеть так index.php?option=com_hello&controller=controller_name, тогда мы можем получить имя нужного нам контроллера, используя:
    echo JRequest::getVar(“controller”).

    Сейчас мы используем наш базовый контроллер-класс HelloController в com_hello/controller.php. При необходимости, добавляем контроллер HelloControllerController1 из com_hello/controllers/controller1.php.

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

    Теперь мы инструктируем контроллер исполнить задачу, которая определена в URL: index.php?option=com_hello&task=sometask. Если нет определения задачи, то по умолчанию будет задача "display". Когда используется задача "display" , переменная "display" укажет то, что выводить. Пример стандартных задач - save, edit, new...

    На последней строке кода контроллер переадресовывает страницу. Обычно используется для таких задач как SAVE.

    Главная точка входа (hello.php) пропускает управление на контроллер, который обрабатывает выполнение задачи, которая была определена в запросе.

    Создание Контроллера

    Так как наш компонент имеет только одну задачу (вывод «Hello»), то он будет очень прост. Никакой манипуляции данными не требуется. Все что нужно сделать, это загрузить необходимый view. Поэтому, мы будем иметь только один метод в нашем контроллере: view (). Большинство требуемых функциональных возможностей уже встроено в JController класс. Потому мы должны только вызывать метод JController:: view ().

    Код основного контроллера site/controller.php такой:

    Конструктор JController будет всегда по умолчанию регистрировать задачу display() используя метод registerDefaultTask(), если не определена другая задача. В самом деле, метод display() не нужен после того, но в нашем случае он есть хорошей демонстрацией того, что делает контроллер.

    Метод JController:: display() метод определит имя view и шаблон из запроса, потом загрузит view и установит шаблон. Когда Вы создаете пункт меню для вашего компонента, менеджер меню позволит администратору выбирать задачу с которой начинать выполнение компонента.

    В нашем компоненте, view имеет единственное значение - hello и шаблон имеет единственное значение - default (по умолчанию).

    Создание вида (view)

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

    К од Вида в файле site/views/hello/view.html.php следующий:

    Создание шаблона

    Joomla шаблоны являются файлами PHP, которые создают вид данных. Переменные, переданные с помощью метода JView::assignRef можно получить из шаблона с помощью $this->propertyname.
    В нашем простом шаблоне site/views/hello/tmpl/default.php мы только выводим на экран приветствие.

    greeting; ?> Создание hello.xml

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

    Но лучше создать xml файл, и тогда Установщик Joomla все сделает за вас. XML файл может содержать разнообразную информацию и инструкции по установке:

    • Общую информацию о компоненте и авторе.
    • Список файлов, которые нужно скопировать из архива, с указанием куда копировать;
    • По-необходимости можно добавить скрипты сопровождающие установку и удаление компонента;
    • По-необходимости можно добавить файлы с sql-запросами, которые будут выполняться при установке и удалении компонента.

    Наш XML файл выглядит так:

    Hello 2007 02 22 Имя Автора author собачка mail.net http://www.autor.net Копирайт Лицензия Component Version String Description of the component ... index.html hello.php controller.php views/index.html views/hello/index.html views/hello/view.html.php views/hello/tmpl/index.html views/hello/tmpl/default.php Hello World! index.html admin.hello.php

    Создайте также в каталоге admin файлы admin.hello.php и index.html. Оставьте их пока пустыми.
    Как Вы заметили, каждая папка имеет файлы index.html (рис. 2.1). Файлы index.html помещают в каждый каталог, чтобы препятствовать пользователям получать листинг каталога.
    Эти файлы содержат одну единственную строку:

    С помощью этих файлов будет отображаться пустая страница.
    У нас получился простейший компонент.

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

    Outdated translations are marked like this.

    There are also a number of videos which accompany steps in the tutorial, beginning with
    Step 1, Developing a Basic Component and you can access the slides which are used in the series of video presentations at Slides .

    Important! Around version 3.8 the Joomla developers started changing the naming of Joomla classes and where they were stored in the directory structure. Many of the tutorial steps and videos refer to the old naming convention. To find the equivalent new class and where it"s stored, look in your libraries/classmap.php file.

    Как добавить компонент на Joomla! ==!Н!В данной статье мы рассмотрим, как создать и установить базовый компонент на Joomla! . В этом примере мы будем работать с компонентом Hello World!.

    Чтобы начать, вы должны сначала использовать нужный файл менеджер для создания каталога для компонента Hello World! . Этот каталог может быть где угодно в файловой системе, пока это за пределами вашего Joomla! директорию. В этом примере мы назовем каталоге com_helloworld , но эта директория может называться как угодно.

    1 это XML-файл (манифест) файл, который говорит Joomla! как установить наш компонент.
    2 это сайт точка входа для компонента Hello World!
    3
    4 предотвращает листинг из веб-сервера содержимого директории
    5 это точка входа администратора в компонент Hello World!
    6 предотвращает листинг из веб-сервера содержимого директории
    7 предотвращает листинг из веб-сервера содержимого директории
    8 предотвращает листинг из веб-сервера содержимого директории
    9 файл, позволяющий инициализировать версию схемы компонента com_helloworld.

    Установка Компонента Hello World! ===!Н!Используя ваш любимый файловый менеджер, создайте.zip файл из этого каталога. В данном примере мы будем использовать Имя файла com_helloworld.zip снова, хотя этот файл можно было назвать как угодно.

    Теперь нам нужно установить компонент Hello World!. Есть два способа сделать это, оба показаны в Установке расширения . Здесь мы рассмотрим способ с использованием диспетчера расширений для Joomla!.

    • Используя ваш любимый веб-браузер, перейдите в панель администратора вашего Joomla! сайт. Адрес, например, /joomla/administrator/index.php . Для этого примера мы будем ориентироваться на localhost/joomla/administrator/index.php .!Н!
    • Выберите дополнительные модули Extensions → Manage → Install → Upload Package File → Choose File!Н!
    • Перейдите и выберите файл!Н!
    • Нажмите Кнопку " Загрузить & Установить

    Примечание - Вы должны увидеть сообщение, показывающее, что установка выполнена успешно.

    Вы можете протестировать основные функции компонента, введя Hello World! страницы для сайта и административной части вашего Joomla! сайта.!Н!

    • Используя ваш любимый веб-браузер, перейдите к Hello World! компонент страницы, расположенной на части вашего сайта. Адрес бы /joomla/index.php?option=com_helloworld . Для этого примера мы будем ориентироваться на localhost/joomla/index.php?option=com_helloworld .!Н!
    • Используя ваш любимый веб-браузер, перейдите к странице компонента Hello World!, расположенной в административной части вашего сайта. Адрес бы /joomla/administrator/index.php?option=com_helloworld . Для этого примера мы будем ориентироваться на localhost/joomla/index.php?option=com_helloworld .

    Вы можете также заметить, что компонент Hello World! виден в административной части сайта после установки Joomla в подменю "компоненты".

    Файл Детали

    admin/sql/updates/mysql/0.0.1.sql файл, позволяющий инициализировать версию схемы компонента com_helloworld.

    helloworld.xml

    Hello World! January 2018 John Doe [email protected] http://www.example.org Copyright Info License Info 0.0.1 Description of the Hello World component ... sql/updates/mysql index.html helloworld.php Hello World! index.html helloworld.php sql

    site/helloworld.php

    Понравилось:
    16



    Не понравилось: 0

    Недоступен ни один перевод.

    Создание главного каталога компонента - com_megashop

    Итак, создаем где-нибудь на локальном диске каталог com_megashop, а внутри него каталоги site , admin , media , а также два пустых файла - index.html и megashop.xml . В итоге получится вот такая картинка:

    Создание файлов и каталогов для backend-части компонента

    Теперь заходим в каталог admin и создаем следующие каталоги:

    • controllers - тут будут храниться файлы с классами контроллеров back-end части
    • css - для хранения файлов CSS-стилей, используемых для отрисовки элементов компонента внутри админки Joomla
    • help - для хранения справки для нашего компонента (на разных языках). Понадобится, если мы захотим написать инструкцию по использованию компонента
    • helpers - для хранения классов-помощников
    • language - здесь будут размещаться языковые файлы компонента
    • models - сюда будем помещать модели для административной части
    • sql - в этом каталоге будут храниться файлы с SQL-запросами для создания всех таблиц компонента в базе данных Joomla
    • tables - тут будут располагаться классы для работы с таблицами компонента
    • views - тут будут храниться файлы представлений, которые будут рисовать всё, что мы увидим в админке Joomla - относительно нашего компонента

    После создания каталогов создадим пустые файлы:

    • access.xml - файл прав доступа для компонента для разных категорий пользователей
    • config.xml - файл всех параметров нашего компонента
    • controller.php - файл главного контроллера административной части
    • index.html - индексный файл, который предотвратит отрисовку содержимого каталога, если умный пользователь напрямую пропишет путь к админ-каталогу компонента
    • megashop.php - "входная" точка админ-части компонента. Его Joomla вызовет в первую очередь, когда мы будем обращаться через админку к компоненту

    Созданные каталоги и файлы выглядят у меня вот так:

    Создание файлов и каталогов для frontend-части компонента

    Теперь переходим снова на уровень выше и заходим в созданный нами в начале каталог site. Там потребуется создать каталоги и файлы:

    • css - для хранения файлов CSS-стилей, предназначенных для отрисовки компонента на сайте. Это все стили, которые и будут формировать внешний "облик" компонента - то, что увидит пользователь сайта.
    • js - сюда будем помещать все JavaScript-файлы скриптов, jQuery-библиотеки, плагины jQuery и т.д., словом всё, что относится к скриптам. Они будут выполнять всю динамическую логику на стороне браузера, когда пользователь будет работать с частями компонента на сайте.
    • language - сюда поместим файлы локализации - с сообщениями, которые будут встречаться в нашем компоненте.
    • models - здесь будут храниться файлы моделей для frontend-части компонента
    • views - тут будут размещены файлы представлений, которые отрисуют разные части нашего компонента на сайте
    • controller.php - файл главного контроллера для frontend-части
    • index.html - индексный файл, который предотвратит отрисовку содержимого каталога, если умный пользователь напрямую пропишет путь к frontend-каталогу компонента
    • megashop.php - "входная" точка frontend-части компонента. С неё всегда начинается исполнение компонента, когда пользователь работает с частями компонента на сайте Joomla

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

    Создание каталога изображений - media/images

    Снова выходим на уровень "вверх" и переходим к созданному каталогу media . Внутри него потребуется создать вложенный каталог images и пустой файл index.html. Получится следующее:

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

    Кодировка файлов

    На данный момент, как вы заметили, мы создали просто "заглушки" - пустые файлы. Наполнять мы их будем позже. Но во избежание дальнеших проблем с кракозябрами я сразу хочу сказать вам, в какой кодировке вы должны набирать код всех классов и примеров, которые будут встречаться - это кодировка UTF-8 . Joomla является мультиязычной системой, т.е. CMS системой, поддерживающей множество языков - вплоть до китайского с его иероглифами. Кодировка UTF-8 (в отличие например от windows-1251) способна поддерживать наборы языковых символов, встречающихся во всех странах мира. Для того, чтобы явно указать кодировку, достаточно установить любой редактор кода (например, Notepad++). Лично я пользуюсь очень хорошим редактором EditPlus (он платный), однако вам подойдет любой, поддерживающий сохранение файлов в кодировке UTF-8

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


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

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

    Файловая структура расширения

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

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

    Общая файловая структура расширения

    Чаще всего все основные файлы существующего в CMS Joomla! расширения находятся в одной папке. Например, для плагина это может быть папка plugins/system/sef , для модуля modules/mod_articles_news , для шаблона templates/protostar и т.д. Для сборки инсталляционного пакета расширения необходимо скопировать все его файлы в отдельную папку. Желательно ее назвать в соответствии с именем самого расширения.

    Также в корневой директории установочного пакета могут содержаться дополнительные файлы и папки. Например, media – папка, использующаяся для хранения css стилей, изображений, js скриптов и т.д., которые используются в расширении. Она может содержать соответствующие подпапки css , images , js и др. Содержимое media директории описывается специальным тегом в установочном файле манифеста расширения (см.) и копируется при установке в папку media/[имя_расширения] .

    В папке language размещаются языковые файлы расширения, которые могут копироваться в системную языковую директорию. Языковые файлы в папке language необходимо размещать в подпапках с именами, соответствующими тегам их языков. Например, в папке language/en-GB размещаются языковые файлы для английского языка, в language/ru-RU – русского и т.д.

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

    Файловая структура компонента для CMS Joomla!

    Главным отличием компонента от других расширений Joomla! является наличие отдельной пользовательской и административной части. При создании установочного пакета принято создавать в его корне папки admin и site для размещения в них файлов и папок административной и пользовательской части компонента соответственно. В папку admin копируется структура, которая расположена или планируется располагаться в папке administrator/components/[имя_компонента] в CMS Joomla!. Папка site при этом будет содержать все файлы и папки из components/[имя_компонента] .

    Файл манифеста инсталляционной сборки компонента должен обязательно находиться в его корневой директории и называться [имя_компонента].xml , хотя после инсталляции он будет скопирован в административную директорию компонента. Также в корневую директорию помещается папка media, если она используется в компоненте.

    Папка sql при сборке компонента обязательно должна находиться в директории admin , а папки language создаются отдельно в admin и site для административной и пользовательской части сайта отдельно. Их внутренняя структура аналогична той, что описана в общем случае.

    Создание файла манифеста

    Файл манифеста должен быть расположен в корне установочного пакета и иметь название manifest.xml или [имя_расширения].xml . Правильное описание тегов в файле манифеста позволит скопировать все файлы и папки расширения в соответствующие каталоги CMS Joomla!, выполнить обновление структуры в базе данных, добавить информацию о расширении в CMS, легко обновлять расширение в дальнейшем и т.д.

    Корневой элемент

    Корневым элементом файла манифеста является . Этот элемент заменил старый корневой элемент , который использовался в Joomla! 1.5. Корневой тег может содержать ряд атрибутов, список которых приведен ниже:

    Атрибут Значение Тип расширения Краткое описание
    type
    • component (компонент)
    • file (файл)
    • language (языковой пакет)
    • library (библиотека)
    • module (модуль)
    • package (пакет из нескольких расширений)
    • plugin (плагин)
    • template (шаблон)
    Все типы Этот атрибут описывает тип расширения для инсталлятора. Основываясь на этом типе по разному могут формироваться внутренние теги в файле манифеста.
    version Все типы Определяет версию Joomla!, для которой разрабатывается это расширение.
    method
    • install
    • upgrade
    Все типы Если атрибут имеет значение install, то установщик прервет свою работу, если обнаружит в Joomla! существующий файл или папку устанавливаемого расширения. Если же атрибут имеет значение upgrade, то при повторной установке расширения установщик заменит существующие файлы и выполнит другие действия по обновлению расширения, указанные далее в файле манифеста.
    client
    • administrator
    Модули Этот атрибут позволяет определить в какой части сайта (клиентской или административной) будет доступен устанавливаемый модуль.
    group Строка Плагины Атрибут должен содержать название группы для устанавливаемого плагина (system, user, content и т.д.). Название должно совпадать с соответствующей директорией в папке plugins, в которую и будет установлен плагин.
    Информация о расширении и разработчике

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

    • – системное имя расширения с префиксом (например, com_banners , mod_login)
    • – имя автора (например, BoxApp)
    • – дата создания расширения или выхода новой версии (например, 22.11.2014)
    • – заявление об авторском праве (например, © 2014 - 2015 BoxApp. Все права защищены.)
    • – лицензионное соглашение (например, GNU General Public License version 2 or later)
    • – e-mail адрес автора (например, info@сайт)
    • – ссылка на сайт автора (например, http://сайт)
    • – номер версии расширения (например, 1.2.0)
    • – описание расширения. Этот параметр использует стандартный механизм Joomla! для перевода текста на разные языки, поэтому можно в качестве значения использовать языковую константу. Например, COM_EXAMPLE_XML_DESCRIPTION .

    Значение тега также используется для перевода на разные языки, как и . Вы можете добавить аналогичную имени расширения константу в языковые файлы расширения (например, COM_EXAMPLE) для его перевода.

    Файлы и папки расширения

    Чтобы при установке были скопированы файлы и папки расширения, необходимо заполнить блок в файле манифеста. Например, для модуля Joomla! этот блок может иметь следующий код:

    language tmpl [имя_модуля].php helper.php index.html [имя_модуля].xml

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

    controllers helpers models views [имя_компонента].php controller.php index.html metadata.xml router.php

    Здесь в качестве атрибута folder тега указана директория site , соответственно в ней должны быть расположены папки, указанные во внутренних тегах (controllers , helpers , models , views) и файлы, указанные с помощью тегов ([имя_расширения].php , controller.php , index.html , metadata.xml , router.php). При этом внутренняя структура папок, указанных в тегах будет полностью скопирована вместе со всеми вложенными папками и файлами. В случае с компонентом вся указанная в теге структура папок и файлов будет скопирована в директорию components/[имя_компонента] .

    Медиа файлы

    В структуре CMS Joomla! для медиа файлов отведена отдельная папка в корне с названием media . Именно в нее инсталлятор производит копирование медиа файлов расширения, которые указываются в теге . При этом, расположение файлов в медиа папке расширения соответствует определенной структуре. В корневой директории установочного пакета создается папка media . В ней должны быть расположены подпапки, если в расширении используется соответствующий тип файлов: css (для css файлов стилей), images (для хранения изображений) и js (для скриптов, использующихся в расширении). Кроме этого в папке media могут быть расположены и другие подпапки и файлы, использующиеся в работе расширения. Блок с тегом в файле манифеста может иметь следующий вид:

    css images js index.html

    В примере выше атрибуты тега определяют:

    • folder – имя папки в корневой директории инсталляционного пакета, в которой расположены подпапки и файлы из тегов и
    • destination – имя папки расширения, в которую будет скопирована указанная ниже структура папок и файлов. Например, com_example для компонента, mod_example для модуля, plg_system_example для системного плагина.

    В итоге медиа файлы и папки, указанные в теге будут скопированы из папки madia установочного пакета по пути media/[имя_расширения] .

    Языковые файлы

    В Joomla! 1.5 использовался подход, когда языковые файлы расширения при его установке копировались в системную папку CMS для хранения языковых файлов пользовательской части сайта language , или его административной части administrator/language . Поддержка работы этого подхода осталась и в следующих версиях Joomla! включая 3.x. Чтобы воспользоваться этим подходом, необходимо разместить тег в корневом теге файла манифеста, внутри которого нужно указать теги для каждого из языков, поставляемых вместе с расширением в инсталляционной сборке. Например, этот блок может иметь следующий вид:

    en-GB.[имя_расширения].ini ru-RU.[имя_расширения].ini

    При этом языковые файлы должны быть расположены в папке language , а их имена обязательно должны соответствовать названию расширения вместе с префиксом, соответствующим его типу (например, com_example , plg_system_example , tpl_example и т.д.). При установке расширения Joomla! эти файлы будут скопированы в один из подкаталогов папки language , название которого соответствует указанному в теге атрибуту tag . Например, файл из установочного пакета language/en-GB.[имя_расширения].ini будет скопирован в папку Joomla! по пути language/en-GB/en-GB.[имя_расширения].ini в корневой директории Joomla!.

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

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

    Для автоматического подключения языковых файлов из папки расширения их необходимо расположить в соответствии с определенной структурой. Для пользовательской и административной части сайта эта структура одинакова, если речь идет о компоненте. Все языковые файлы размещаются в папке с именем, соответствующим языковому тегу (атрибуту tag) внутри директории language . Например, language/en-GB . И так для каждого из языков, поставляемых в установочном пакете расширения. Папка language должна быть расположена в корне инсталляционной сборки, а в теге манифеста нужно добавить тег для этой папки:

    … language …

    При установке расширения папка language будет скопирована в директорию расширения вместе с другими его папками и файлами.

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

    language/en-GB/en-GB.[имя_расширения].ini language/en-GB/en-GB.[имя_расширения].sys.ini language/ru-RU/ru-RU.[имя_расширения].ini language/ru-RU/ru-RU.[имя_расширения].sys.ini

    При этом языковые файлы будут также скопированы в системную директорию language и удалены из нее при удалении расширения администратором сайта. Изменения, внесенные в языковые файлы расширения в системной директории, будут иметь приоритет над значениями в папке расширения. При этом sys.ini файл подключается всегда из системной директории в административной части расширения, за исключение случая, когда расширение устанавливается и в его составе есть папка language с соответствующим sys.ini файлом. Только в этом случае будут использоваться значения языковых констант sys.ini файла из папки расширения. Эта особенность может быть использована, если разработчик расширения хочет иметь два варианта перевода для констант в sys.ini файле, которые используются, например, для показа сообщения о успешной установке расширения (при установке) и его обычного описания.

    Настройки

    Компоненты не поддерживают настройки в файле манифеста. Это устаревший подход, который присутствовал в Joomla! 1.5. Для добавления настроек в компонент используется отдельный файл config.xml . Он помещается в корень административной директории при установке компонента и указывается в теге внутри тега вместе с другими файлами и папками для административной части компонента.

    Блок является дочерним для корневого тега файла манифеста и отвечает за описание настроек для расширения, которые можно указать в административной части сайта. Настройки расширений в основном расположены в менеджере для управления соответствующим типом расширений Joomla! (например, Менеджер плагинов, Менеджер модулей или Менеджер шаблонов). В официальной документации указывается, что настройки расширения могут быть указаны в отдельном файле расширения, который должен называться config.xml и иметь корневой элемент , но на практике этот подход работает только для компонентов. Для остальных типов расширений Joomla! блок нужно размещать в файле манифеста.

    Первым дочерним тегом у должен быть (необязательно для компонентов), который в свою очередь может содержать один или более дочерних тегов , которые будут отображаться в виде отдельных вкладок в HTML коде станицы настроек данного расширения, и будут служить контейнерами для групп полей формы с настройками расширения. В атрибуте name тега можно указать имя вкладки. Атрибуты label и description используются для указания названия и краткого описания вкладки, и могут содержать языковые константы в качестве значений. Если атрибут label не указан, то языковая константа будет сформирована автоматически по шаблону COM_CONFIG_[имя_вкладки]_FIELDSET_LABEL (где имя_вкладки – это значение атрибута name) и достаточно будет лишь указать перевод в соответствующих языковых файлах расширения.

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

    Приведем пример конфигурационного файла компонента com_example .

    JSHOW JHIDE JYES JNO

    В этом примере описаны две группы настроек в тегах с именами base и permissions . Стоит обратить внимание на то, что все языковые константы, имеющие префикс COM_EXAMPLE_ , необходимо определить в sys.ini языковом файле расширения. Остальные константы являются системными и их можно использовать в любом месте расширения без необходимости их описания в языковых файлах. Значения этих констант для текущего языка будут выводиться из системных языковых файлов, если соответствующий язык установлен в CMS Joomla!.

    Приведем еще один пример блока для системного плагина sef .

    Административная часть расширения

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

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

    COM_EXAMPLE COM_EXAMPLE_SUBMENU_ANOPTION COM_EXAMPLE_SUBMENU_VIEWNAME

    В результате после установки компонента в пункт меню Компоненты основного меню Joomla! будет добавлен новый пункт и его подпункты в соответствии с указанными параметрами.

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

    Перечислим доступные в теге атрибуты:

    • link – ссылка, по которой перейдет пользователь, нажав на соответствующий пункт меню
    • img – относительный путь к файлу изображения, которое будет показано возле пункта меню (16x16 пикселей)
    • [текстовый_параметр] – произвольный параметр, который будет добавлен к запросу при формировании ссылки пункта меню. Например, нажав на пункт меню COM_EXAMPLE пользователь перейдет посылке index.php?option=com_example&view=cpanel .

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

    controllers helpers models sql tables views access.xml [имя_компонета].php config.xml controller.php index.html

    Вся структура папок и файлов вместе с их вложенными элементами будет скопирована по пути:

    Administrator/components/[имя_компонента]

    Как и корневой блок файла манифеста, блок может содержать вложенный тег с дочерними тегами для описания языковых файлов для административной части компонента. Здесь логика размещения и подключения языковых файлов аналогична той, которая описана выше в разделе . Наиболее современным является подход, когда языковые файлы для административной части сайта также включаются в состав компонента. При этом директория admin в корне установочного пакета должна содержать папку language , в которой языковые файлы имеют аналогичные имена и так же расположены в подпапках с названием тега языка. Для копирования директории language соответствующий тег должен содержаться в родительском теге , а при описании языковых файлов в теге они также будут добавлены в системную директорию (для административной части это administrator/language).

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

    ... controllers helpers language models sql tables views access.xml [имя_компонета].php config.xml controller.php index.html language/en-GB/en-GB.[имя_компонента].ini language/en-GB/en-GB.[имя_компонента].sys.ini language/ru-RU/ru-RU.[имя_компонента].ini language/ru-RU/ru-RU.[имя_компонента].sys.ini …

    В файле sys.ini при этом, чаще всего описываются следующие языковые константы:

    • название и описание компонента из тегов файла манифеста и
    • константы, содержащие названия пунктов меню
    • константы с названиями и описаниями полей формы настроек компонента, которые содержатся в файле config.xml

    Особенностью файла sys.ini является то, что он всегда подключается в административной части компонента вне зависимости от контекста. Соответственно в него имеет смысл помещать только те языковые константы, которые используются вне компонента (список выше). Остальные константы, которые используются непосредственно внутри устанавливаемого компонента, должны находиться в языковых ini файлах без суффикса sys (en-GB.[имя_компонента].ini).

    Стоит также обратить внимание, что для компонента файл config.xml должен находиться в корне директории admin и участвовать в описании файлов в теге , находящегося внутри блока , как в примере выше.

    Установочный SQL скрипт

    Стандартный инсталлятор в Joomla! позволяет выполнить произвольный sql скрипт при установке или удалении расширения в Joomla!. Для этого нужно написать соответствующие файлы с расширением sql и поместить их в папку sql в корне расширения. Например, пусть это будут файлы sql/example.install.sql , который будет выполняться при установке расширения, и sql/example.uninstall.sql , для выполнения sql при удалении расширения. Содержание этих sql файлов может быть, например, следующее:

    Для файла example.install.sql:

    CREATE TABLE IF NOT EXISTS `#__example_extension_table` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `ordering` int(11) NOT NULL DEFAULT "0", `state` tinyint(3) NOT NULL DEFAULT "1", PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    Для файла example.uninstall.sql:

    DROP TABLE IF EXISTS `#__example_extension_table`;

    Как видим, в инсталляционном файле создается новая таблица базы данных с именем #__example_extension_table , где префикс #_ будет заменен на префикс таблиц базы данных, указанный в настройках Joomla!, а при удалении расширения эта таблица будет удалена из базы данных.

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

    sql/example.install.sql sql/example.uninstall.sql ... sql ...

    Здесь элемент может содержать один или более дочерних элементов, каждый из которых описывает один sql файл. Его драйвер базы данных описывается в атрибуте driver , а кодировка в атрибуте charset .

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

    ... … sql … ...

    SQL скрипт для обновления

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

    sql/updates

    При этом в папке sql должна быть расположена подпапка updates , содержащая файлы обновления структуры и данных в базе данных приложения. Это должны быть sql файлы с названиями, точно соответствующими версии расширения. Например, если у пользователя установлено расширение 1.0.0 и он устанавливает расширение версии 1.1.0 , то в папке sql/updates должен находиться файл 1.1.0.sql с изменениями для этой версии.

    Инсталляционный php скрипт

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

    example.script.php

    Этот файл должен содержать класс с именем [имя_расширения]InstallerScript . Для плагинов обязательно необходимо включать имя группы (например, plgsystempluginname). Установочные пакеты библиотек не поддерживают выполнения php скриптов. Приведем структуру этого класса ниже вместе с доступными для определения функциями:

    Class [имя_расширения]InstallerScript { /** * Constructor * * @param JAdapterInstance $adapter The object responsible for running this script */ public function __construct(JAdapterInstance $adapter); /** * Called before any type of action * * @param string $route Which action is happening (install|uninstall|discover_install|update) * @param JAdapterInstance $adapter The object responsible for running this script * * @return boolean True on success */ public function preflight($route, JAdapterInstance $adapter); /** * Called after any type of action * * @param string $route Which action is happening (install|uninstall|discover_install|update) * @param JAdapterInstance $adapter The object responsible for running this script * * @return boolean True on success */ public function postflight($route, JAdapterInstance $adapter); /** * Called on installation * * @param JAdapterInstance $adapter The object responsible for running this script * * @return boolean True on success */ public function install(JAdapterInstance $adapter); /** * Called on update * * @param JAdapterInstance $adapter The object responsible for running this script * * @return boolean True on success */ public function update(JAdapterInstance $adapter); /** * Called on uninstallation * * @param JAdapterInstance $adapter The object responsible for running this script */ public function uninstall(JAdapterInstance $adapter); }

    Краткое описание функций:

    • __construct – конструктор класса
    • preflight – вызывается перед выполнением какого-либо рода действий
    • postflight – вызывается после выполнения какого-либо рода действий
    • install – вызывается при выполнении установки расширения
    • update – вызывается при выполнении обновления расширения
    • uninstall – вызывается при выполнении удаления расширения
    Сервер обновлений расширения

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

    Значением тега должен быть url адрес xml файла с описанием версий расширения, на основе которого CMS Joomla! сможет сделать вывод о необходимости обновления данного расширения. Приведем пример блока :

    http://сайт/updates/joomla/plugins/plg_content_disqusforcontent.xml

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

    Упаковка расширения

    Зачастую установочный набор файлов и папок расширения распространяется в виде zip архива. Его нужно упаковать так, чтобы файлы и папки, расположенные в корневой директории инсталляционной сборки (например, файл манифеста [имя_расширения].xml) находились в корне архива, а не в его подпапках (файловая структура в архиве аналогична созданной корневой директории инсталляционной сборки). Хорошей практикой считается называть архив, как и расширение вместе с префиксом (например, com_example.zip , plg_system_example.zip , tpl_example.zip и т.д.) в нижнем регистре.

    Инсталлятор Joomla! имеет внутренние механизмы, позволяющие предварительно распаковать инсталляционный архив во временную директорию сайта перед установкой, поэтому пользователь расширения может сразу использовать собранный архив для установки расширения. Исключение составляют расширения, которые требуют для работы другое расширение и поставляются вместе. Например, для работы компонента обязательно нужно установить вместе с ним плагин. В таких случаях установочный архив может называться com_example_UNZIPFIRST.zip или com_example_UNZIPME.zip . Перед установкой его нужно предварительно распаковать. Внутри такого архива часто расположены несколько других инсталляционных архивов других расширений и инструкция по их установке. Хотя более правильным способом выхода из ситуации, когда в составе инсталляционного пакета поставляется сразу несколько расширений Joomla!, считается сборка специального установочного пакета (package), который в свою очередь является расширением Joomla!, имеет отдельный файл манифеста, набор архивов расширений и устанавливается через Менеджер расширений Joomla!. Но про этот тип расширений и особенности их сборки стоит рассказать отдельно.

    Примеры

    Сообщество Joomla! очень большое, что позволяет найти большое количество готовых решений для данной CMS в виде расширений. Большое количество расширений Joomla! собрано и каталогизировано на официальном сайте extensions.joomla.org . Каждое из них может служить примером для сборки и оформления собственных расширения. К тому же много расширений поставляется непосредственно в составе CMS Joomla!, они также могут служить примерами для подготовки собственных сборок.

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

    © 2024 Windows. Инструкции. Программы. Железо. Ошибки