Куда идем?

Насколько хорошо вы знаете Joomla? Давайте проверим! В данной статье я собрал 10 особенностей этой CMS, о которых знают далеко не все. Прочитайте статью, а затем напишите в комментариях, сколько из пунктов были вам известны, например «6/10». Я уверен, что «10/10» наберут далеко не все. А особенности действительно интересные!

1) Скрытые страницы регистрации и авторизации в Joomla

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

Главный фокус в том, что даже если вы не показываете пользователям ссылку на страницу регистрации, опытный человек, знакомый с Joomla, сможет попасть на нее. Как? Очень просто:

  • php?option=com_users&view=registration – форма регистрации
  • php?option=com_users&view=login – форма авторизации

Не верите? Перейдите по ссылкам, подставив в начале адрес вашего сайта. Вы всё увидите сами.

Эта особенность Joomla часто используется нечистыми на руку людьми для рассылки странного вида спама. Спам приходит через форму регистрации. Т.е. через нее робот регистрирует якобы пользователей, подставляя вместо имени спам-текст:

1

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

Если с регистрацией всё просто, то с авторизацией сложнее. Вы можете убрать с сайта модуль ввода логина и пароля, но это не избавит вас от страницы с формой авторизации, описанной выше. Она стандартная, а значит, каждый пользователь может ее открыть и попытаться подобрать логин и пароль администратора. Логин обычно никто не меняет. Остается только подобрать пароль перебором. Если ваш сайт не слишком ценен, то вряд ли кто-то будет морочить себе этим голову. А вот если на сайте есть ценная информация, то злоумышленники могут и поработать с ним.

Как защититься от подбора пароля? Есть несколько вариантов. Самый простой – переопределить макет страницы index.php?option=com_users&view=login в используемый шаблон Joomla и удалить из него форму ввода логина и пароля.  Другой вариант – использовать Wedal Recaptcha Login, который будет показывать капчу после нескольких неудачных попыток авторизации.

Не забывайте про эти стандартные страницы в Joomla.

2) Неизменность файлов .htaccess, robots.txt, web.config.txt и необходимость их ручного обновления

В Joomla есть одна интересная особенность. Когда вы обновляете сайт до новой версии, например, переходите с Joomla 2.5 на Joomla 3, файлы .htaccess, robots.txt, web.config.txt не обновляются вместе со всеми остальными, хотя в них могут быть изменения.

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

Вообще-то, после установки обновлений Joomla, появляются сообщения с информацией об этих файлах. Но кто читает эти сообщения =)

2

3) Отдельная страница в Joomla с уникальным макетом/кодом

Моя любимая особенность. Я пользуюсь ей очень часто, и очень часто она сильно выручает.

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

Чтобы воспользоваться этим макетом, необходимо добавить к URL «?tmpl=component» или «&tmpl=component», если вопросик уже стоит в URL раньше.

Если стандартная страница выглядела, скажем, так:

3

То после добавления к URL данной конструкции, будет:

4

Вообще, фокус с «tmpl=component» довольно известный. Здесь ничего интересного. Но я вот пошел дальше. Кто сказал, что мы должны использовать эту особенность строго по назначению? Следите за руками:

  • Копируем файл component.php в корне шаблона Joomla .
  • Изменяем его название, на скажем, myscript.php, и размещаем там же, в корне шаблона.
  • Пишем в файле myscript.php любой код или верстаем любую страницу, которая нужна нам на сайте, но которая не попадает под стандарт Joomla, например, делаем или вставляем готовый калькулятор чего-либо.
  • Открываем любую страницу сайта, добавляя в URL параметр с нашим макетом, например: mysite.ltd/?tmpl=myscript
  • Страница загружается и код выполняется. При этом в файле myscript.php будут работать все особенности фреймворка Joomla, будут доступны все позиции модулей и компонент – в общем, всё то, что есть в шаблоне Joomla.

Это очень удобно. В этом файле можно также получать и разбирать параметры URL, не забывая, конечно, фильтровать их на входе. Используя такой подход, вы можете легко интегрировать в Joomla сторонний скрипт, вы можете получать и разбирать любые данные для AJAX-запросов из базы данных, вы можете делать практически всё, что только пожелаете. Главное – не забывайте про безопасность.

4) Собственное меню в админке

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

5

А вам слабо? =)

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

5) Встроенный менеджер перенаправлений

Про эту особенность вы должны знать, но всё же расскажу. Если вам нужно настроить перенаправление (редирект) с одной страницы на другую, не обязательно лезть в код. В Joomla существует довольно неплохой инструмент, позволяющий создавать редиректы через админку. Он называется «Менеджер перенаправлений» и доступен в админке по умолчанию в «Компоненты –> Перенаправление». Выглядит он примерно так:

6

