Руководство разработчика   




Скачать 258.95 Kb.
PDF просмотр
НазваниеРуководство разработчика   
страница1/14
Дата конвертации01.08.2013
Размер258.95 Kb.
ТипРуководство
  1   2   3   4   5   6   7   8   9   ...   14
iPHPortal 
Руководство разработчика   
 
 
 
 

 
1.  Описание системы 
 

1.1 Системные требования 
2.2 Принципы работы системы 
 
2.  Установка системы 
 
2.1 Настройка Apache 
2.2 Структура директорий сайта 
2.3 Конфигурация системы 
 
3  Создание сайта на базе системы 
 
3.1 Порядок создания сайта 
3.2 Создание структуры сайта 
3.3 Создание шаблонов для сайта 
3.4 Создание обработчиков для сайта 
3.5 Создание страниц (наборов обработчик + шаблоны + опции редактирования) 
3.6 Дополнительные атрибуты 
3.7 Привязка страниц к рубрикам и экспорт/импорт страниц 
3.8 События и действия 
3.9 Типы рубрик (Модули) 
 
4  Страницы бэкофиса для управления системой 
 
4.1 Пункты меню 
4.2 Права пользователя 
4.3 Страницы администратора 
 
 
5  Методы классов 
 
5.1 Класс Materials (Материалы) 
5.2 Класс Rubrics (Рубрики) 
5.3 Класс Highlights (Анонсы) 
5.4 Класс Search (Поиск) 
5.5 Класс Templates (Шаблоны) 
5.6 Класс Polls (Голосования) 
5.7 Класс Forums (Форумы) 
5.8 Остальные функции 
 
 

6  Шаблонные директивы и методы класса “Шаблон” 
 
6.1 Директивы 
6.2 Методы класса “Шаблон” 
 
 
 
 
 
 
 
1.  Описание системы iPHPortal 
 
1.1. Системные требования 

 
Основные требования 
 
•  Веб-сервер Apache 1.3 и старше 
•  PHP 4.0.5 и старше, установленный как модуль Apache (+ zip extension для установки 
модулей) 
•  MySQL 3.23 и старше 
•  !!!!Права доступа на запись (создание / чтение /изменение / удаление) файлов на 
сайте из скриптов PHP!!!!! 
•  Возможность  использование  .htaccess  файлов  (в  httpd.conf  Apache  должна  быть 
установлена опция AllowOverride All) 
 
Опционально 
            
•  Для работы с изображениями  - модуль PHP GD или ImageMagick 
•  Для адресации статических файлов к материалам – модуль Apache mod_rewrite 
       
 
1.2 Принципы работы системы 
 

 
Сайты, построенные на базе системы состоят из 3 взаимосвязанных частей: 
 
1.  База данных 
2.  Административный интерфейс (бэкофис) 
3.  Внешнее представление сайта (фронтофис) 
 
В  базе  данных  хранится  структура  и  материалы  сайта,  информация  интерактивов  и 
служебная 
информация 
необходимая 
для 
работы 
системы. 
Изображения  
(сопровождающие картинки материала и т.д.) хранятся в файлах.  
 
Бэкофис – это основной инструмент администраторов и операторов системы. Бэкофис, на 
сайтах с установленной системой администрирования, как правило, остается неизменным 
по  своей  структуре  и  внешнему  виду.  Изменения  в  основном  сводятся  к  скрытию 
неиспользуемых функциональностей.  
 
Функции бэкофиса: 
 


1.  Изменение структуры и информационного наполнения сайта 
2.  Работа с шаблонами и обработчиками 
3.  Модерирование интерактивов всех типов 
4.  Управление пользователями и правами пользователей 
 
Фронтофис: 
 
Внешний  вид  и  функциональность  фронтофиса  определяется  структурой,  шаблонами  и 
обработчиками, на каждом сайте они отличаются. 
 
 
В системе сайт рассматривается как дерево рубрик (директорий), в рубриках размещаются 
материалы (файлы) или различные интерактивы. Все рубрики (директории) и материалы 
(файлы)  предгенерируются  на  сайт.    Первая  страница  сайта  –  это  индекс  корневой 
рубрики (директория /).   
 
 
 
Рис.1.1. Дерево рубрик сайта. 
 
Рубрики сайта хранятся в таблице rubrics. Дерево рубрик представлено в виде вложенных 
множеств, принцип описан тут http://sdm.viptop.ru/articles/sqltrees.html
 
Рубрики и материалы связаны как многие-ко-многим, так что материал может 
принадлежать нескольким рубрикам. Страницы материала хранятся в  отдельной таблице 
material_page.

Страницы  (файлы)  сайта  генерируются  с  помощью    пары  “обработчик”  (handler)  и 
“шаблон”  (template).  Обработчик  –  это  функция  языка  php  ,  в  которой  извлекаются 
нужные данные из БД, создается и наполняется объект “Шаблон”. Шаблоны создаются на 
языке  директив  доработанного  шаблонного  “движка”  TemplatePower.  Тексты 
обработчиков и шаблонов сохраняются в базе данных и предгенерируются в  файлы (для 
ускорения работы шаблонного “движка”). 
 
Из пары обработчик + шаблон(ы) создаются “страницы” (в странице может быть больше 
одного  шаблона,  например  при  генерации  статьи  на  сайте  может  использоваться  один 
обработчик и два шаблона – шаблон материала и шаблон версии для печати), действия и 
“типы рубрик”. 
 
Для  “страницы”  определяются  опции  редактирования  рубрики/материала  в  бэкофисе  – 
опции могут быть назначены отдельно для страницы  и для всего сайта.  
 
