#1 JohnCMS. Структура.

762
.
ValekS
Ей 25
Здравствуйте! Именно так я хочу начать свой цикл статей по популярному, в определённых кругах, мобильному движку или правильней, точней, будет сказать по популярной Системе Управления Контентом JohnCMS.

JohnCMS это CMS для создания сайтов, ориентированных на просмотр с мобильных телефонов. Написанная на простом PHP. Автором является Олег Касьянов или просто AlkatraZ. Нет, связи с островом-тюрьмой в США, ныне расформированной, он не имеет. Это так, к слову.

WTF??

Зачем вообще я это пишу и что из себя это будет представлять? Пойдём не по порядку. Это будет небольшой цикл статей, может 3 а может и больше, в котором я хочу ознакомить общественность с Джоном(так я ласково буду называть JohnCMS). Я залезу абсолютно во все места движка, расскажу то, о чём может кто-то и не догадывался. Так же опишу все системные функции, переменные и другие “достопримечательности” Джона. Так что это ещё будет как бы и документацией, которой так не хватает начинающим пользователям.

Для кого эти статьи? Для всех. Но особенно для новичков. А в целом что-то почерпнуть из моих статей, я думаю, сможет каждый. Даже сам Олег(а вдруг он за столько лет разработки движка, что то и забыл?).
.
Ей 25
Начнём-ка
Итак. Я начинаю. “Исследовать” мы будем 3 “ветки” движка. Это 3, 4 и последняя, не завершенная пятая “ветка”. Из каждой из них я возьму последние версии - 3.2.2, 4.5.1 и 5.2.1(когда выйдет 5.2.2 обновлю информацию, если что).
В этой статье я уделю внимание структуре Джона, пробегусь по всем папкам, расскажу что, для чего и как работает.
.
ValekS
Ей 25
Структура
Создание движка дело тонкое и неблагодарное, если он(движок) бесплатный. По этому структура в этом деле играет важную роль.
Всё должно быть разложено по полочкам, а не как попало.
Джон в этом плане очень хорош, особенно его последние версии.
В корне у нас папки и файлы(логично, да?).
Файлы представлены 3 типами - .php, .txt и .htacces.
Последний тип - это файл дополнительных конфигураций Apache.
С его помощью можно много интересного наделать.
Текстовые файлы это в основном всякая ненужная(кому как ) информация - инструкция по установке, сведения о версиях, движке, лицензии. Их все можно удалить. Только robots.txt трогать не нужно.
Это файл инструкций для поисковых роботов.
Среди .php файлов в корне находится стартовая страница сайта, регистрация, вход, выход, каптча. В 5 Джоне ещё и файл полного закрытия сайта.

Особого внимания стоит файл go.php - в Джоне 3.2.2 это быстрый переход(тот что внизу сайта), в 4.5.1 - кроме быстрого перехода ещё и редирект по ссылкам и переключатель языков, а в 5.2.1 - быстрый переход убрали, остался только переключатель языков и редирект по ссылкам как на внешние ресурсы, так и по рекламным.
В Джоне 3.2.2 есть ещё файл read.php - информация сайта.
В поздних версиях это файл переименован в faq.php и перенесён в папку pages.
Папок у нас 16 штук, целых. А в версии 3.2.2 было аж 18. Одну из папок можно сразу удалить, хотя не зразу а после установки и не можно а нужно. Это install. В ней файлы для установки движка, которые потом не нужны.

Далее - chat(в Джоне 3.2.2), download, forum, gallery, guestbook, library, mail, news, panel, users - это всё модули. их название говорит само за себя.
Правда вот panel - это админ панель и users - профиль пользователя, личная гостевая, фотоальбомы и т.д. немного подкачали.
В Джоне 3.2.2 папок guestbook, mail и news нет, так как эти все модули лежат просто отдельными файлами в папке str.
Как и профиль пользователя(фотоальбомов в 3.2.2 небыло).

Далее разделимся на 2 части. В Джоне 3.2.2 была такая структура. Папки avatars, smileys, images - здесь лежат различные изображения - аватарки, смайлы и просто картинки, применяющиеся в движке. В последующих версиях всё в одной папке - images.
Папка cache - это кеш, который будет появляться при использовании движка. В 3.2.2 эта папка была в корне, потом её перенесли в папку files. В которой содержатся или будут содержаться все файлы выгружаемые на сайт, с разбивкой по модулях. Папка pratt в Джоне 3.2.2 это файлы почты. В последующих версиях движка, она так же в папке files(правда переименована).

Одинаковыми для всех версий были папки incfiles, pages, theme и rss.
Последняя это rss вывод новостей сайта. Theme это папка с темами - дизайнами движка.
В pages содержатся тектовые файлы раздела “Информация/FAQ”(в 3.2.2, в поздних версиях один php) и меню сайта, то что вы видите на главной странице.