Менеджер перенаправлений Joomla выполняет несколько полезных функций:

  • Собирает все запросы к сайту, которые вернули ошибку 404, и показывает, сколько было обращений по каждому такому запросу – так вы можете увидеть, какие страницы были запрошены посетителями, но не были загружены по какой-то причине.
  • Позволяет настраивать перенаправления как для страниц, собранных в п.1, так и собственные, уникальные перенаправления.
  • Позволяет массово импортировать перенаправления на сайт. Т.е. вы можете создать их в Excel, а затем легко загрузить в менеджер.

Эта очень полезная и удобная функция Joomla. Я часто ей пользуюсь, особенно при миграции сайтов с Joomla 1.5 на свежую версию. Обычно в таких миграциях URL страниц сайта изменяются, но благодаря менеджеру перенаправлений удается сохранить посетителей сайта.

6) Одновременная авторизация фронденд-админка

Довольно новая «фишка» в Joomla. Позволяет одновременно проходить авторизацию и на сайте и в админке (и наоборот).

По умолчанию в Joomla отдельная авторизация. Т.е. авторизация на сайте отдельно, в админке – отдельно. Если вам это не по душе и хочется вводить логин и пароль только один раз, то это возможно. Перейдите в Общие настройки –> Вкладка «Система» –> Опция «Общие сессии». Активируйте эту опцию. Авторизовываться и выходить можно будет только один раз для всего сайта.

7

7) Установка требований к сложности пароля для пользователей при регистрации

Готов поспорить, вы не знали, что это возможно =). Я вот раньше не знал, а оно есть!

Вы можете зайти в общие настройки Joomla, выбрать раздел «Пользователи», перейти на вкладку «Параметры пароля» и увидеть необходимые настройки:

8

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

8) Изменение пути к каталогу с изображениями в медиа-менеджере

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

Бывает, что эта особенность прямо очень сильно мешает. Когда?  Тогда, когда нужное вам изображение лежит, например, в папке images шаблона сайта, или же изображения хранятся где-то в стороннем компоненте, разработчики которого как-то не сообразили хранить их там, где нужно. Бывает? Бывает. Что делать в этом случае?

Всё просто. Переходим в Общие настройки Joomla, открываем раздел «Медиа-менеджер» и видим в нем настройки. Здесь нас интересуют две опции:

  • Путь к каталогу с файлами
  • Путь к каталогу с изображениями

Заменяем их значения на «/»:

9

После этого видим в медиа-менеджере все каталоги:

10

Хочу напомнить об очевидном: если у вас есть пользователи, которые могут работать с редактором и медиа-менеджером, и которым вы не доверяете, не делайте то, что написано в этом пункте! Выполнять его допустимо только когда доступ к редактору и медиа-менеджеру имеет только доверенный круг лиц, а лучше – только Вы.

9) Сбор статистики поиска в Joomla

Обычно на сайте используется форма поиска. Иногда очень интересно узнать, что же всё-таки люди в ней ищут. Стандартный поиск Joomla дает такую возможность. Вы можете собирать статистику всех запросов в форме поиска на сайте, а затем анализировать ее. Для этого переходим в Общие настройки Joomla, раздел «Поиск» и активируем опцию «Собирать статистику поиска». После этого нужно зайти в «Компоненты –> Поиск», где вы увидите собранную статистику:

11

10) Полное кэширование страниц Joomla + браузерное кэширование

Думаю, многие уже знают про эту особенность, но есть в ней и кое-что новое.

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

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

А вот и новая особенность. Если вы зайдете в настройки плагина Система – Кэш,  то увидите, что теперь там есть опции, позволяющие использовать кэширование в браузере и исключить из кэширования определенные URL и пункты меню. Это здорово, т.к. позволяет более тонко настроить этот механизм ускорения сайта, независимо от мощности и размещения сервера:

12

А вы сильны, раз дочитали до конца =).  Ну так что, сколько из пунктов были вам уже известны? Только честно! Пишите в комментариях.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
0
Знал о 4 из 10 ))))
0
8 из 10.
Про медиа-менеджер спасибо, но не безопасно.
Про tmpl=component я чего-то упустил - тут конечно благодарочка ))
0
Здравствуйте, Виталий!
Знал о половине особенностей, но пробовал использовать только 3.
После прочтения этой статьи, заинтересовала возможность менеджера перенаправлений, а именно, массово импортировать перенаправления на сайт. Виталий, могли бы вы привести пример, как правильно должны выглядеть строки в таблице Excel с перенаправляемыми url, которую затем нужно загружать в менеджер?
1
Александр, в менеджере формат должен быть:
old-url|new-url
и каждое перенаправление с новой строки.

