====== Туториал для начинающих ====== ===== Введение ===== Оговоримся сразу, что данный туториал расчитан на начинающих, кто до этого не использовал какую либо CMF (Content Management Framework). На наш взгляд, проще всего разобраться с новой системой - это создать свой проект на ее основе. Предположим, что нам требуется создать сайт на основе LIMB 2.4.x. Для этого необходимо: - Наличие установленых Apache, PHP, MySQL; - Установить и настроить LIMB; - Создать шаблоны страниц сайта. ===== Установка LIMB 2.x ===== Нам требуется скачать ядро LIMB 2.x, следует использовать самые последний релиз 2.x, т.к старые версии могут иметь проблемы совместимости с версиями PHP выше 4.4.x. Последние версии LIMB 2.x можно найти в [[http://sourceforge.net/project/showfiles.php?group_id=109345&package_id=118079|разделе релизов]] на SourceForge страничке проекта. Разархивируем на сервере архив в какую нибудь папку (на пример /home/bob/limb-2.x/). LIMB сам по себе ничего не "умеет", т.к. это скорее библиотека нежели готовое приложение, поэтому нам также потребуется макет проекта, использующего LIMB. ===== Создание проекта на базе LIMB 2.x ===== Создадим проект на основе заготовки, для этого скачиваем пустой проект(empty project) из [[http://sourceforge.net/project/showfiles.php?group_id=109345&package_id=118079|раздела релизов 2.x на SourceForge]] и разархивируем его в document_root домена. ==== Устанавливаем БД ==== Создаем отдельную базу данных в MySQL (Надо чтобы она могла поддерживать кодировку utf8), и загружаем в эту базу данных русскоязычный дамп из файла проекта **init/init_ru.sql** ==== Редактируем настройки ==== Теперь файл setup.override.php-example переименовываем в setup.override.php и правим в нем настройки для подключения к MySQL базы данных. Если ядро LIMB было установлено в отдельную папку (как в данном примере), нужно добавить в файл setup.override.php строчку: ... define('LIMB_DIR', '/home/bob/limb-2.4.0-alpha5/'); ... Таким образом мы явное определили путь до ядра LIMB 2.x. ==== Настройка http shared путей ==== Из директории ядра LIMB 2.x в папку проекта нужно скопировать папку shared (самый простой путь) или назначить ей Alias в настройках Apache. В данной папке хранятся стили, javascripts, изображения и проч., используемые для административного интерфейса LIMB, в принципе, можно обойтись и без нее, но тогда мы лишимся многих административных возможностей, например, управление структурой сайта, регистрация контроллеров, расстановка прав и многое другое. FIXME Дополнить описанием shared ==== Тестируем проект ==== В этот момент наш проект полностью готов к запуску. Если открыть в браузере домен с проектом, то должна возникнуть надпись "Главная" (если же ничего не отображается, то скорее всего произошла какая-то ошибка, описание которой, можно посмотреть в логах Apache или более подробно в логах проекта var/log/error.log) Не так уж и много, учитывая затраченные усилия, однако если зайти в административную зону проекта по адресу http://localhost/admin(логин admin, пароль test), то можно увидеть, что в структуре сайта уже присутствует достаточно большое количество различных элементов, настроены права доступа, созданы пользователи, зарегестрированны контроллеры и проч. Осталось только наполнить проект требуемым функционалом ;) FIXME **Необходимо переработать нижестоящий контент, сделать его более модульным, разбить по параграфам и сделать более читабельным** ===== Создание простейшего проекта ===== ==== Создание структуры сайта ==== Пусть нам требуется сайт с разделами: * Главная страница (адрес http://localhost/) * Контакты (адрес http://localhost/contacts/) * Статьи (адрес http://localhost/articles/) * Гостевая книга (адрес http://localhost/guestbook/) ===== Общий принцип работы LIMB 2.x ===== Теперь необходимо сделать паузу и объяснить некоторую логику работы LIMB. Если начинать с малого, то выглядит это так: Проект на лимб - это есть дерево некоторых объектов, каждому объекту сопоставляется некоторый набор действий (actions) которые описываются в специальных классах - называемых контроллерами (controllers), назначаемые объекту или группе объектов. Контроллеры также сопоставляют каждому действию, php класс действия(action), и шаблон для отображения. Т.е. получается что для каждого действия есть свой шаблон отображения и свой класс действия (action) , который может передавать результаты своей работы в шаблон посредством шаблонной системы WACT (ох, незнаю насколько понятно изложил...). Когда запрос выполняется через браузер, лимб определяет какой объект и какое действие было запрошено С помощью контроллера определяется имя класса действия и шаблон отображения.Далее запускается класс действия, по его завершению рендерится шаблон. Теперь вернемся к нашему установленному проекту... Когда мы запрашиваем просто / в браузере отрабатывается объект / , ему сопоставлен контроллер main_page_controller который по дефолту запускает действие display для которого определен шаблон main_page.html, файлы всех шаблонов хранятся в design/templates/ **ВАЖНО!**: Резолвинг имен файлов в LIMB работает по правилу: сначала простаматривается папка проекта, а потом папка ядра лимб. Т.е. если лимб не находит файл в папке проекта, то просматривает папку ядра. Т.е., Если мы поместим в файл design/templates/main_page.html какой либо хтмл код - он будет выводится в браузере. ===== Верстка и создание дизайна проекта ===== ==== Создание дизайна главной страницы ==== Теперь, давайте создадим главную страницу сайта. Для этого посмотрим какой контроллер обрабатывает объект main? Если вы используете limb 2.4.x то это main_page_controller. Открываем его (все контроллеры находятся в папке /src/controllers ) и смотрим какие действия (actions) он позволяет выполнить. По умолчанию при запросе объекта используется action=display . Смотрим параметр template_path в секции display, template_path указывает какой шаблон будет рендерится у меня он равен /main_page.html значит рендериться будет шаблон /design/templates/main_page.html поэтому макет главной страницы нужно поместить в design/templates/main_page.html. Все имажи используемые в хтмл макете, желательно помещать в папку design и ставить им путь от корня сайта(например: ). Вот пример моего кода: {$title}
 
{$content}
 
сам пример находится здесь: [[http://v2.modsystems.ru]] После окончания верстки макета главной страницы проверяем его работоспособность (пример здесь). Далее таким же образом создаем макет для шаблонов остальных страниц сайта. Чтобы не верстать каждый раз заново шаблоны отображения для каждого действия разных объектов, можно воспользоватся тегами WACT и . Работают они так: если поместить второй тег в начале какого нибудь файла шаблона указав в параметре file имя_родительского_файла и placeholder id тега в родительском файле, то весь файл шаблона будет вставлен на место в родительском файле шаблона (уф, сорри если не понятно:)). Так вот, основную тему дизайна сайта мы можем вынести, допустим, в файл page.html, а контент будем подключать тегом . Теперь мы можем просто в начале каждого шаблона какого-либо действия указывать: и этот шаблон будет полностью вставляться в **page.html**. FIXME Дополнить реальными примерами