Incfiles. Это самая главная папка движка. Его ядро.
В 3.2.2 структура это папки была не очень, просто куча файлов, а вот дальше всё стало привлекательней.
В этой папке функции движка, его ядро(core), файлы шапки и подвала сайта. И это не полный список.
Там ещё есть различные классы-библиотеки для работы сайта, которые в 4 и 5 Джоне вынесены в отдельную папку lib.
В 4 и 5 Джоне в incfiles ещё лежат языковые файлы движка(папка language), в Джоне 3.2.2 мультиязычности небыло.
Так же в Джоне 4 и 5 там появляется папка classes - в которой подключаемые классы BB-кодов, функций, комментариев, счётчиков, ядра и вывода новостей(в 3.2.2 class_mainpage.php, дальше mainpage.php).
.
ValekS
Ей 25
Интересности

Откроем файл index.php из корневой директории. Вопреки ожиданиям главную страницу сайта мы там не увидим. Да и вообще в 5 Джоне мы там мало что увидим: вывод error 404, подключение меню сайта и вывод карты сайта.

В Джоне 3.2.2 там ещё была страничка “Пользователи”, дайджест и личный кабинет пользователя. В Джоне 4 остался только Дайджест, всё остальное перенесли в отдельные файлы в папку users. А потом Дайджест убрали из-за отсутствия необходимости в нём.

Как же всё работает?
Через require/include.
Это php функции для включения содержимого других файлов в текущий файл. Таким способом всё обирается в кучу:
/incfiles/head.php - шапка сайта, его верхняя часть;
/pages/mainmenu.php - меню сайта, средняя часть;
/incfiles/end.php - подвал сайта или ноги, его нижняя часть.
Ещё обязательно подключается /incfiles/core.php - ядро движка.

В каждом файле движка, кроме комментария вначале, можно увидеть следующее:
define('_IN_JOHNCMS', 1);
Что это? Это объявление константы, которая показывает принадлежность файла к движку. В ядре движка есть проверка, проверяющая наличие этой константы. Без неё ничего работать не будет.

Ещё в начале файлов подключается язык странички(правильнее даже сказать модуля) - переменная $lng_*** и задаются переменные $textl и $headmod. Первая это то, что будет выводиться в теге <title></title> страницы, т.е. заголовок сайта. Если эта переменная не установлена, выводится копирайт.
А вторая переменная используется для пометки местонахождения пользователя.

Что ещё интересного есть в движке? Никогда не задумывались зачем в каждой папке файл index.php ? Чаще всего пустой? Какая может быть польза от пустого файла(самому интересно стало)? А польза то есть. Всё дело в том, что если в адресной строке браузера набрать адрес сайта и потом дописать какую то папку, например /forum/, мы увидим стартовую страничку форума - файл index.php.

А что если этого файла нет? Тогда мы увидим список файлов и папок директории, которую написали в адресной строке(хотя тут есть одна оговорка, при правильной настройке сервера мы должны увидеть страничку с ошибкой 403, но не все сервера настроены правильно).

Не трудно догадаться что это плохо сказывается на безопасности сайта. А так как Джон очень хорошо защищённый движок, позволить такое разработчики не могли. По этому создали пустой index.php и добавили его в те папки, где его нет. И теперь при попытке открыть папки /pages/, /images/ и некоторые другие, вы увидите просто белую страницу.

Текста, выводимого на экран, в файлах движка вы не увидите. Кроме комментариев. И если не используете версию 3.2.2. Весь текст находится в .lng файлах - на самом деле просто текстовый файл, которые находятся в /incfiles/languages/язык. А выводится через переменную $lng или $lng_***.
.
Ей 25
Вместо заключения
Вот пока и всё на сегодня. В следующих статьях я буду детально разбирать папку /incfiles/ и всё что в ней находится. Если я что-то упустил, написал не правильно, не затронул интересный момент - пишите. Исправлюсь)
.
Ego vir viden
трудно читать
.
Стена текста. Хотя бы абзацы делай.
.
ValekS
Ей 25
# reaper (29.11.2014 / 16:41)
Стена текста. Хотя бы абзацы делай.
Как тута можно сделать не "стену текста"? Изначально писалось всё в Ворде. Там покрасивее было.
Абзацы это вообще полный абзац... Они были. Но так как все пробелы в начале строк удаляются... Результат налицо короч.
.
Ей 25
# selemet (29.11.2014 / 16:35)
трудно читать
Почему? Я так плохо пишу на русском языке?
.
reaper
              ValekS, А пустые строки куда делись?
  Вот тебе пробел "  ", он никуда не денется.              
Всего: 22