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

30 Август, 2009

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Во вступительной статье я пытался в двух словах рассказать, что такое Джумла и с чем ее едят, а так же на пальцах разъяснить понятия категорий-разделов и показать, что на любой пункт любого меню можно повесить не только открытие одной статьи (материала), но и серии статей из одной категории или из одного раздела.

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

Из чего состоит и как работает движок Джумла


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

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

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

Почему в этой ЦМС сделано именно так? Зачем нужно создавать фактически отдельный вебсайт (админку), который даже имеет собственный шаблон и, наверное, такое же, если не большее, количество файлов принадлежит ей в движке, чем у основного ресурса (Front Page)? А для нашего с вами удобства!

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

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

Видимая часть сайта сделанного на Джмумле (Front Page)

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

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

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

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

Как формируются (генерируются) страницы в CMS Джумла


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

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

Все дело в том, что браузеры работают только со страничками в формате 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.

Да, не забудьте проголосовать за вашего любимчика:

Код для вставки голосования на свой сайт:

<p><iframe src='http://ktonanovenkogo.ru/vote/voting.php?v=3&id=1' style='border: medium none; width: 715px; height: 300px;' frameborder='0' scrolling='no'></iframe></p>

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

Еще:

Рубрики :Самоучитель Joomla

Комментарии и отзывы

Нега

Да уж, это конечно же нелегко. 🙂

nat

Как же хорошо все расписано про CMS Joomla, хотя многое уже знал

nat

спасибо за статью

ilich87

В общем это всё ясно, но не мог бы по конкретнее написать про генерацию страниц? Просто я так понял, страничка генерируется, записывается в папочку, далее проверка на существо этой страницы. С этим всё ясно, но вот в чём дело: при работе с джумлой строка адреса явно не передаёт переменные методом пос и гет, там адрес типа домен.ру\234\234\3

Это как раз связано с кэшированием страниц или изобрели метод передачи параметров каким нибудь другим способом!? Просто я сейчас пишу типа тоже что-то про CMS и встала проблема генерации страниц, точнее определения, что на страницу должно грузиться, а определить можно только по переменным в строке адреса или используя глобальные переменные.

Так в итоге вопрос, как он всё-таки работает? К примеру пусть не

Shopscript free стартует сессия, создаётся объект типа смарти (это шабланизатор такой), затем смотрятся переданные переменные типа там ID продукта, если есть и он создан в глобальном массиве, то добро пожаловать на страницу продукта.

А как тут всё происходит!???

Заранее пардон за мой русский (на потоке мысли главное её не потерять) :-)))

близкий

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

Будет время опиши как прикрутить WEb Optimizer для Joomla!

Дмитрий

близкий: WEb Optimizer на пробовал. Может быть вам JRE CACHE или JAccelerator попробовать.

Lardok

Спасибо!

Я до этого не знал зачем это кэширование нужно и особенности его работы!

Спасибо! 🙂

Андрей Морковин

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

Ayder

Благодарю за информацию, немногие будут уделять внимание этой функции, как и сам я не обратил, теперь буду пробовать работу CMS с кешем и без.

Ghost

Благодарю за информацию

Олег

+1. Спасибо автору. ktonanovenkogo рулит, мало где вообще есть нормальные, человекопонятные описания, либо развернута информация, а у вас тут действительно, для начинающего всё доступно расписано. Еще раз огромный сенькс :)рад что вас нашел.

Дмитрий

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

Marat

А какой платный шаблон приводится на картинке в качестве примера большого количества модулей?

Igrun

спасибо. много почерпнул по этой ЦМС, и пополнил свои знания по joomla. Развиваемся. 🙂

recszpua

Подскажите, кто знает чем отличается включение кеширования в общих настройках CMS от включения кеширования включением модуля system cashe?

Наталья

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

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

Сергей

Материал понравился. Хочу свой новый сайт сделать на Joomla. И чтобы добиться успеха надо знать все тонкости.

Yawall

Как уменьшить именно загрузку оперативной памяти джумлы на вдс?

Я был очень удивлен, когда мне на fastvps сказали, что «Ваш ресурс недоступен из-за забитой на 100% ОЗУ». Не верю, что 200 мб не хватит на сайт с посещалкой в 5 человек...

yufka

Спасибо за статью, у вас всё очень информативно и ясно написано по этой CMS ке.