Созданные  “страницы”  связываются  с  рубриками  –  страница  для  индекса  рубрики  и 
страница для материалов рубрики. Cм. Раздел “Рубрики” руководства пользователя. 
 
Созданный шаблонным движком страница индекса рубрики или материал сохраняется в 
файл  (предгенерируются),  либо  сразу  выводится  на  экран.  Если  установлена  опция 
$site[‘regenerate_delay’]  (по  умолчанию  установлена,  опция  появилась  в  версии  1.32 
системы,  до  этого  файлы  перегенерировались  полностью),  то  при  перегенерации 
материала или индекса рубрики создается файл вида: 
 
 error_reporting (0); 
 require_once ('common.inc.php'); 
 ins_class ('rubrics'); 
 $rubric_data = ' ; 
 $rubrics->generate_index(1, $rubric_data); 
 include ($_SERVER["SCRIPT_FILENAME"]); 
?> 
 
В этом файле (приведен пример для индекса рубрики) вызывается функция перегенерации 
индекса  рубрики  (т.е.  того  же    самого  файла)  и  затем  новый  файл  показывается 
пользователю.  Это  позволяет  снизить  нагрузку  на  сервер  при  перегенерации  большого 
количества материалов и индексов рубрик, т.е. нагрузка “растягивается” во времени. 
 
В  сохраненном  в  файл    коде  используются  директивы  php  и  поэтому  расширение 
предгенерируемых файлов должно быть настроено в конфигурационном файле Apache как 
обрабатываемое PHP (по умолчанию используется расширение .php) 
 
 
Генерация индекса рубрики происходит так: 
 
1.  Считывается информация о рубрике  
2.  Если у рубрики есть индекс (поле rubric_index != 0) продолжаем 
3.  Если тип индекса рубрики – “редирект” генерируем индексный файл рубрики 
вида  
4.  Иначе получаем информацию об обработчике и шаблонах индекса рубрики 
5.  Включаем файл с обработчиком и вызываем функцию обработчик  
 
См. функцию generate_index в классе rubrics_basic. 
 

Аналогично для материалов рубрики функция generate_material в классе materials_basic 
 
При  занесении  материала  пользователем  генерируется  файл    материала  и 
перегенерируется  индекс  рубрики,  в  которую  входит  материал,  и  индексы  всех 
вышележащих  рубрик.  Индекс  рубрики  и  всех  родительских  рубрик  перегенерируется 
также при редактировании параметров рубрики. 
 
Каждая рубрика и материал имеют “хозяина” (хозяин  - это пользователь, который занес 
рубрику или материал). 
 
Пользовательская  система  состоит  из  пользователей,  групп  пользователей  и  прав 
пользователей.  Права  пользователей  определяют  то,  что  пользователь  может  видеть  и 
редактировать  в  бэкофисе,  права  назначаются  для  групп  пользователей.  Пользователь 
может  входить  в  любое  количество  групп,  его  права  –  это  объединение  прав  групп,  в 
которые он входит. См. раздел “Пользователи” руководства пользователя. 
 
 
 
 
 
 
 
2.  Установка системы 
 
Внимание! 
 
Разработка сайта обычно ведется на локальном компьютере. После разработки, когда сайт 
полностью  готов  и  правильно  работает,  он  переносится  на  сервер  хостинг-провайдера.  
Т.е.  установка  системы  производится  два  раза  –  сначала  на  локальной  машине,  затем 
готовый сайт устанавливается на удаленном сервере. Естественно ничто не мешает сразу 
устанавливать систему на рабочий сервер и вести разработку сайта на нем. 
 
 
2.2 Структура директорий сайта 
 

/docs/  - www директория сайта (варианты htdocs, www и т.п.) 
/include/ 
 
… другие директории 
 
Директория include может быть вложена в www директорию сайта. 
 


 
 
