Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Joomla - пусть тайное станет явным

#1 Demogorgon

Demogorgon
  • Пользователь
  • 8 сообщений
  • Репутация: 3
2

Отправлено 23 Апрель 2012 - 21:17

У Джумлы есть один секрет: где всё понятно - Джумлы нет.

День добрый.

Представляю вашему вниманию несколько рецептов для начинающих джумловодов.

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

Примечание о файлах и папках: в статье я использую пути по отношению к папке, куда установлена CMS. Например, если корневая директория Joomla расположена по адресу _http://мой-сайт.ру/joomla, то, говоря о файле index.php, я буду подразумевать файл _http://мой-сайт.ру/joomla/index.php.

Кроме того, при создании новых файлов и каталогов внимательно следите за регистром символов. Он должен быть ровно таким, который указан в статье. Все текстовые файлы должны быть закодированы в UTF-8 без BOM.

Следует также заметить - всё нижеперечисленное относится к Джумле версии 1.7. Однако, по большому счёту, и в других её версиях принцип примерно такой же.

Ну-с, приступим.


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

Изображение

В языковых файлах хранится вся (ну, или почти вся) текстовая информация, которую выводит Joomla. Файлы для разных языков хранятся в разных папках (за одним исключением, о котором позже) и имеют расширение ".ini". Например, файлы русского языка находятся в папке language/ru-RU, а для английского - в language/en-GB.

Название файла указывает на сущность, которой он соответствует. Файл ru-RU.com_content.ini относится к компоненту com_content. Файл ru-RU.mod_footer.ini - к модулю mod_footer. В файле ru-RU.ini находятся строки общего назначения. В рамках данной статьи файлы, чьи имена заканчиваются на ".sys.ini", нам не нужны.

Формат данных в языковых файлах чрезвычайно прост:
Идентификатор="Значение"

Идентификатор используется для доступа к строке из PHP-кода. Пусть есть строка с идентификатором JPAGETITLE, тогда, чтобы загрузить её содержимое, можно использовать такой код:
JText::_('JPAGETITLE')

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

Есть другой путь. Использовать специальные "перегрузочные" файлы. Они располагаются в папке language/overrides и имеют имена подобные следующим: ru-RU.override.ini, en-GB.override.ini, итп (для каждого языка - свой). Помните, я говорил об исключении? Вот оно - файлы перегрузки для всех языков находятся в одной папке.

Итак, для того, чтобы изменить текст, соответствующий, к примеру, идентификатору JPAGETITLE, нужно в файл ru-RU.override.ini добавить следующую строку:
JPAGETITLE="%1$s | %2$s"

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

Кстати, Вам, наверно, интересно, что за каракули я написал в вышеприведённом примере? Поясню. Переопределив JPAGETITLE таким образом, можно добиться того, чтобы в тайтле страниц в качестве разделителя между названиями страницы и сайта использовалась вертикальная черта, а не тире.


Шаблоны модулей

Изображение

Шаблон (или макет) определяет, как модуль будет выглядеть при визуализации. То есть, по сути, формирует код, который в конечном итоге попадает на страницу. Поле "Альтернативный макет" (вкладка "Дополнительные параметры" настроек модуля) позволяет выбрать используемый в данный момент макет.

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

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

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

Как быть в таких случаях?

Первый и самый простой ответ, который приходит на ум - исправить шаблон модуля.
Отправляемся в папку модуля, отыскиваем там каталог tmpl. Например, для футера это будет /modules/mod_footer/tmpl. Для других модулей достаточно заменить footer на соответствующее название.

Видим файл default.php. Он отвечает за макет, используемый модулем по умолчанию. Кроме того, здесь могут находиться и другие файлы. Часть из них может представлять другие шаблоны, а часть - быть вспомогательными. Joomla отличает одни от других по наличию подчёркивания в имени файла. То есть my.php - это макет с именем my, а my_item.php - вспомогательный файл.

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

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

Какой же выход предлагает нам Joomla?

CMS ищет файлы макетов в нескольких местах. В каталоге tmpl папки модуля, о котором мы говорили выше. А также во всех установленных шаблонах сайта по пути templates/html/, где - название шаблона, а - название данного модуля. При наличии одинаковых файлов в каталоге модуля и текущего (!) шаблона сайта будет использован файл из шаблона.

Поясню на примере. Пусть в папке модуля mod_footer имеются два файла: default.php и my.php. На сайте используется шаблон beez5 (он входит в стандартную поставку Joomla). Кроме того, в папке templates/beez5/html/mod_footer наличествует файл default.php, а в папке templates/atom/html/mod_footer (заметьте, это уже другой сайтовый шаблон) - файл my.php.

Тогда при выборе в настройках модуля макета default (по умолчанию) будет использован файл из шаблона beez5. А если выбрать макет my, Джумла проигнорирует файл из шаблона atom и применит одноимённый макет из папки модуля. Так как atom не является текущим шаблоном.

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

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

Удаление слова "Подробности"

Изображение

Напоследок - более конкретный кулинарный рецепт.

По неведомой мне причине Joomla предваряет детали статей (вроде даты публикации или названия категории) словом "Подробности", которое, на мой взгляд, там совершенно не к месту. Если Вы разделяете моё мнение, то этот приём для вас.

Чтобы расправиться с ненавистным словом, нам нужно отправиться в папку templates/html/com_content, где - название используемого шаблона сайта. Если её не существует, немедленно создаём. Именно сюда мы поместим файлы макетов статей, которые должны переопределить предусмотренные в Джумле по умолчанию.

Теперь направляемся в каталог /components/com_content/views. Нас интересуют 4 директории, находящиеся здесь: archive, article, category и featured.

Заходим в первую из них - archive, затем - в поддиректорию tmpl. Копируем файл default.php в папку templates/html/com_content/archive.

Проделываем подобные операции со всеми четырьмя папками. В результате в каталоге templates/html/com_content должны появиться папки с теми же названиями, каждая из которых содержит файл default.php.

Открываем поочерёдно эти файлы, ищем в них строчку с текстом "article-info-term". Выглядеть она будет примерно вот так:
<dt class="article-info-term"><!--?php echo JText::_('COM_CONTENT_ARTICLE_INFO'); ?--></dt>

Удаляем или комментируем эту строку. Будьте внимательны - удалить нужно только её одну, соседние трогать нельзя. Сам когда-то таким образом попал впросак.

Ну, вот и всё, мы избавились от надоедливого словечка "Подробности".

За сим откланиваюсь. Спасибо за внимание. Надеюсь, мои потуги были не напрасны, и сей манускрипт будет Вам полезен.

О, Джумла - я помню чудное мгновенье... А после - хоть не вспоминай.


Изображение Admitad.com - агрегатор партнерских программ с оплатой за действие пользователя. Выбор множества выгодных предложений для вашего трафика. Обсудить на форуме.

Изображение Maxtrust.ru - сеть по продаже VIP-товаров. Высокий заработок для качественного трафика - от 270$ за 1000 посетителей Обсудить на форуме.

 

 

  • 1


Оформление форума – IPBSkins.ru