5 июля 2005 г.
Текущая версия:
http://sourceforge.net/project/showfiles.php?group_id=118100&package_id=132259
(доступно в PDF)
Авторы:
Максим Барышников, Red Graphic Systems (mb@redgraphic.com)
Дмитрий Шейко, Red Graphic Systems (d@redgraphic.com)
1 Вступление..................................................................................................................3
2 Возможности ..............................................................................................................3
3 Организация SAPID ...................................................................................................7
4 Назначение .................................................................................................................7
5 Устойчивость к нагрузкам.........................................................................................7
6 Системные требования ............................................................................................8
7 Инсталляция................................................................................................................8
7.1 Возможные проблемы при инсталяции SAPID....................................................................9
7.1.1 Режим MODREWRITE.....................................................................................................9
7.1.2 Режим Multiviews...........................................................................................................10
7.1.3 Режим Disabled..............................................................................................................10
8 Интерфейс администрирования............................................................................11
8.1 Многоуровневое администрирование в SAPID..................................................................11
9 Управление сайтом..................................................................................................12
9.1 Что такое сайт и что такое CMS..........................................................................................12
9.2 Управление содержанием...................................................................................................13
9.2.1 Как управлять новостями на сайте..........................................................................14
9.3 Команды WYSIWYG-редактора...........................................................................................14
9.3.1 Функции дополнительной панели...............................................................................15
9.3.2 Интерфейс добавления изображений........................................................................16
9.3.3 Создание галерей.........................................................................................................16
9.3.4 Общие возможности визуального редактора...........................................................18
9.3.5 Использование форматирования при редактировании содержания......................18
9.3.6 Перемещение по текстовому полю...........................................................................18
10 Создание сайта.......................................................................................................18
10.1 Разработка концепции сайта.............................................................................................18
10.1.1 Структура документа..............................................................................................19
10.1.2 Структура сайта......................................................................................................19
10.2 Создание шаблонов...........................................................................................................19
10.2.1 Синтаксис указателей объектов XML Sapiens в шаблонах документов............20
10.2.2 Включения кода системного языка CMS.................................................................21
10.3 Создание структуры...........................................................................................................22
10.4 Управления пользователями............................................................................................23
10.5 Моделирование интерфейсов...........................................................................................24
10.5.1 Создание веб-сервиса ...............................................................................................24
10.5.2 Создание модуля (DDC).............................................................................................24
10.5.3 Модули (DDC) дистрибутивного пакета................................................................26
10.5.4 Универсальный DDC инфоканала.............................................................................30
10.5.5 Создание CMS-приложения ......................................................................................30
10.5.6 Список CMS–приложений дистрибутивного пакета............................................30
10.5.7 Структура хранилища данных.................................................................................34
10.5.8 Передача инструкций CMS.......................................................................................35
10.5.9 Режим трассировки ...................................................................................................37
11 Объекты XML Sapiens............................................................................................38
11.1 Контейнеры запросов (QC)................................................................................................38
11.2 Контейнеры статических данных (SDC)...........................................................................39
11.3 Контейнеры динамических данных (DDC)........................................................................40
11.4 Выражения XML Sapiens...................................................................................................41
1 Вступление
SAPID- свободно распространяемое в соответствии с условиями лицензии
GNU (см. файл Licence.Ru в комплекте поставки) программное обеспечение с
открытым кодом (Open Source). SAPID - это система управления сайтами
(CMS), на ее основе вы можете создать и поддерживать персональные и
тематические проекты.
У вас уйдут считанные минуты на то, чтобы настроить SAPID на своем
сервере. SAPID нетребовательна к хостингу: системе необходимо немного
пространства (до 2 Мб). SAPID подстроится под возможности вашего
хостинга, и, если на сервере подключены дополнительные модули
(ModRewrite, GZIP и т.п.), сможет использовать их преимущества.
Если у вас уже есть сайт, то структура и информация может быть перенесена в
SAPID автоматически.
SAPID – это также opensource-среда разработки сайтов, отвечающая
требованиям спецификации XML Sapiens (универсального языка управляемых
сайтов http://www.xmlsapiens.org) от рабочей группы XML Sapiens.
2 Возможности
• Анализатор SEO.
SAPID содержит специальный сервис для поисковой оптимизации
документов сайта. Для любово документа SAPID можно вызвать анализатор
SEO, который сообщит о частоте встречаемости ключевых слов в различных
индексируемых областях документа.
Дизайн проекта
Ирина Зносок (i@redgraphic.com)
4 Назначение
5 Устойчивость к нагрузкам
6 Системные требования
Сервер:
• Apache Web Server / рекомендуется rewrite module/ (http://www.apache.org)
• PHP version 4.1.x (http://www.php.net)
Клиент администратора:
MS Internet Explorer 5.5+ (рекомендуется версия 6)
FireFox 0.9+ (браузеры на ядре Gecko)
7 Инсталляция
usr/dump 777
usr/dump/*.* 777
usr/extentions 755
usr/extentions/*.* 755
usr/templates 777
usr/templates/*.* 777
usr/templates/images 777
usr/templates/files 777
usr/xml 777
usr/xml/*.* 777
usr/xml/content/ 777
usr/xml/sdc/ 777
usr/xml/vdb/ 777
log/ 777
DirectoryIndex index.php
ErrorDocument 404 /404/
Options +Followsymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?%{QUERY_STRING}
DirectoryIndex index.php
ErrorDocument 404 /404/
Options +Followsymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://mysite.com/index.php?%{QUERY_STRING}
DirectoryIndex index.php
Options -Multiviews –Indexes
ErrorDocument 404 http://mysite.com/index.php
9 Управление сайтом
Сайт – это множество документов, так или иначе связанных между собой. Сайт
может содержать различные языковые версии. Группа сайтов, связанных
между собой, называется информационным пространством.
Замечание:
Если вы используете браузер на базе ядра Gecko (Firefox, Netscape, Mozilla) для
включения отображения курсора в режиме визуального редактирования нажмите F7
Нажмите Чтобы
Нажмите Чтобы
Нажмите Чтобы
СТРЕЛКА ВЛЕВО или СТРЕЛКА ВПРАВО Переместить один знак влево или вправо
CTRL+СТРЕЛКА ВЛЕВО или CTRL+СТРЕЛКА Переместить одно слово влево или вправо
ВПРАВО
10 Создание сайта
Как мы уже говорили, что шаблон определяет то, как будет выглядеть
документ, которому назначен данный шаблон на сайте. Для создания нового
шаблона следует перейти в интерфейс «Шаблоны». В этом интерфейсе вы
может создать собственный шаблон, изменить или удалить имеющийся. А
также вы можете добавлять и редактировать вспомогательные файлы, такие
как стилевые таблицы (CSS), файлы Java-скриптов. Давайте попробуем создать
новый шаблон для документа. Нажимаем кнопку «Создать новый шаблон» и
переходим к интерфейсу добавления шаблона. Прежде всего, вам следует
ввести название нового шаблона. Далее вы можете указать код представления
шаблона.
<html>
<body>
<h1>Заголовок</h1>
Текст
</body>
</html>
Однако нам надо указать, что блоки содержания «заголовок» и «текст» могут
редактироваться в режиме администрирования. Выделите слово «Заголовок» и
нажмите крайнюю левую кнопку ниже поля ввода кода. В появившемся окне
вам следует указать имя для указателя запроса содержания, скажем “title” и
выбрать тип запроса, например «Запрос текста на одну строку». Слово
«Заголовок» будет заменено указателем запроса содержания. Теперь мы
выделяем слово «Текст» и повторяем предыдущие действия. Укажем имя для
указателя «body» и тип запроса «Визуальный редактор». В результате мы
должны получить такой шаблон
<html>
<body>
<h1><sapi:apply name="qc.title.value" type="string" /></h1>
<sapi:apply name="qc.body.value" type="publication" />
</body>
</html>
Замечание:
В настоящей версии SAPID возможно использовать только предустановленный
контейнеры запросов, у которых тип и форма запроса содержания в режиме
администрирования задается дополнительным атрибутом type. Допустимы
значения text для строкового запроса и publication для визуального редактора. А
также типы image, file, checkbox.
Например:
<sapi:apply name="qc.body.value" type="publication" />
или
<?SYSTEM код_системного_языка ?>
Замечание:
Прибегать к включениям системного языка не рекомендуется. Потому, как при этом
теряется переносимость функциональных решений.
Замечание:
Следующая маска доступа к документу 751 означает, что документ управляется
владельцем и группой. Посетители сайта могут видеть документ, но ссылка
документ не будет отображаться в навигации сайта. Подобную маску удобно
использовать, когда требуется вручную указать в содержании документа ссылку на
определенный документ.
<?xml version="1.0"?>
<sapi version="1.0"
xmlns:sapi="http://www.xmlsapiens.org/spec/sapi.dtd">
<sapi:ddc name="menu" title="ddc" ns="site1"
category="navigation">
<sapi:author>
<sapi:name>Max Baryshnikov</sapi:name>
<sapi:email>mb@rg.by</sapi:email>
<sapi:url>www.redgraphic.com</sapi:url>
</sapi:author>
<sapi:comments>Vertical menu with subitems.</sapi:comments>
<sapi:choose>
<sapi:when exp="1">
<sapi:for-each select="get_tree()" name="enum">
<sapi:choose>
<sapi:when>
<sapi:exp>eq(this.this.currentpage.value,1)</sapi:exp>
<sapi:code>
</sapi:code>
</sapi:when>
<sapi:when>
<sapi:exp>eq(this.this.currentpage.value,1)</sapi:exp>
<sapi:code>
</sapi:code>
</sapi:when>
</sapi:choose>
</sapi:for-each>
</sapi:when>
</sapi:choose>
</sapi:ddc>
</sapi>
Модуль Описание
Модель инфоканала
1. Базовые условия
get_rss.xml Модуль RSS-импорта. DDC задает отображение для записей списка RSS-
канала, указанного в третьем параметра адресной строки. Если при
разборе XML RSS канала не произошла ошибка, то DCC возвращает
HTML со списоком записей канала, иначе будет отображено содержание
ошибки.
horizontalmenu.xml Модуль меню структуры 1-го уровня. Данный DDC- частный случай
defaultmenu.xml
Модель инфоканала
1. Базовые условия
1.1. Обращение к CMS-приложению get_infochannel. Параметры передают
при вызове DDC.
Перебор условий по списку, возвращенному CMS-приложением
1.1.1. Показать запись списка в режиме доставки содержания
<sapi:apply name="ddc.infochannel.value">
<sapi:param name="query">
_CHANNEL(news)_
_BASEURL(en/samples/news/)_
_LIMIT(0,5)_
_ORDER(INDEX,TITLE,ASC)_
</sapi:param>
</sapi:apply>
Приложение Описание
get_infochannel() Описание:
Информационный канал: лента новостей, лента статей, специальная
лента
Переменные перечисления:
this.this.value.leght – число элементов перечисления
this.this.ID.value – ID записи
this.this.DATE_CREATE.value – дата создания записи в формате
DATETIME
this.this.MORE.value – ссылка вглубь для заданной записи с маской
(год/месяц/день/ID)
this.this.TO_SELECT.value – ссылка вглубь для заданной записи без маски
(при использовании такого рода ссылок, не требуется создавать
вспомогательную ветвь дерева)
this.this.сounter.value – текущий номер элемента перечисления
this.this.ПОЛЕ.value – значение ПОЛЯ перечисления (переменной,
образованной от запроса содержания – QC. См. 10.5.6).
Дополнительные переменные
this.navigation.next – требуется ли отображать навигацию по страницам
списка «вперед»
this.navigation.next.style.display – возвращает ‘none’ если не требуется
отображать навигацию по страницам списка «вперед»
this.navigation.next.href - ссылка для перехода к следующей странице
списка
this.navigation.previous – требуется ли отображать навигацию по
страницам списка «назад»
this.navigation.previous.style.display - возвращает ‘none’ если не требуется
отображать навигацию по страницам списка «назад»
this.navigation.previous.href - ссылка для перехода к следующей странице
списка
Переменные перечисления:
this.this.value.leght – число элементов перечисления
this.this.сounter.value – текущий номер элемента перечисления
this.this. spacer.value – строка отступа
this.this.ID.value – ID раздела структуры
this.this.VAR.value – переменная раздела структуры
this.this.OWNER.value – владелец раздела структуры
this.this.GROUP.value – группа раздела структуры
this.this.PERMISSIONS.value – маска доступа к разделу структуры
this.this.LEVEL.value – уровень вложенности раздела структуры
this.this.TITLE.value – заголовок раздела структуры
this.this.TEMPLATE.value – шаблон, связанного документа
this.this.CHILDREN.value – наличие потомков
this.this.LEVEL5.value – уровень вложенности раздела*5 раздела
структуры (для использования в HTML-атрибуте style)
this.this.spacer.value – отступ через в соответствии с уровнем
вложенности
this.this.PATH.value – относительный адрес раздела структуры
this.this.VAR_PARENT.value – переменная родительского раздела
get_infochannelfilter() Описание:
Данная функция формирует ссылки и заголовки на выборки для
последней DDC информационного канала по годам, месяцам или дням.
Параметры: ( string вспомогательная_командная_строка )
Параметр вспомогательная_командная_строка может принимать одно из
значений: year, month, day
Переменные перечисления:
this.this.value.leght – число элементов перечисления
this.this.сounter.value – текущий номер элемента перечисления
this.this.title.value – заголовок элемента перечисления
this.this.HREF.value – ссылка элемента перечисления
get_track() Описание:
Маршрут к текущему документу
Переменные перечисления:
this.this.value.leght – число элементов перечисления
this.this.сounter.value – текущий номер элемента перечисления
this.this.title.value – заголовок элемента перечисления
this.this.href.value – ссылка на элемент перечисления
get_survey() Описание:
Данные формы голосования
Переменные перечисления:
this.this.value.leght – число элементов перечисления
this.this.сounter.value – текущий номер элемента перечисления
this.this.LENGHT_ {n}.value – длина графического индикатора результата
this.this. {n}.value – значение результата
this.this.PER_ {n}.value – длина результата
где {n} – номер результата
get_calendar() Описание:
Форма навигации по архиву инфоканала «Календарь»
Переменные перечисления:
this.this.value.leght – число элементов перечисления
this.this.сounter.value – текущий номер элемента перечисления
get_rss() Описание:
Внешний RSS-канал
Переменные перечисления:
this.this.value.leght – число элементов перечисления
this.this.сounter.value – текущий номер элемента перечисления
get_gb_records() Описание:
Гостевая книга
Переменные перечисления:
this.this.IP.value – IP-адрес, с которого была добавлена запись
this.this.ID.value – ID записи
this.this.DATE_CREATE.value – дата создания записи в формате
DATETIME
this.this.NAME.value – имя автора записи
this.this.EMAIL.value – email автора записи
this.this.MESSAGE.value – содержание записи
this.this.AUTHOR.value – HTML – имя автора
this.this.COUNTER.value – текущий номер элемента перечисления
get_searchresults() Описание:
Вывод результатов поиска
Переменные перечисления:
this.this.TITLE.value – заголовок документа
this.this.HREF.value – ссылка документа
this.this.MATCHES.value – выдержка из документа
this.this. RELEVANCY.value – релевантность документа поисковому
запросу (0-100)
this.this.COUNTER.value – текущий номер элемента перечисления
this.this.DATE_CREATE.value – дата создания записи в формате
DATETIME
$filename=$GLOBALS["root_path"] . "usr/xml/vdb/".$CHANNEL.".xml";
if (!isset($db)) $db = new sapi_vdb($filename);
$stream=$db->get_data();
$filename=$GLOBALS["root_path"] . "usr/xml/vdb/".$CHANNEL.".xml";
$db = new sapi_vdb($filename);
$data["row"]["text"]=$_POST["news_text"];
$data["row"]["title"]=$_POST["news_title"];
$data["post_action"]="ADDNEWIPROW";
$result=$db->save_data_row(false, $data, false);
Пример:
Пример:
Пример:
Пример
$filename=$GLOBALS["root_path"] . "usr/xml/vdb/".
$_POST["data_file"];
if (!isset($db)) $db = new sapi_vdb($filename);
$objdata = db->get_data();
Пример:
foreach($objdata as $fetch) {
$stream["0"]["RESULT".$fetch["RESULT"]]++;
}
Атрибут Назначение
Типы Запросы
Рассмотрим пример:
</sapi:code>
</sapi:when>
<sapi:when>
<sapi:exp>neq(this.this.currentpage.value,1)</sapi:exp>
<sapi:code>
</sapi:code>
</sapi:when>
</sapi:choose>
</sapi:for-each>
</sapi:when>
</sapi:choose>
</sapi:ddc>
Синтаксис Действие
Замечание:
Запись operand(A, B, C) под разумлевает число возможных параметров от 2 до 10
Примеры:
<sapi:apply name="ddc.obj1.value">
<sapi:param name="pvar1">Value of param 1</sapi:param>
<sapi:param name="pvar2">Value of param 2</sapi:param>
</sapi:apply>
Browser
Controller
Environment
View Structure
XSL XML Sapiens
processor Template
Model
XML Sapiens
CMS API
declarations
Переменная Содержание
Переменная Содержание
Папка/скрипт Назначение
etc
rc.conf.php Конфигурационный файл системы
interface
rc.d
kernel
kernel.lib.php Библиотека API XML Sapiens процессора
lang
en.inc.php Английский язык интерфейса администрировани
log
2005.06.12.log Лог-файл статистики
mvc
controller
model
view
usr
dump Папка для хранения временных файлов
system
js
editor.php WYSIWYG-редактор
preview.php -//-
xml
Задача Адрес
Что же, теперь осталось лишь выбрать кнопку Migrate! В вертикальном меню и
дождаться результатов миграции
15 Экспорт проекта
Если вы пожелаете создать статичный архив вашего сайта, наберите в адресной
строке браузера http://мой_сайт/convertor.php.
Замечание:
Для использования миграции данных потребуется установить Add-on пакет
convertor.tar.gz (https://sourceforge.net/project/showfiles.php?
group_id=118100&package_id=154910)
16 Синдикация данных
• Search Engine Watch - Tips About Internet Search Engines & Search Engine
Submission
• Pandia.com - the latest search engine news
• Search Engine Marketing 101 - an optimization and promotion tutorial
• Search Engine Showdown - The Users' Guide to Web Searching
• SearchEngines.com - Search Engine Resource Center
• Search Engine World
• SearchUtilities - All about search engines, web promotion
• WebPosition Gold Page Critic Help
• Internet Business Promoter - keyword density analyzer , the search engine
submission software tool and the search engine ranking reporter.
• Search Engine Marketing Guide
• Clickz.com - Search Engine Marketing Articles And Reviews
• Win the Search Engine Game
• Search Engines Search - search for search engines
• Web Search - Search Engines, Directories and Finding Information on the Web
• Free search engine articles on search engine marketing
• Keyword Resources
• The Free Search Engine Academy
• The Marketleap Report
• Web Site Positioning Resource Center
• Web Marketing Information Center
• Articles of Internet Marketing
Источник: www.promo.by
18 Термины
Термин Описание
Навигационная часть Часть адреснной строки после раделителя DATA. Эта часть не учавствует
адресной строки в идентификации документа
19 Ссылки
[1] T. Bray, et al, Extensible Markup Language (XML), W3C Proposed
Recommendation 10-February-1998, REC-xml-19980210, February 10, 1998,
http://www.w3.org/TR/REC-xml.
[2] XML Sapiens 1.1 SE specification, http://xmlsapiens.org/spec/, 2004.
[3] SAPID CMS Project, http://sapid.sourceforge.net, 2004
[4] SAPID-CLUB Forum, http://en.sapid-club.com
[5] B. Bos, H. W. Lie, C. Lilley, I. Jacobs, Cascading Style Sheets, level 2, CSS2