natalya

Дмитрий, я ваша подписчица.

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

Вроде в программе «Блокнот» можно, но я открыла его, ничего не поняла и закрыла.

Дмитрий

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

Светлана

Добрый день!

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

У меня есть хостинг. Есть сайт . (www.khms.ru, например) При написании его я пользовалась Macromedia Dreamweaver или блокнотом. Лично я не испытываю трудности в том, чтобы править и загружать на сервер непосредственно страницы html и работать с Dreamweaver, но вот появились сотрудники, для которых эта программа оказалась не по зубам. Они хотят простой движок, с помощью которого они могли бы выкладывать на сайт текстовую информацию и картинки.

Возможно ли прикрутить к уже готовому выложенному на сервере работающему сайту какой-то такой простой движок? Да ещё и так, чтобы сам web-мастер мог править этот сайт из Dreamweaver, а контент-менеджер — с другого компьютера через некий простой движок?

Joomla, WordPress, Денвер — что-то из этого является аналогом моего воображаемого «простого движка» или они нужны для чего-то другого?

Я уже совершенно запуталась в этих программах... :((

Заранее большое спасибо!

Дмитрий

Светлана: можно, например, поставить Joomla и перенести все Html файлы в эту CMS, прямо через Html редактор. Нужно будет только не забыть сделать 301 редирект со старых url на новые (установить какое-нибудь расширение для этой цели, например).

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

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

Светлана

Спасибо, Дмитрий!

Я правильно поняла, что после переноса Html файлов в Joomla с ними уже нельзя будет работать через Dreamweaver? Т.е. вопрос в том, в каком виде хранятся на сервере эти файлы после переноса? Можно ли их через FTP-соединение оттуда скачать на компьютер, чтобы редактировать в каком-то ином редакторе?

Спасибо!

Дмитрий

Светлана: вы сможете подготавливать статьи в любом удобном для вас редакторе, а затем в виде Html кода загружать их в Html редактор. Статьи будут храниться в базе данных и скачать их про FTP вы, естественно не сможете, но сможете в админке Joomla открыть их на редактирование и скопировать Html код статьи из ЦМс для редактирования его в Дримвьювере.

Светлана

Понятно, спасибо, Дмитрий!

Тогда ещё вопрос: я скачала Joomla в виде какого-то самораспаковывающегося архива... не могу понять, что с ним делать. Его обязательно загружать прямо на сервер или можно установить у себя на компьютере, чтобы поизучать CMS?

exe-файл в папке отсутствует и ставит меня в тупик, как запустить установку.

Дмитрий

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

Светлана

Спасибо, Дмитрий!

Алексей

Добрый день! Отличная информация! У меня все на Joomla, поэтому инфа ценная... я новичок и думаю с помощью этих статей качественно улучшить свои сайтики... кстати, Дмитрий, почитайте статью на rundeks.ru это я решил своим опытом поделиться... маленьким, но опытом...

Николай

Спасибо, ничего лучшего не видел!

antiler

Спасибище Вам огромное за проделанную работу!

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

Андрей

Люди помогите. После работы на denwer адрес сохранился в строке мазилы, теперь не могу выйти на свой сайт в сети. Чистил кеш и реестр не помогает. Что делать.

Алексей

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

P.S. Сайт http://ktonanovenkogo.ru/ просто как энциклопедия по джумле ))))

http://blogobit.ru/cms-joomla

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

Инна

Дмитрий стою перед выбором купить готовый шаблон Magento или vetrymart работала с вдминкой drupal , не подскажите что будет удобнее и практичнее для небольшого магазина

Yuriy

Доброго времени суток всем сайта. Очень полезная статья, и вообще вся информация на сайте. У меня вопрос автору. Строю сайт на Joomla 2.5. Возникла необходимость вставки кода javascript на конкретные страницы сайта. Код обращается к FLV проигрывателю. Из статьи я понял, что существует только один файл index.php, по средством которого идет обращение к базе данных, и генерация страницы. Я перерыл уже весь свой сайт, шаблон, базу данных, но решение не могу найти. Подскажите пожалуйста как решить проблему. Буду очень благодарен. Заранее спасибо. С Уважением к автору, и всем посетителям, Юрий.

Ната

Доброго времени суток всем.Очень интересная и познавательная статья.Спасибо автору за работу.

Подписаться не комментируя