CMS Joomla – принципи роботи безкоштовної системи управління контентом, створення сторінок і їх кешування

Категорія: Самовчитель Joomla Опубліковано: Субота, 30 квітня 2016

Здрастуйте, шановні читачі блогу ITstatti.in.ua. У вступній статті я намагався в двох словах розповісти, що таке Джумла і з чим її їдять, а так само на пальцях пояснити поняття категорій, розділів і показати, що на будь-який пункт будь-якого меню можна повісити не тільки відкриття однієї статті (матеріалу), але і серії статей з однієї категорії або одного розділу.

У цьому пості я хотів би зупинитися на ще одному моменті в логіці роботи з цією системою, який викликав у мене невеликі складнощі у розумінні. Але раніше я все-таки спробую описати з чого складається сайт, створений безкоштовної CMS (читайте про те, як без витрат зробити свій сайт). Ну, по-перше, при роботі з цим движком ми маємо як би два різних вебсайту.

 

Перший — це, власне, основний, який бачать відвідувачі і заради якого все і замислювалося (фронтэнд). А другий можна назвати зворотним боком — це так звана адмінка, в яку ми можемо потрапити, додавши в адресному рядку адресу нашого проекту /administrator (наприклад,http://dfdf.ru/administrator).

Причому, вхід в адмінку закритий для звичайних користувачів і здійснюється лише шляхом введення логіна і пароля (авторизації).

Вхід в адмінпанель

Чому в цій ЦМС зроблено саме так? Навіщо потрібно створювати фактично окремий вебсайт (адмінку), який навіть має власний шаблон і, напевно, таке ж, якщо не більшу, кількість файлів належить їй в движку, ніж у основного ресурсу (Front Page)? А для нашого з вами зручності!

Адже в іншому випадку, не май адмінки Joomla, нам довелося б безпосередньо вводити всі налаштування файли нашого проекту, а тексти статей, посилання, адреси малюнків та інше, безпосередньо вставляти в базу даних, ну, наприклад, за допомогою PhpMyadmin.

Погодьтеся, це було б незручно, та й багаж знань для такої роботи з базою даних безпосередньо потрібен набагато більший, ніж робота з інтерфейсом адмінки, дуже сильно нагадує інтерфейс звичайної програми. Робота з текстовим редактором (читайте про налаштування візуального редактора) в адмінці Джумли, так взагалі схожа на роботу в Ворді. Загалом, все це для нас з вами і нашої зручності.

Видима частина сайту зробленого на Джмумлі (Front Page)

Розглянемо призначену для відвідувачів, видиму частину цієї CMS, яка називається Front Page. З чого вона складається? Якщо розглядати це питання з точки зору зовнішнього вигляду, то вона складається з центральної частини, в якій розташовується контент і оточують його, так званих модулів.

Якщо розглядати це питання з точки зору програмної організації роботи Joomla, то Front Page складається з шаблону (читайте про установку і налаштування шаблонів) і підвантажуваних даних в різні позиції для модулів шаблону.

В область контенту завантажуються відповідні цій сторінці статті або ж, наприклад, фотографії з допомогою компонента фотогалереї (читайте про дуже функціональну і безкоштовну фотогалерею під назвою Phoca Gallery).

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

Зверніть увагу, що дані в цьому випадку підвантажуються з бази даних по мірі необхідності, а це відбувається, тільки якщо користувач відкриває якусь сторінку. А як він її відкриває? Ну, або переходить по посиланню з іншого ресурсу, або переміщається по вашому проекту, використовуючи його внутрішню навігацію – меню або внутрішню перелінковку.

До чого я все це кажу? А до того, що за логікою роботи Джумли, до веб-можна звернутися поки не буде створено пункт меню, який посилається на цю сторінку. Трохи не зрозуміло? Спробую пояснити.

Вся справа в тому, що браузери працюють тільки зі сторінками в форматі HTML (мова гіпертекстової розмітки) і геть не розуміють мову PHP на якому, власне, і написана Joomla. Тому система управління контентом (ЦМС), після того, як користувач звернеться до тієї чи іншої веб вашого проекту, повинна встигнути згенерувати цю сторінку, спираючись на алгоритм, прописаний в її коді на мові PHP.

Виходить, що будь-яка сторінка такого динамічного ресурсу існує, тільки якщо до неї звернулися, а звернутися до неї ми можемо, тільки перейшовши по HTML посилання. Коло замкнулося. Виходить, що потрібно мати посилання на те, чого немає, поки ми не звернемося до нього за цим посиланням.

Цей момент у роботі CMS під назвою Joomla особливо складно зрозуміти тим, хто хоч трохи уявляє створення класичного вебсайту, що складається лише зі статичних сторінок з розширенням HTML. Всі веб-сторінки, в цьому випадку, реально існують і знаходяться на сервері вашого хостингу.

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

У випадку ж з Джумлой, так, власне, і будь-який інший CMS, що базується на PHP, сторінки у форматі HTML генера безпосередньо на сервері хостингу в момент звернення до них. Яким чином вони генера?

Відповідно до змісту запитуваної вебсторінки, в центральну частину шаблону завантажується з бази даних відповідний контент (статті, фотогалерея, інтернет магазин тощо), а з боків шаблону, зверху і знизу, у позиції для модулів завантажуються дані в ті з них, які повинні відображатися саме на цій веб. Весь цей алгоритм роботи ЦМС прописується в файлах движка і налаштовується як раз в адмінці.

Як ви вже, напевно, помітили, такий спосіб формування сторінок приховує в собі деяку проблему, яка особливо гостро може постати при великій кількості відвідувачів на проекті. Код файлів цього движка, написаних на PHP, інтерпретується в HTML сторінку прямо на сервері хостингу в реальному часі.

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

Включаємо кешування для зняття навантаження з сервера хостингу

Вихід із цієї ситуації полягає у використанні кешування (цей спосіб зниження навантаження має місце практично у всіх популярних зараз ЦМС-ках). Як це працює? Досить просто. Кожен раз, коли на вимогу відвідувача на сервері хостингу створюється веб-сторінка у форматі HTML, то вона не тільки передається браузеру користувача, натиснувшого по посиланню, але і зберігається CMS в папку з кешем на сервері хостингу.

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

А як же тоді бути з оновленням інформації на ресурсі? Якщо все береться з кешу движка, то будь-які внесені зміни, припустимо, в статті, не відображаються користувачам. Адже вони отримують статтю з папки кешу. Так, дійсно, у разі застосування кешування в Joomla, внесені зміни відразу видно не будуть, але вони обов'язково з'являться потім, трохи пізніше. А ось наскільки — залежить від часу життя кешу, яке ви зможете задати в адмінці.

Для включення і налаштування кешування в цій безкоштовної системи управління контентом просто зайдіть в адмінку і виконайте такі переміщення: «Загальні налаштування» — вкладка «Система» — область «Установки кеша». Поставте галочку в позицію «Так» у рядку «Включити кешування» і виберіть час життя кешу. Не забудьте після закінчення налаштування натиснути кнопку «Застосувати» або «Зберегти», в іншому випадку внесені вами зміни не набудуть чинності.

Увімкнути кешування

Чим відрізняються дії кнопок «Застосувати» і «Зберегти»

До речі, ви знаєте, в чому полягає відмінність між діями, що виконуються по натисканню кнопки «Застосувати» від дій, виконуваних після натискання кнопки «Зберегти»? Зовсім трохи.

В обох випадках будуть збережені всі внесені зміни, але після натискання на кнопку «Застосувати» ви залишитеся в цьому ж вікні і зможете продовжити редагування, а після натискання на кнопку «Зберегти» — вікно редагування в адмінці закриється і ви опинитеся на тій сторінці, яка була відкрита до цього.

Тобто кнопку «Застосувати» потрібно натискати, якщо ви ще плануєте працювати в цьому вікні, а кнопку «Зберегти» — якщо роботу у цьому вікні ви вже закінчили.

Часткове відключення кешування

Хочу зупинитися ще на одному моменті, пов'язаному з кешем в цій системі. Справа в тому, що для деяких елементів вашого проекту бажано взагалі не застосовувати кешування. Наприклад, це можуть бути які-небудь інформери в модулях, дані яких повинні змінюватися при кожному зверненні до сторінки, де вони встановлені. У разі застосування кешу це стає неможливо.

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

Вимикання кешу модуля

Отже, на початку посту я говорив, що не можна створити посилання на сторінку в цій CMS, якщо немає відповідного пункту меню, що посилається на цю сторінку. А якщо пункт меню з такою посиланням не потрібен, але сама посилання потрібна і повинна використовуватися в тексті якої-небудь статті?

У такому випадку потрібно створити фіктивне меню, яке не буде публікуватися на Front Page і яке буде включати в себе пункт з потрібною посиланням на сторінку. Тут я як раз і підійшов до питання, яке мене спантеличив на початку вивчення роботи цієї системи управління контентом.

Як створити нове меню в Джумла я зрозумів, але воно, після додавання в нього пунктів, не хотіло відображатися на сайті.
— «Ти ж не вставив його в модуль», — скажете ви і будете скоєно праві.
Дійсно, меню в цій ЦМС повинне бути прив'язане до модулю, який і визначить, де воно буде знаходитись на Front Page.

Як подивитися позиції для модулів, передбачені в шаблоні Joomla

Справа в тому, що в кожному шаблоні для модулів відведені спеціальні позиції. Побачити їх ви зможете, просто додавши в кінці URL вашого ресурсу в адресному рядку браузера ?tp=1 (наприклад, http://dfdf.ru/?tp=1).

У різних шаблонах кількість і розташування позицій для модулів відрізняється. Тому, перш ніж вставляти модуль з меню в яку-небудь позицію (наприклад, left, right або top) шаблону Джумлы, переконайтеся, де саме в ньому знаходиться ця позиція. Не виключений варіант, що позиція left буде знаходитися справа.

Більш докладно про створення меню, його вставку в певне місце шаблону і багато що інше, пов'язане з роботою в цій системі управління контентом, я розповім у наступних постах рубрики Уроки Joomla.