Рис.  2.1.  Структура  директорий  сайта  с  установленной  системой.  В  директории 
docs/admin  и  include  находятся  файлы  необходимые  для  работы  системы.  В 
поддиректориях  директории  docs/mages/  размещаются  различные  типы  изображений. 
Остальные директории docs/*** созданы при создании структуры  сайта (п. 3.2) 
 
Назначение директорий: 
 
Директория 
Описание 
/docs/admin/ 
Cкрипты административного интерфейса. 
 
/docs/admin/doc 
Документация 
/docs/images/banners/ 
Баннеры (картинки, flash). 
/docs/images/material-gallery/ 
Картинки  фотогалереи  материала,  для 
каждой  галереи  создается  поддиректория, 
имя которой равно material_id материала. 
/docs/images/material-images/ 
Картинки 
материалов. 
Картинки 
загружаются  через  ”визуальный”  или 
“простой” редактор текста.  
/docs/images/material-thumb/ 
Сопровождающие картинки материалов. 
/docs/images/rubric-thumb/ 
Сопровождающие картинки рубрик 
/include/ 
Содержит  основной  файл  конфигурации 
сайта common.inc.php. 
/include/cache/ 
Файлы  с  кэшированными  данными  (права 
пользователя и т.д.) 
/include/class/ 
Файлы 
классов 
объектов 
системы 
управления сайтом. 
/include/conf/ 
Файлы конфигурации. 
/include/events/ 
Файлы событий и действий (п. 3.7). 
/include/func/ 
Функции 
/include/handlers/ 
Предгенерированные файлы обработчиков. 

/include/meta/ 
Предгенерированные  файлы  с  META- 
данными материалов и рубрик 
/include/templates/ 
Предгенерированные файлы с шаблонами. 
 
Настройки имен директорий находятся в файле /include/conf/filepaths.inc.php. 
 
Директорию  images  и  поддиректорию  images/..  необязательно  создавать  вручную,  ее 
создаст скрипт при первой загрузке картинки. 
 
 
 
2.2. Настройка Apache 
 
Для того чтобы отрабатывались инструкции в файлах .htaccess  в конфигурационный файл 
Apache httpd.conf нужно добавить   
 
 
    AllowOverride All 
 
 
Вместо “/” может быть указание директории, где находится сайт. 
 
Если используется Russian Apache, то  в конфигурационный файл нужно добавить строку: 
 
CharsetRecodeMultipartForms Off 
 
Иначе  загружаемые  через  браузер  файлы  (картинки  и  т.п.)  будут  “битыми”,  их  формат 
будет нарушен. 
 
!!!  Необходимо чтобы у скриптов php было право на запись во всех директориях на 
сайте. Для этого Apache должен работать от пользователя – владельца файлов, или 
права доступа на все директории и файлы на сайте 666. !!!
 
  
Для  загрузки  модулей  системы  должно  быть  подключено  расширение  php_zip.  
Без 
этого  расширения  модули,  поставляемые  в  виде  заархивированного  xml-файла,  нужно 
предварительно разархивировать. 
 
 
2.3 Установка и конфигурация системы 
 
Для установки системы нужно: 
 
1.  Разархивировать дистрибутив.  
2.  Настроить DocumentRoot веб-сервера на директорию www дистрибутива.  
 
Например, вы распаковали дистрибутив в директорию /usr/local/www/distribsite/.  
 



 
Рис. 2.2. Распакованный дистрибутив 
 
Тогда  настройка  DocumentRoot  Apache  (устанавливается  в  файле  httpd.conf)  должна 
указывать  на  директорию  /usr/local/www/distribsite/docs.  Если  на  вашем  хостинге 
невозможно  изменить  настройку  DocumentRoot  –  то  имя  директорию  docs  можно 
переименовать, в дальнейшем   в конфигурационный файл нужно будет внести изменения. 
 
 
3.  Запустить  скрипт  настройки  admin/install/.  Если  система  установлена  на  локальный 
сервер,  то  адрес  инсталляционного  скрипта  http://localhost/admin/install/.  Вместо 
запуска  скрипта  настройки  можно  отредактировать  конфигурационные  файлы 
системы (п.5). 
 
 
 
Рис. 2.3. Сообщение при заходе на сайт с установленной, но не настроенной системой 
 
Возможные ошибки: 
 
• 
Если при запуске скрипта выдает ошибку HTTP 500 – то в конфигурационном 
файле Apache не указана опция AllowOverride All. 
• 
Если вместо запуска скрипта  установки отображается его исходный код – то  
PHP не настроен на файлы с расширением .php 
• 
Если  вместо  запуска  скрипта  установки  показывается  список  файлов 
директории  admin/install/  или  выдается  ошибка  HTTP  403    -  то  в  списке 
индексных файлов Apache не указан index.php 
 
 
 
4.  Провести настройку 
 
 



 
 
Рис. 2.4. Установка пути подключения PHP скриптов 
 
Для того подключения скриптов системы необходимо указать путь к  директории include 
дистрибутива. Если путь предложенный инсталлятором правильный – нажмите “Дальше”. 
 
 
 
 
 
 
Рис. 2.5. Установка параметров соединения с БД 
 
Для соединения с БД необходимо указать адрес сервера БД, логин и пароль пользователя 
БД (это не логин/пароль администратора системы, его нужно получить у администратора 
сервера БД).  Этот шаг будет пропущен, если адрес вашего сервера БД “localhost”, логин 
“root” и пароль “”. 
  
Затем введите название БД (например, iphportal) . После создания БД автоматически будет 
загружен дамп c таблицами системы (загрузка дампа может занять некоторое время). Если 
система не сможет автоматически загрузить дамп базы данных, то это необходимо сделать 
вручную. Информацию в БД можно загрузить  в кодировке windows-1251 или koi8-r.  В 
файлах системы вся информация хранится в кодировке Windows-1251. Информацию в БД 
в некоторых случаях (например, на Unix-сервере, где данные в кодировке Windows-1251 
неправильно сортируются) удобнее держать в кодировке Koi8-R.   
 
  
 
Ручная загрузка дампа базы данных: 
 
Дамп загружается командой: 
mysql –u пользователь –p пароль имя_базы_данных* < iphportal.sql** 
 
* База данных должна быть предварительно создана  
   (выполнить в консоли MySQL): CREATE DATABASE iphportal 



 
**Дамп базы данных iphportal.win.sql и iphportal.koi.sql находится в директории db дистрибутива. 
 
Нельзя загружать дамп базы данных через PhpMyAdmin, т.к. он не загрузится полностью и работа 
системы будет нарушена. 
 
 
 
После  настройки  БД  вам  нужно  ввести  администраторский  логин/пароль 
(Administrator/123456).   
 
 
 
Рис. 2.6. Ввод логина/пароля администратора. 
 
Внимание! Обязательно нужно изменить пароль администратора после установки! 
 
 
 
 
Рис. 2.7. Настройка переменной $site[‘root’] 
 
Затем  нужно  установить  переменную  $site[‘root’]  –  директория  в  которую  установлен 
дистрибутив.  При  автоматическом  определении  $site[‘root’]  ставится  как  родительская 
директория  DocumentRoot.  Например,  если  настройка  DocumentRoot    равна 
/usr/local/www/distribsite/docs, 
тогда 
$site[‘root’] 
будет 
установлена 
как 
/usr/local/www/distribsite. 
Переменные  $site[‘path’]  и  $site[‘include_path’]  изменяются,  только  если  вы 
переименовали директории docs и include. 
 


 
 
Рис. 2.7. Проверка прав на запись файлов. 
 
Для  работы  системы  необходимо  чтобы  у  пользователя,  от  которого  работает  Apache, 
были права на запись  в файлах и директориях: 
 
docs  
include/common.inc.php 
include/cache/userrights/anonym 
include/conf/functional.inc.php 
include/conf/page_settings.inc.php 
include/conf/settings.inc.php 
include/events 
include/handlers 
include/meta 
include/templates 
include/temp 
  
Скрипт  настройки  проверяет  права  на  запись  в  этих  директориях  и  в  случае  ошибки 
выдает предупреждение.  Для выдачи прав на запись в директории /  файле выполните в 
консоли  команду  chmod  -R  0777  {имя  файла/директории}  или  запустите  shell-скрипт 
set_rights.sh, находящийся в корневой директории дистрибутива.  
 


 
 
Рис. 2.8 Основые настройки системы 
 
После  выполнения  обязательных  проверок  настроек  PHP,  соединения  с  БД  и  прав  на 
запись  файлов  выполняется  настройка  параметров  системы.    Обязательно  нужно 
заполнить  поля  “Название  сайта”  и  “URL  сайта”.  В  основных  параметрах  можно  задать 
уровень отображения ошибок PHP и БД.  По умолчанию показываются все ошибки PHP, и 
при  возникновении  ошибки  в  БД  выводится  сообщение  об  ошибке  и  прерывается 
выполнение скрипта.  
 
Для  очистки  дистрибутива  от  занесенных  рубрик,  материалов,  модулей  и  др.  выберите 
закладку “Очистить дистрибутив” (рис. 2.9) 
 



 
 
Рис. 2.9. Очистка дистрибутива 
 
 
После установки системы перейти на настроечный скрипт можно нажав на ссылку 
“Настройки” в верхней части страницы административного интерфейса. 
 
 
 
Рис. 2.10. Ссылка на настройки
 
 
 
5.  Ручная настройка конфигурационных файлов (при необходимости) 
 
 
Конфигурационны файлы: 
 
•  docs/.htaccess 
•  include/common.inc.php 
•  include/functional.inc.php (опционально) 
 
 
 
В корне директории docs сайта размещается .htaccess файл следующего содержания: 
 
#Путь для включения  
#НЕОБХОДИМО ИЗМЕНИТЬ В СООТВЕТСТВИИ С ТЕМ, В КАКУЮ ДИРЕКТОРИЮ СКОПИРОВАН 
#ДИСТРИБУТИВ 
php_value include_path ".;E:/WWWApache/DevelopSite/include" 
 
 
#ДАЛЕЕ НИЧЕГО ИЗМЕНЯТЬ НЕ НУЖНО 
php_value register_globals 1 
php_value magic_quotes_gpc  1 
DirectoryIndex index.html index.php 
 
#Для адресации "статических файлов" 
 
#Выключить Multiviews если он включен в httpd.conf 
Options -Multiviews 
RewriteEngine  on 
 

RewriteCond    %{REQUEST_FILENAME}  !-d 
RewriteCond    %{REQUEST_FILENAME}  !-f 
 
RewriteRule  (.*)/$ 
 
$1.html 
 
RewriteCond    %{REQUEST_FILENAME}  !-d 
RewriteCond    %{REQUEST_FILENAME}  !-f 
 
RewriteRule  (.*) 
/action/error404.html 
 
 
 
# Если модуль mod_rewrite не подключен 
 
Options Multiviews 
 
 
 
Для  работы  системы  необходимо  чтобы  директория  include  в  дистрибутиве    была 
включена в include_path PHP.    
 
php_value include_path .:/full/path/to/site/root/include 
 
Для того чтобы сгенерированные файлы материалов и рубрик обрабатывались php, в 
конфигурационном файле должна присутствовать строка: 
 
AddType application/x-httpd-php .html .php . 
 
В файле /include/conf/filepaths.inc.php можно настроить другое расширение для 
генерируемых файлов (переменная $site['material_file_ext']). В переменной 
$site['material_url_ext'] задается расширение “урла” материала. Расширение урла может 
быть '/', т.е. ссылка на материал вместо site.ru/material.html будет site.ru/material/ 
(реализуется через Options Multiviews или mod_rewrite). 
 
При наличии установленного модуля “mod_rewrite” в .htaccess файле эмулируется Options 
Multiviews,  когда  при  обращении  к  файлу  /path/to/file/  Apache  пробует  открыть  файл 
/path/to/file.html.  Если  файл  не  будет  найден,  то  управление  передается  единому 
обработчику  ошибок,  который  пробует  сопоставить  запрашиваемый  URL  c  URL 
материала, для того чтобы отобразить статические файлы материала.  
 
Если  модуль  mod_rewrite  не  установлен  –  тогда  используется  директива  Options 
Multiviews,  при  этом  теряется  возможность  адресации  “статических  файлов”. 
Функциональность  “cтатические  файлы”  –  это  возможность  загружать  файлы  в  
отдельную  для  каждого  материала  директорию,    при  отображении  к  содержанию 
статического файла добавляется header (шапка) и footer (подвал). Адресуются статические 
файлы 
по 
адресу 
материала. 
Например, 
материал 
имеет 
url  
http://site.ru/lib/programming/java/thinking-in-java/, тогда статический файл contents.html для 
этого  материала  будет  иметь  адрес  http://site.ru/lib/programming/java/thinking-in-
java/contents.html. 
Адресация  статических  файлов  производится  через  скрипт 
docs/action/error404.html. 
 
 
 
 
 
Файл include/common.inc.php 

 
// Уровень вывода ошибок PHP 
// На период разработки лучше выставить вывод всех ошибок 
 $site['php_error_reporting'] = E_ALL; 
 error_reporting($site['php_error_reporting']); 
   
 // Данные доступа к базе данных 
 
 $site['db_hostname'] = 'localhost';  
 $site['database'] = 'iphportal'; 
 $site['db_username'] = 'root';        
 $site['db_password'] = ' ;  
 
//БД в кодировке koi8-r и нужна автоматическая перекодировка koi8r-windows1251 
 $site['db_koiwin_recode'] = '1'; 
 
 // Директория сайта 
 $site['root']='E:/WWWApache/site'; //корень всего сайта 
 $site['path'] =  '/docs'; // Если нет отдельной web-директории, то $site[‘path’] = ‘’; 
  
  
 $site['name'] = 'Site.Ru'; // название сайта  
 $site['url'] = 'http://site.ru; // URL сайта 
  
 $site['css_file'] = '/site-style.css'; // Css файл сайта, используется в визуальном редакторе 
  
  
 $site['include_path'] = '/include'; // путь к директории где лежит common.inc.php, полный путь получается 
                                                      // $site[‘root’].$site[‘include_path’]. На эту директорию должен быть настроен 
                                                     // include_path в PHP 
 $site['images_path'] = '/images'; // путь к директории с картинками, полный путь получается            
                                                     // $site[‘root’].$site[‘path’].$site[‘images_path’] 
  
// Имя куки для авторизации на сайте 
 $site['auth_cookie_name'] = 'authcook_558502'; 
 
  // модуль изменения картинок и поддерживаемые типы картинок (через запятую)  
 $site['material_thumb_resize_module'] = 'IM'; // варианты IM (ImageMagick) или GD 
 $site['image_magick_path'] = 'E:\ImageMagick\\'; //путь к директории где лежит ImageMagick 
 $site['material_thumb_resize_formats'] = 'JPG,GIF'; 
 
//Если модуля изменения картинок нет , то последние строки можно удалить или закомментировать. 
 
// Команда консоли для разархивирования zip архива 
 $site['unzipfile_string'] = '$command = "F:\Distribs\zipstaff\powerarc.exe -e $filename";'; 
 // Для unix 
 // $site['unzipfile_string'] = '$command = "/usr/local/bin/unzip -o $filename -d $full_real_path";';  
 
 
// Права с которыми создаются новые директории 
 //  Если  пользователь  от  которого  закачиваются  файлы  и  от  которого  работает  Apache  один  и  тот  же  - 
ставить 0700 
 $site['dir_permission'] = 0777; 
 
// При возникновении ошибок в БД 
 // варианты: show,exit - показать описание ошибки и прекратить выполнение скрипта 
 // show - показать описание ошибки и продолжить выполнение скрипта 
 // exit - завершить выполнение не выводя сообщения 
 // пусто - игнорировать ошибку и продолжить дальше выполнение скрипта 
 $site['db_error'] = 'show,exit'; 
 
 

Если  планируется  управляет  системой  только  частью  сайта,  например  начиная  с 
директории  www.имя  сайта.ru/site/,  то  настроить  конфигурационный  файл  можно  двумя 
способами : 
 
1.  Система  настраивается  на  весь  сайт,  но  для  корневой  рубрики  не  определяется 
“индексная  страница”  и  в  корневой  директории  остается  файл,  который  правится 
вручную.  Расширение  этого  файла  должно  отличаться  от  расширения  файлов 
рубрик и материалов, которые создает система. 
2.  $site['path'] и $site[‘url’] прописываются вместе с директорией, например /docs/site и 
http://www.имя сайта.ru/site/. При создании обработчиков обязательно использовать 
полные ссылки на материалы, картинки и рубрики. 
 
Если  в  базе  данных  уже  существуют  таблицы  с  именами,  которые  используется  в 
таблицах системы, нужно переименовать таблицы БД системы и внести изменения в файл 
include/tables.inc.php 
 
 
На  некоторых  хостингах  пользователь, от  которого  работает  Apache,  и  пользователь,  от 
которого закачиваются по FTP файлы разные. И после закачки скрипты не могут изменять 
директории и файлы, которые были закачаны по FTP. В этом случае нужно обязательно 
изменить  настройку  права  для  создаваемых  скриптом  директорий  –  в  файле 
conf/filepaths.inc.php $site['dir_permission'] нужно изменить на 0777 . 
 
Скриптами  изменяются  файлы  и  директории  в  директориях[  docs,  include/conf/, 
include/events/, include/handlers/, include/meta/, include/templates, include/cache – на все эти и 
дочерние  директории  нужно  дать  права    777  (все,  что  написано  в  данном  абзаце  
относится только к случаю, когда разные пользователи Apache и FTP!!!)
.  Затем либо 
поставить право 777 на все файлы в этим директориях.  
 
 
Файл include/conf/functional.inc.php 
 
// Проверять текущего пользователя на фронтофисе сайта или нет (больше нагрузка на сервер) 
 $site['check_frontoffice_user']= 1; 
  
  
 // Перегенерация материалов при первом просмотре 
 $site['regenerate_delay'] = 1; 
  
 // Использовать расширенную модель управления состоянием материалов или нет 
 $site['use_extended_workflow_model'] = 1; 
  
  
 //Имитировать что статические файлы материалов находятся в директории материала (Нужен ModRewrite) 
 $site['material_static_files_rewrite'] = 1;  
  
 // Возможно ли выполнение задач (публикация на опр.дату, expire и т.п.) 
 // Для того чтобы производилось выполнение задач, должен периодически 
 // вызываться файл admin/check_tasks.php (через cron или еще как-нибудь,  
 //можно даже нанять человека:) 
 $site['tasks'] = 0; 
  
 
 // Возможен ли тип рубрики "Архив по дате" 
 // Этот тип использовался 1 раз на первой версии runet.ru, так что скорее всего очмного глюков 
 $site['rubric_type_date_archive'] = false; 

  
 //$site['banner_store_statistics'] = 14; // количество дней хранения статистика баннеров 
 $site['user_store_statistics'] = 30; // количество дней хранения логов пользователя 
 
 
 
3.  Создание сайта на базе системы 
 
     
3.1 Порядок создания сайта
 
 
Все    этапы  создания  сайта  выполняются  через  административный  интерфейс, 
находящийся по адресу имя сайта/admin 
 
Для захода в административный интерфейс нужно ввести логин / пароль. Затем изменить 
логин и пароль администратора сайта на новый. 
 
Логин / пароль администратора: Administrator / 123456 
 
При установке системы на рабочий сайт необходимо изменить пароль администратора, а 
также проверить наличие неиспользуемых логинов и удалить их. 
 
Основные этапы создания сайта: 
 
1.  Создание структуры сайта 
2.  Создание шаблонов для сайта 
3.  Создание обработчиков для сайта 
4.  Создание  или  загрузка  страниц  (наборов  обработчик  +  шаблоны  +  опции 
редактирования) 
5.  Привязка страниц к рубрикам 
6.  Создание действий 
7.  Создание или загрузка и привязка к рубрикам типов рубрик (модули) 
8.  Определение видимых пользователю пунктов меню 
 
Перед началом работы нужно очистить установленную систему от рубрик, обработчиков, 
шаблонов,  версий  шаблонов,  действий,  групп  пользователей  и  пользователей,  которые 
находятся в дистрибутиве (если они не будут использоваться). 
      
 
3.2 Создание структуры сайта 
 
Для  создания  структуры  сайта  выберите  пункт  меню  “Рубрики”.    См.  раздел  “Рубрики” 
руководства пользователя. При создании структуры сайта “страницы” индекса рубрики и 
материалов рубрики определять не нужно (“страниц” еще нет). 
 
 
3.3 Создание шаблонов для сайта 
 
Шаблоны  для  сайта  создаются  на  основе  имеющегося  html-макета.  Необходимо  чтобы 
были  html-макеты  всех  типов  страниц  сайта  (индекс  сайта,  индекс  рубрики,  материал 
(статья) и т.п.). Для занесения шаблонов выберите пункт меню Генерация -> Шаблоны  и 
затем  “Добавить шаблон”. 
 

Картинки  дизайна  сайта  рекомендуется  записывать  в  директорию  docs/i/.  Ссылки  в 
шаблонах нужно прописывать с корня сайта, например, , т.к. файл, 
сгенерированный  по  шаблону  может  находиться  в  любой  директории  и  ссылка  на 
картинку должна работать во всех случаях. 
 
Шаблоны  бывают  четырех  типов  –  шаблон  страницы  (этот  шаблон  можно  выбрать  при 
создании “страницы”), инклуд (эти шаблоны включаются в шаблоны страницы),  шаблон 
инклуда (используются при предгенерации элементов сайта, например меню, а также при 
выводе  баннеров)  и  “версии  шаблонов”  –  используются  для  создания  изменяемых 
элементов страниц, например меню, которое изменяется  в зависимости от рубрики. 
 
Для  удобства  создания  и  дальнейшего  изменения,  при  создании шаблонов  сайта, общие 
логические элементы для страниц (например “хидер” (шапка), “footer” (подвал), меню  и 
т.п.)  выделяются в “инклуды” (при занесении шаблона нужно выбрать “Тип шаблона” – 
“Инклуд”). В шаблоны страниц инклуды вставляются директивой 
 
 
 
Например,  занесли  шаблон  -  инклуд  с  названием  “Меню”  и  кодом  “menu”  и  шаблон 
страницы  с  названием  “Материал”  и  кодом  “material”.  В  то  место  текста  шаблона 
страницы “Материал”, где должен быть текст инклуда нужно занести строку 
 
 
 
Место в шаблоне, где будет находиться некоторая строка, определяемая в обработчике - 
переменная шаблона, обозначается {имя переменной}. 
 
Например,  в  шаблоне  материала,  в  месте,  где  будет  находиться  заголовок  материала 
нужно  поместить  {material_title}.  Если  переменной  шаблона  в  обработчике  ставится  в 
соответствие  массив,  до  доступ  к  элементам  массива  реализуется  так  {имя 
переменной.ключ массива}, например {image.width}. О том, как назначаются значения для 
переменных см. пункт 3.4. 
 
Для создания динамических блоков используется директива 
 
 
 …. Текст блока 
 
 
Содержание  динамического  блока  не  будет  выводится,  если  в  обработчике  не  будет 
выполнен  метод  $tpl->newBlock  (‘имя  блока’).  Если  метод  вызывается  несколько  раз  – 
текст  блока  выводится  несколько  раз.  Динамические  блоки  используются  для  вывода 
списка некоторых элементов, например строк таблицы. Данные для динамических блоков 
заносятся в обработчиках. 
 
Пример динамического блока:
 
 
 
   
     
     
    
 
    

    
      
      
    
    
 
НазваниеКоличество
{name}{quantity}
 
      
Можно создавать вложенные динамические блоки.  
 
Пример вложенных динамических блоков: 
 
 
   
     
     
     
 
    
    
      
      
      
    
    
 
НазваниеКоличествоКартинка 
   
{name}{quantity} 
 
 
 
  
 
 
 
 
 
 
Каждая директива шаблонного языка (INCLUDE BLOCK, START BLOCK и т.д.) должна 
быть на новой строке. 
 
В шаблоны можно добавлять код PHP, заключенный в . Например H:I’)  ?>  -  для  вывода  текущей  даты.  Этот  код  будет  вызываться  динамически  –  т.е.  в 
предгенерированном  файле  будут  эти  самые  команды,  и  они  будут  вызываться  при 
каждом просмотре. Эта возможность используется для включения динамических блоков в 
предгенерированные  статические  страницы.  Для  того  чтобы  динамические  вставки 
правильно  показывались  при  прямом  выводе  содержания  страницы  методом  $tpl-
>printToScreen()  объект  шаблона  нужно  создавать,  указывая  во  втором  параметре 
‘NO_INCLUDE’ 
 
$tpl = new TemplatePower($templates['main_template'],’NO_INCLUDE’);    
 
 
Если  нужна  возможность  менять  в    title  страниц  и  мета-теги  то  для  их  вывода 
используются директивы .    
 
Пример: 
 

 
  
    
     
  
 
…. 
 
Для  того  чтобы  вывелись  title  и  meta,  относящиеся  именно  к  генерируемому  материалу 
или рубрике, в обработчике необходимо указать 
 
$tpl->assignPlacePath (‘путь к МЕТА-данным страницы’) 
 
В  обработчике,  генерирующем  материал,  функция  вызывается  с  параметром 
'material/'.$material_data['material_id'],  в  обработчике,  генерирующем  индекс  рубрики,  с 
параметром 'rubric/'.$rubric_data['rubric_id']. Вызывается до метода prepare(). 
 
Иначе вместо  и  будет пусто. 
 
 
Редактировать обработчик можно  двумя способами: 
 
1.  Через форму редактирования шаблона в административном интерфейсе 
2.  Редактировать  файл  шаблона.  Текст  шаблона  хранится  в  базе  данных,  и  после 
сохранения  в  базу  записывается  в  файл  include/templates/{код_шаблона}.tpl.  При 
генерации  страниц используется  именно  этот файл.  Если  его отредактировать,  то 
измененный  вид  шаблона  будет  виден  пользователям  сайта  при  условии,  что 
страница  выводится  динамически.  Если  шаблон  используется  при  предгенерации 
материалов,  то  для  перегенерации  нужно  выбрать  пункт  меню  Генерация  -> 
Шаблоны. Система автоматически находит изменившиеся файлы и загружает их в 
базу данных. Для того чтобы текст шаблона в базе данных обновился из файла, и 
перегенерировались все записи, созданные с использованием измененного шаблона 
нужно отметить чекбокс “Обновить из файла”. Если снять отметку с чекбокса, то 
содержание файла заменится текстом шаблона  из базы данных. 
 
3.4 Создание обработчиков для сайта 
 
На  разных  сайтах  версии  системы  отличаются,  поэтому,  скопировав  обработчик  со 
старого  сайта  необходимо  проверить  что,  формат  вызова  функций  классов  (п.5 
руководства) совпадает с форматом текущей версии. 
 
Для  комплексной  загрузки  обработчиков  и  шаблонов  есть  возможность  загрузки 
“страниц” (см. п. 3.5). 
 
Обработчик  –  это  функция,  автоматически  вызываемая  при генерации индекса  рубрики, 
материала, при выполнении действия и при отображении модуля (типа рубрики). Для того 
чтобы  увидеть  список  занесенных  обработчиков  выберите  пункт  меню  Генерация  -> 
Обработчики.  
 
Для  занесения  обработчика  нажмите на  закладку  “Добавить  обработчик”.  Затем  введите 
название  обработчика  (например  “Рубрика  –  список  материалов”)  и  код  обработчика 
(“rubric_index_materials”  –    название  функции).  Обработчик  может  быть  трех  типов: 
“Генерация  в  файл”,  “Динамический”  и  “Инклуд”.  Тип  “инклуд”  используется  для 
разбиения  больших  обработчиков  на  части  или  для  выделения  части  кода,  которая 


используется  в  нескольких  обработчиках.  Код  “инклуда”  включается  в  обработчик 
функцией  include  ('handlers/guestbooks_list.hdl');,  где  guestbooks_list  –  код  обработчика-
инклуда. 
 
 
 
Рис. 3.1. Занесение / редактирования обработчика. 
 
Для  различных  применений  обработчики  имеют  разный  формат  вызова.  Например,  при 
генерации материала формат вызова такой: 
 
function generate_material ($templates,$rubric_data, $material_data) 

  // … текст функции 

 
В  массиве  $templates  находятся  номера  шаблонов  для  “страницы”  (п.3.5)  в  которой 
используется  обработчик.  Главный  шаблон  -  $templates[‘main_template’].  $rubric_data  – 
данные рубрики, в которой генерируется материал, $material_data – данные генерируемого 
материала  (про формат данных рубрики, материала см. раздел 5 руководства) 
 
Чтобы увидеть возможные форматы нажмите на заголовок “Форматы обработчиков”. При 
редактировании  обработчика  показывается  список  рубрик,  типов  рубрик,  где    он 
используется. Для того чтобы показывалась текущая строка  в поле редактирования текста 
обработчика, нажмите на чекбокс “Показывать номера строк”. Номер строки показывается 
в  левом  нижнем  углу  поля  редактирования  текста  обработчика  (Рис.  3.2).    После 
изменения обработчика перегенерируются файлы, созданные с его использованием (если 
обработчик используется при генерации большого количества материалов то этот процесс 
может затянуться). Для того чтобы отменить перегенерацию снимите отметку с чекбокса 
“Обновлять  связанные  страницы”.  Скрипты  обновления  вызываются  в  отдельном 
маленьком  окне.  Если  нужно  чтобы  это  окно  не  закрывалось  после  завершения  работы 
скрипта (например, чтобы видеть отладочные сообщения) – для этого снимите отметку с 
чекбокса “Закрывать отладочное окно”. 



 
 
 
Рис. 3.2. Поле редактирования текста обработчика. 
 
Редактировать обработчик можно  двумя способами: 
 
3.  Через форму редактирования обработчика (рис. 3.1) 
4.  Редактировать  файл  обработчика.  Текст  функции-обработчика  хранится  в  базе 
данных, 
и 
после 
сохранения 
в 
базу 
записывается 
в 
файл 
include/handlers/{код_обработчика}.hdl.  При  генерации  страниц  используется 
именно  этот  файл.  Если  его  отредактировать,  то  измененная  функциональность 
обработчика  будет  видна  пользователям  сайта  при  условии,  что  обработчик 
выполняется  при  каждом  показе  страницы  сайта.  Если  обработчик  используется 
при предгенерации материалов, то для перегенерации нужно выбрать пункт меню 
Генерация -> Обработчики. Система автоматически находит изменившиеся файлы 
и загружает их в базу данных (рис. 3.3). Для того чтобы текст обработчика в базе 
данных  обновился  из  файла,  и  перегенерировались  все  записи,  созданные 
измененным  обработчиков  нужно  отметить  чекбокс  “Обновить  из  файла”.  Если 
снять  отметку  с  чекбокса,  то  содержание  файла  заменится  текстом  функции-
обработчика из базы данных. 
 
 
 
Рис. 3.5. Диалоговое окно при обновлении обработчика. 
 
 
Результатом  действия  обработчика  может  быть  сгенерированный  файл  индекса  рубрики 
или материала, динамическая выдача индекса рубрики,  генерация меню при выполнении 
действия и т.п. 
 

Различие между типами обработчиков “Генерация в файл” и “Динамический” проявляется 
только, если обработчик используется в странице типа “Автогенерация” (индекс рубрики).  
 
Если  обработчик  имеет  тип  “Генерация  в  файл”  –  он  вызывается  каждый  раз  при 
перегенерации  индекса  рубрики.  Индекс  рубрики  перегенерируется  при  изменении 
параметров  данной  или  дочерней  рубрики  или  при  изменении  материала,  входящего  в 
данную или дочернюю рубрики. При этом результатом работы обработчика должна быть 
команда  dump_rubric_file  ($rubric_data,  $tpl->getOutputContent())  –  она  записывает 
содержание страницы в файл. 
 
При генерации индекса рубрики формат обработчика такой: 
 
function rubric_index_materials ($templates, $rubric_data) 
{  
  global $site; 
 
  $tpl = new TemplatePower($templates['main_template']);   
  $tpl->prepare(); 
 
  // Другие действия 
  dump_rubric_file ($rubric_data, $tpl->getOutputContent()); 

?> 
 
в этом обработчике создается объект “Шаблон”, в качестве параметра ему передается код 
шаблона  страницы,  который  определен  для  генерируемого  индекса  рубрики.  Далее 
шаблон парсится и результат записывается в индексный файл рубрики. 
 
Если  обработчик  имеет  тип  “Динамический”,  то  обработчик  выполняется  каждый  раз, 
когда  просматривают  соответствующую  рубрику  на  сайте.  Результатом  действия 
“динамического”  обработчика 
является  выдача  текста  страницы,  т.е.  вместо 
dump_rubric_file  ($rubric_data,  $tpl->getOutputContent());  в  конец  функции-обработчика 
нужно  поместить  $tpl->printToScreen();.  “Динамические  обработчики”    используются, 
например,  в  индексной  странице  рубрики  “карта  сайта”,  на  которой  выводится  дерево 
рубрик сайта. 
 
 
В  приведенном  выше  примере  шаблону  не  передаются  значения.  Приведем  пример 
шаблона  и  обработчика    индекса  рубрики,  в  котором  выводится  список  материалов 
рубрики. 
 
Шаблон страницы индекса рубрики: 
 
 
  1   2   3   4   5   6   7   8   9   ...   14

Похожие:

Руководство разработчика    iconРуководство разработчика 
Введение  
Руководство разработчика    iconРуководство разработчика 
Введение  
Руководство разработчика    iconРуководство разработчика 
Введение в Oracle Forms   
Руководство разработчика    iconРуководство разработчика
Данное руководство написано для людей, которые желают быстро и качественно создавать информационные системы на базе Веб и контент-зависимые...
Руководство разработчика    iconРуководство разработчика 
Интернете, могут изменяться без уведомления. Риск, связанный с использованием таких 
Руководство разработчика    iconРуководство разработчика сайта
Руководство для дизайнеров и верстальщиков сайта, для программистов и администраторов, для разработчиков ядра системы
Руководство разработчика    iconРуководство пользователя Free Pascal версии Версия документа Март 2010 Michael Van Canneyt, Florian Klampfl
Для этих целей смотрите Справочное Руководство. Для просмотра описания возможностей и внутренней организации компилятора используйте...
Руководство разработчика    iconРуководство разработчика
Она будет полезна разработчикам, желающим добавить возможности исполнения скриптовых программ в свои проекты
Руководство разработчика    iconРуководство разработчика
Яндексу (а также указанному им правообладателю) принадлежат исключительные права на все результаты интеллектуальной деятельности...
Руководство разработчика    iconРуководство разработчика
Яндексу (а также указанному им правообладателю) принадлежат исключительные права на все результаты интеллектуальной деятельности...
Разместите кнопку на своём сайте:
kak.znate.ru


База данных защищена авторским правом ©kak.znate.ru 2012
обратиться к администрации
KakZnate
Главная страница