Соответственно, в Excel вы делаете три колонки. В первой - старый URL, во второй - "|", в третьей - новый URL. И так заполняете столько строк, сколько нужно.
Далее - выделяете все три колонки, копируете их и просто в вставляете в текстовый редактор вроде Notepad++. Записи вставятся как нужно, но с пробелами. Что-то вроде:
old-url | new-url
Чтобы избавиться от пробелов, используете функцию "Поиск - замена". В поиск копируете пробел из списка, а в замене ничего не пишете. Так все пробелы уберутся.
Ну и наконец, копируйте подготовленный текст из редактора в форму импорта в Joomla. Вот и всё. Это довольно просто.
1
Спасибо, Виталий!
2
Можно ещё проще, друзья.
1. В Excel 3 колонки. В первой текст: old-url, во второй текст: new-url, в третьей формула: =СЦЕПИТЬ(A1;"|";B1)
2. Третью ячейку за жирную точку справа внизу ячейки тащим на нужное количество строк, копируя формулу по строкам.
3. Когда список готов, просто копируем всю третью колонку Ctrl+C и вставляем куда следует Ctrl+V.
Радуемся.
2
Alex Teplo, кстати да - так тоже можно делать. Я что-то даже и не думал в этом направлении. Спасибо за подсказку!
0
Wedal, возникла пара вопросов.
"Самый простой – переопределить макет страницы index.php?option=com_users&view=login в используемый шаблон Joomla и удалить из него форму ввода логина и пароля." не подскажешь как?
И второе, очень заинтересовала тема с "Отдельная страница в Joomla с уникальным макетом/кодом". Можно увидеть пример? Интересно как работает. Не совсем понял для чего копировать component.php и переименовывать. А если создать с нуля?
7/10, но пользовался перенаправлениями, статистикой поиска и кэшированием. На статичных сайтах полное кэширование и gzip сжатие вообще позволяют загружать сайт мгновенно
0
ALEHAN,

Переопределить макет можно простым копированием его файла в шаблон Joomla. Подробнее про переопределение макетов читайте здесь: https://wedal.ru/uroki-joomla/joomla-17-layouts.html . Единственное - вам не нужно изменять название макета, как описано в статье, поскольку ваша задача не создавать новый макет, а переопределить существующий.

Отдельная страница с уникальным кодом:

За примером далеко ходить не надо. Это файлы component.php и error.php, которые расположены в корне вашего шаблона Joomla. Любой такой файл может быть запрошен в Joomla путем добавления к URL конструкции "tmpl=ИМЯ_ФАЙЛА".
Не обязательно копировать существующий файл component.php, можно создать и новый. Просто мне кажется, что скопировать и удалить всё лишнее быстрее.
0
"Переопределить макет можно простым копированием его файла в шаблон Joomla..."
Вот как раз с этим и затык.
Переопределениями пользуюсь давно, но в списке переопределяемых не находил форм регистрации/авторизации. Значит где то в системных папках joomla есть файлы макеты этих страниц, вот и интересно где они, и куда кидать страницу переопределения и с каким именем, в инете этой инфы не нашел.
1
ALEHAN, всё здесь: components/com_users/views
Кидать в templates/ваш_шаблон/html/com_users/название_папки_с_макетом/
-1
Хорошая статья, кратко и по делу. В свою очередь, я в курсе про эти особенности движка и сам не однократно записывал уроки на эту тему. Даже были наброски для публикации у себя на блоге подобной темы.
0
Поддерживаю на 101%.
Wedal, пишите.
0
4 из 10 знал. За остальное - спасибо большое.
2
Wedal , вы уже не в первый раз меня выручаете. При всей банальности-не могла зайти на сайт как админ. Весь инет обрыла. Вы огромный молодец. Все статьи настолько понятны и просты. Огромное спасибо!!!
2
Полностью поддерживаю. Статьи понятны и полезны и новичкам, и матёрым.
Виталий, спасибо. Вы делаете нужное и очень полезное дело. Вселенная видит всё. )
Удачи и хорошего настроения!
0
Редирект со страницы /component/users/?view=login на главную не защитит от ботов, которые подбирают логины-пароли.
Они, похоже, долбятся напрямую GET-запросом, включающим в себя данные для авторизации.
0
Знал 4 из 10. Я еще только на пути познания Джумлы.
На эту статью забрел случайно, и сразу вспомнил, что с Виталием (Wedal) когда-то общался в чате, и он очень помог мне. Причем у него прямо стремление было помочь. Спасибо большое! Кстати, теперь этот сайт Wedal я сохраню, посмотрел - кладезь полезностей.
0
Виталий, добрый день!
Подскажите, пожалуйста, где искать причину того, что при нажатии на определённый раздел выскакивает следующее
: Страница недоступна Сайт >>>>>>>> пока не может обработать этот запрос
0
Ева, искать причину такого поведения, вероятно, следует в запросе, который сайт не может обработать. А именно в URL странице, на которую вы пытаетесь перейти. Возможно ее просто не существует.