Админка это то место где вы как администратор сайта будете проводить значительную часть времени. Это то место, которое должно являться цитаделью для всех остальных и доступ в админ панель должен быть только у самых довереных лиц. Не давайте доступ к панели тем в ком не уверены на 100%.
Именно по-этому вы должны знать эту часть сайта как свои пять пальцев. Хотя админка AtomX очень проста в использовании, мы подробно о ней расскажем для того что бы она стала для вас еще проще. Основная навигация в панели состоит из двух меню - бокового и верхнего.
Верхнее меню так же как и боковое в каждом пункте содержит субменю и служит, в основном, для системных и общих настроек. В разделе "Общее" можно найти общие настройки сайта, очистить кэш и узнать версию AtomX, а так же перейти на заглавную страницу панели управления. Верхнее меню содержит в себе настройки безопасности,сниппеты и чанки.
Боковое меню состоит из списка модулей и при навидении на один из пунктов раскрываетс
Бесплатная CMS AtomX является opensource проектом. По-этому каждый желающий разработчик может помогать в развитии проекта. Более того - мы будем этому очень рады). Помощь может выражаться по-разному, будь то написание кода, тестирование или материальная помощь проекту. Тут Вы найдете информацию о репозиториях AtomX CMS и их назначении, а так же дополнительную информацию о контактах основных разработчиков.
Code-style
Большая просьба, при написании кода, соблюдать кодстайл применяемый в AtomX и следовать изначально заданной архитектуре. Например, если в AtomX работа с базой ведется через ORM, то так и следует продолжать, а не делать запросы напрямую или подключать свои, избыточные библиотеки.
Версионирование
В шапке каждого файла указана мета информация, среди которой, версия файла(класса или библиотеки), а так же дата последнего изменения. Эти значения необходимо менять каждый раз при изменении файла. Версионность ведется по принципу мажорной и ми
С недавних пор в AtomX реализована возможность мультиязычности и так как я принимал некоторое участие в переводе шаблона для очередной сборки то вкурил как это работает и хочу поделиться этим с нашими пользователями.
Перевод шаблона дело совсем не трудное даже для тех кто совсем не знаком ни с языками программирования ни с гипертекстовыми разметками , короче любой чайник при желании может перевести свой шаблон на любые языки.
Итак для начала находим папку template/ваш_шаблон/languages там мы видим по умолчанию два языка Русский rus.php и Английский eng.php Это и есть переводы шаблона (не админки а именно шаблона)
открываем файл русского перевода
вот например:
Code:
'News' => 'Новости',
Слева это ключ справа соответственно сам перевод
Для того что бы этот перевод работал и для английского вставляем опять же ключ News и перевод в данном случае будет тоже News
Теперь мы знаем как выводить переменные, но переменные бывают разные и выводиться они тоже могут в разных местах. Зачастую необходимо эти переменные экранировать, точнее экранировать HTML сущности в них, чтобы пользователи увидели текст, как текст, а не как HTML код. Это кстати спасает от такой плохой штуки как XSS. И вот тут нам на помощь приходят фильтры. Использовать фильтры очень просто:
1
2
3
4
<!-- Переводим HTML в простой текст в заголовке(используем фильтр escape) --><title>{{ title|escape }}</title><!-- Пример фильтра с параметром --><title>{{ title|match('#regexp#') }}</title>
Как видите, все предельно просто.
Доступные фильтры
версия >= 2.6 rc1
bbcode - парсинг бб-кодов в строке. escape - аналог htmlspecialchars в PHP(преобразование HTML сущностей). lang - перевод.
Начиная с версии 2.7.0 принимает один параметр(string) - контекст(lang('shop')). urldecode - URL декодирование строки.
[b][/b]
Самыми важными являются первые настройки и к этому надо отнестись серьезно. Прежде всего следует проследовать в Админка->Пользователи->Настройка прав и настроить права для различных групп. Вы также можете добавлять группы пройдя в Админка->Пользователи->Управление группами. Это важно для того, чтобы пока вы будете приводить в порядок все остальное, никто не занимался самодеятельностью на вашем сайте. Хотя по-умолчанию и настроены оптимальные права.
Далее было бы очень хорошо и полезно пройтись по настройкам всех модулей, начиная с общих настроек системы Админка->Общее->Общие настройки и далее по всем модулям - Админка->%Модуль%->Настройки. Там вы сможете настроить постраничную навигацию, заголовки модулей, а так же ряд более глубоких настроек.
Далее полезным будет посетить Админка->Безопасность->Настройки и настроить уровень безопасности, но помните, что слишком строгие настройки могут приводить к банам пользователей, которые просто нечаянно сов
Бесплатная CMS Atom-X создаётся по принципу непрерывной разработки. Существует, по крайней мере сейчас, один поток разработки, в котором ведётся создание движка, со временем меняя свой характер: от множественных изменений до подготовки к релизу.
Для тестирования рекомендуем использовать самую последнюю версию движка, содержащую последние изменения. Они не всегда стабильны, но именно там быстрее появляются интересные фичи и исправления.
Для создания сайта же рекомендуем использовать релизную версию движка. В процессе разработки иногда к нам приходит понимание, что пора сделать релиз, для этого мы делаем меньше изменений, а больше исправлений багов, и на пике исправлений сохраняем последнюю версию как релизную и продолжаем добавлять интересные фичи.
ORM - это програмнная прослойка между базой данных и контроллерами(модулями). ORM позволяет оперировать данными в виде объектов, а не в виде табличных данных, как они храняться в БД. Зачем это нужно? Ответ очень прост - объектами проще манипулировать на уровне ООП приложения(программы).
Основными частями ORM являются:
- Models
- Entities
- DB Driver
Рассмотрим каждую из этих частей подробнее:
Models
/sys/inc/ORM/Models/
Модели служат для описания связей между собой, а так же для описания функций выборки. Каждой таблице в БД должна соответствовать одна модель. Модель представляет из себя класс унаследованный от класса FpsModel. Для того, чтобы стало понятно как должна называться сама модель(класс модели), проще всего привести несколько примеров(имя_таблицы БД = Модель):
news = NewsModel
news_add_fields = NewsAddFieldsModel
Для манипулирования данными, в основном, используется всего несколько методов. Сейчас я постараюсь дать максимально исчерпывающую информацию о них.
getCollection
FpsModel::getCollection([array $conditions[, array $additional_params]])
Возвращает массив записей из БД. Так как все модели наследуются от FpsModel, значит метод getCollection доступен в любой моделе. Метод возвращает массив объектов при удачном выполнении и false при неудаче. $conditions - условия выборки $additional_params - дополнительные параметры(page, limit, order, group)
getById
FpsModel::getById(integer $id)
Возвращает одну запись из БД по ее ID. Так как все модели наследуются от FpsModel, значит метод getById доступен в любой моделе. Метод возвращает объект при удачном выполнении и false при неудаче. $id - ID нужной записи
bindModel
FpsModel::bindModel(string $model[, array $params])
Используется для связывания моделей. Наприме[/b]
В AtomX есть система плагинов, которая позволяет расширять стандартный функционал системы. В этой статье я расскажу как использовать эту возможность.
Обязательные условия
Каждый плагин должен находиться в папке /sys/plugins/
Каждый плагин должен представлять из себя дирректорию, чье имя состоит из бук, цифр или знака подчеркивания "_". Буквенные символы могут быть в любом регистре.
Плагин должен содержать конфиг в формате JSON config.dat.
В конфиге должны быть следующие значения: className - Имя основного класса(ниже будет рассказанно что это) title - Название плагина active - Включен ли плагин(1|0) points - На какие хуки подписывается плагин(массив)
Плагин должен содержать файл index.php, в котором будет находится основной класс.
before_pather - Перед разбором URL, параметров нет.
after_pather - После разбора URL, параметров нет.
before_call_module - После разбора URL, параметры - массив параметров из URL(array(0 => 'news', 1 => 'view', 2 => 27)).
new_entity - После создания нового материала, принимает массив с новым материалом и названием модуля(array('entity' => EntityObject, 'module' => 'module_title')). Данный хук новый и пока реагирует не на любые материалы. На данный момент поддерживаются новости, фото, загрузки и статьи.
view_category - Просмотр категории. Хотя слово "просмотр" тут не совсем подходит. Этот хук вызывается при любом действии, затрагивающем категории. Например при просмотре материала вызовется этот хук с категорией, в которую данный материал входит. То же самое при редактировании комментария(например), хук вызовется с категорией, в которую входит матери