Автоматизированная система управления сайтами NetCat версия 2.0 Руководство пользователя Руководство разработчика Компания «АИСТ» Москва, 2003 г. Внимание! Право на тиражирование программных компонентов и документации принадлежит компании «АИСТ». Приобретая систему NetCat, вы автоматически соглашаетесь не допускать копирование программ и документации без письменного разрешения компании «АИСТ», за исключением копирования документации в электронном виде. © 2003, «АИСТ» Компания «АИСТ», отдел разработки NetCat Адрес: 119034, г. Москва, Коробейников пер., дом 1/2, стр. 6 Телефон: (095) 245-8877 Сайт: http://www.netcat.ru Электронная почта: [email protected] Разработка системы управления сайтами NetCat: П. Филатов, Д. Спирин, Г. Аревшатян, а также В. Мельников, И. Завойчинский, К. Заугольнов, Д. Васильев. Документация: П. Филатов, Д. Спирин, Д. Васильев. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 2 Оглавление Руководство пользователя 6 1. Введение 7 Структура Руководства Что вы должны знать 2. Установка системы Системные требования Процедура установки системы Настройка системы Решение проблем 3. Концепция системы Термины и понятия Принципы функционирования системы Принципы создания сайта Интерфейс системы администрирования 4. Структура Операции с каталогом Добавление каталога Изменение настроек каталога Удаление каталога Состав шаблонов каталога Ссылки по теме для каталога Операции с разделом Добавление раздела Изменение настроек раздела Состав шаблонов раздела Ссылки по теме для раздела Перенос раздела Удаление раздела Редактирование информации в разделе 5. Работа с содержимым сайта Добавление информации Редактирование и удаление информации Работа с файлами Титульные страницы Визуальный HTML-редактор 6. Пользователи и права доступа Операции с пользователями Регистрация пользователя Изменение регистрационной информации Смена пароля Установка прав доступа для пользователя Удаление пользователя Группы пользователей Рассылки по базе пользователей Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 7 8 9 9 10 11 14 15 15 16 17 18 20 20 20 22 22 22 22 23 23 24 24 25 25 25 25 26 26 27 27 28 28 29 32 32 32 33 33 33 33 34 3 7. Макеты дизайна страниц 35 Редактирование макета Добавление макета Удаление макета 35 36 36 8. Шаблоны данных 37 Добавление шаблона Редактирование настроек шаблона Редактирование полей шаблона Удаление шаблона Настройка системных таблиц 9. Классификаторы Создание классификатора Редактирование классификатора Удаление классификатора 10.Модули Установка модуля Настройка модуля Удаление модуля 11.Системные функции Обновление системы Обновление состояния базы данных Архивирование системы 37 38 39 40 40 41 41 41 41 42 42 42 42 43 43 43 43 12.Начало работы 45 13.Получение помощи 46 Руководство разработчика 47 1. Введение 48 2. Описание системы 49 Технические требования Идеологические требования к сайтам 3. Архитектура системы 49 49 51 Структура сайта Шаблоны данных Макеты дизайна Пользователи и права доступа Данные Классификаторы Модули 51 52 53 53 56 56 57 4. Предпроектная подготовка 59 5. Ввод и настройка структуры сайта 60 Создание каталогов Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 60 4 Создание разделов Создание шаблонов в разделах Примеры реализации нестандартных задач 6. Дизайн сайта Подготовка макетов страниц Конвертация и ввод макетов страниц Использование дополнительных полей 7. Шаблоны данных Создание и редактирование полей Создание и редактирование шаблонов вывода Поиск и выборка Использование условий и параметров Шаблоны действий 8. Обновление системы Установка и настройка модулей Установка обновлений системы 61 62 63 66 66 72 75 77 77 78 83 85 85 87 87 87 9. Устранение проблем 88 Приложение 1. Схема базы данных 89 Приложение 2. Список используемых функций и переменных 95 Функции и переменные, используемые в шаблонах и макетах Функции и переменные, используемые в шаблонах Функции и переменные, используемые в макетах Заметки Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 95 96 97 99 5 Руководство пользователя Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 6 Введение Автоматизированная система создания и управления сайтами NetCat является универсальным средством управления сайтами среднего и высокого уровня сложности. Система рассчитана на использование для следующих видов сайтов: - корпоративные представительства; - порталообразные сервера; - библиотеки данных, файл-архивы; - интернет-издания; - электронные магазины и пр., в т.ч. сложные веб-системы. Система администрирования в NetCat разделена на две части: интерфейс пользователя и интерфейс разработчика. В данной книге рассматривается первая часть системы администрирования, т.е. интерфейс пользователя. Для использования системы не требуется хорошее знание интернет-технологий, языков программирования и разметки. Интерфейс системы прост и интуитивно понятен для пользователя, имеющего опыт работы на компьютере. Структура Руководства Настоящее Руководство разделено на 13 частей: Часть 1, «Введение». Здесь описываются общие понятия, необходимые навыки для работы с системой. Часть 2, «Установка системы». В этой части описывается процесс установки и базовой настройки системы. Часть 3, «Концепция системы». В этой части система описывается в структурном виде, приводится справочник терминов и понятий, которые используются в интерфейсах управления системой и данном Руководстве, описывается процесс создания сайта в общем виде. Части 4-11. В этих частях описывается процесс управления различными сущностями в рамках сайта: структурой, содержимым, пользователями и пр. Части 5, 6, 8 более подробно описаны в книге «Руководство разработчика системы NetCat». Часть 12, «Начало работы». В этой части приводится рекомендуемая последовательность действий после установки системы, а также описываются первые шаги после установки системы. Часть 13, «Получение помощи». В этой части можно узнать о том, как получить техническую поддержку, дополнительную помощь, а также адреса интернет-ресурсов, содержащих справочную информацию, которая может помочь в работе с системой. Примечание: части 7-10 посвящены описанию инструментов разработчика, которые подробно описаны в «Руководстве разработчика». Поэтому в главах 7-10 приведено описание интерфейсов работы с макетами, шаблонами, классификаторами, модулями. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 7 Что вы должны знать Система NetCat позволяет оптимизировать и упростить как процесс создания сайта, так и процедуры управления им. Управление сайтом не требует специфических познаний в интернет-технологиях. Оператору или менеджеру, поддерживающему сайт, достаточно уметь: - работать в системе Microsoft Windows на уровне пользователя; - знать основные операции работы с текстами (редактирование, копирование и т.д.); - уметь работать в сети Интернет, перемещаться по веб-сайтам; - знать основные принципы и понятия, применимые к сайтам (гиперссылки, страницы, картинки, текстовые материалы и пр.); - для использования на сайте графических материалов пользователю необходимо уметь работать с каким-либо графическим пакетом, например, Adobe Photoshop. Дополнительными плюсами при работе с системой будут: - знание языка HTML; - опыт разработки сайтов; - знание принципов аналитической части разработки сайта. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 8 Установка системы Если для работы с системой в режиме пользователя вам не понадобятся специфические знания, то для установки системы потребуются базовые знания операционной системы Unix. В противном случае вам понадобится помощь специалиста, например, сотрудника службы поддержки хостинг-провайдера или представителя разработчика сайта. Система NetCat представляет собой совокупность программных файлов, написанных на языке программирования PHP, файлов конфигураций и базы данных (СУБД MySQL). Система поставляется в заархивированном виде в следующем составе: netcat.tgz – архив программных файлов и файлов настроек netcat.sql – т.н. «дамп» базы данных При инсталляции и внедрении сайта необходимо иметь ввиду, что на компакт-диске находятся установочные файлы в двух кодировках: «koi8-r» (каталог «koi») и «Windows 1251» (каталог «win»). Перед установкой системы на сервер выясните базовую кодировку вашего сайта. Index-файлами каталогов в системе являются файлы index.php. Системные требования Минимальные аппаратные требования для системы NetCat: Компьютер с процессором Pentium-166 или выше; Оперативная память 64 Мб и выше; Место на жестком диске 3 Мб. Программные требования для системы NetCat: Операционная система Linux/FreeBSD (см. Примечание); Веб-сервер Apache 1.3.18 и выше; PHP 4.0.6 и выше (может быть собран как модуль Apache или как CGI); СУБД MySQL 3.23.32 и выше. Примечание: если у вас установлена другая ОС из семейства Unix, вам следует проконсультироваться о возможности ее использования у разработчика. Перед выбором хостинг-площадки необходимо убедиться, что для сайта под управлением NetCat будет возможность: - установить обработчик ошибки 404 для выбранного домена; - распаковывать архивы tgz и «дампы» базы MySQL. Клиентская часть системы требует только установки веб-броузера на компьютере пользователя (например, Internet Explorer 4.0 и выше или Netscape Navigator 4.0 и выше). Для использования встроенного HTML-редактора требования более жесткие: броузер Internet Explorer 5.5 и выше. Для закачки файлов по протоколу FTP или внесения изменений в файлы конфигурации вам понадобится FTP-клиент – программа, позволяющая работать с сервером по протоколу FTP. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 9 Если провайдер предоставляет терминальный доступ к серверу (например, по протоколам Telnet или SSH), вам также может понадобится соответствующая программа для работы по этим протоколам (например, стандартная утилита ОС Windows «telnet»). Если возможности работать в терминальном режиме нет, вам придется поручить часть заданий сотруднику хостинг-провайдера. Процедура установки системы Файловая система на поставляемом компакт-диске имеет следующую структуру: папка docs файл license.doc файл manual.doc папка koi файл netcat.sql файл netcat.tgz папка win файл netcat.sql файл netcat.tgz файл readme.txt Текст лицензионного соглашения Сводное руководство (этот документ) Дамп базы данных в кодировке koi8-r Программные файлы системы в кодировке koi8-r Дамп базы данных в кодировке Windows 1251 Программные файлы системы в кодировке Windows 1251 Краткая справка о системе и ее установке (Windows 1251) Для установки программных компонентов системы выполните следующие операции: 1. Скопируйте поставляемые файлы в домашний каталог сайта (например, при помощи FTP-клиента); 2. Разархивируйте файл netcat.tgz в терминальном режиме при помощи команды: tar zxvf netcat.tgz Примечание. Если у вас нет доступа к серверу в терминальном режиме, поручите разархивировать этот файл сотруднику службы поддержки. После установки программных компонентов системы в вашем домашнем каталоге появился набор файлов, в частности, файл index.php, каталог /i/. Сотрите файл netcat.tgz и переходите к установке базы данных (если она не создана автоматически при заведении аккаунта у хостинг-провайдера) Если вы пользуетесь услугами хостинг-провайдера, скорее всего, у вас есть возможность создать базу данных через веб-интерфейс управления вашим аккаунтом. В этом случае вам нужно создать базу данных (или убедиться, что она создана), выяснить параметры доступа к ней (хост, имя базы, имя пользователя и пароль). Если при создании базы данных (БД) вам нужно указать права пользователя к БД, укажите все возможные права. При возникновении проблем на этом этапе обратитесь к инструкциям хостинг-провайдера или к сотруднику его технической поддержки. Если нет возможности создать БД через веб-интерфейс, создайте ее вручную при помощи терминального интерфейса. Для этого: 1. Создайте базу данных при помощи команды mysqladmin create ИМЯ_БАЗЫ 2. Установите права доступа к базе данных при помощи набора команд: mysql mysql Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 10 INSERT INTO user VALUES ('localhost','user_name',password('ПАРОЛЬ_К_БД'),'N','N','N','N','N','N','N','N','N ','N','N','N','N','N'); INSERT INTO db VALUES ('localhost','db_name','user_name','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); flush privileges; Примечание. Пароль к БД не должен обязательно совпадать с паролем к вашему аккаунту. После создания БД необходимо ввести в нее содержимое, которое находится в файле netcat.sql. Если ваш провайдер позволяет сделать это через веб-интерфейс, закачайте этот файл в соответствующем разделе управления аккаунтом. Если же нет, сделайте это вручную при помощи команды: mysql ИМЯ_БАЗЫ –u ИМЯ_ПОЛЬЗОВАТЕЛЯ –p ПАРОЛЬ < netcat.sql или попросите сделать это сотрудника технической поддержки провайдера. Итак, система установлена. Удалите файл netcat.sql и переходите к следующему этапу – настройке системы. Настройка системы Настойка системы производится путем редактирования файла настроек vars.inc.php, в каталоге /i/. Отредактируйте его при помощи FTP-клиента или через терминальный режим. Ниже приведена таблица описания значения переменных. Каждая переменная определяется в соответствие с синтаксисом языка PHP: $VAR_INT_NAME = 1; $VAR_CHAR_NAME = “Значение”; В первом случае переменной присваивается числовое значение (без кавычек), во втором – символьное (в кавычках или апострофах). Переменная Значение/описание Переменные доступа к базе данных $MYSQL_HOST Хост, с которого осуществляется доступ к базе данных. Если БД находится на том же сервере, что и система NetCat, хост должен иметь значение “localhost”. $MYSQL_USER Имя пользователя для доступа к базе данных. $MYSQL_PASSWORD Пароль пользователя базы данных. $MYSQL_DB_NAME Имя базы данных. Переменные настроек авторизации $USER_AUTHORIZATION Тип авторизации в интерфейсе системы ввода-вывода: HTTP-авторизация (значение переменной “http”) или Cookieавторизация (“cookie”). Если PHP собран как CGI, то HTTP-авторизация недоступна. $ADMIN_AUTHORIZATION Типа авторизации в интерфейсе системы администрирования: HTTP-авторизация (значение переменной “http”) или Cookieавторизация (“cookie”). Если PHP собран как CGI, то HTTP-авторизация недоступна. Пример “localhost” “companyname” “SuPeRpAsSwOrD” “companydb” “cookie” “http” Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 11 Системные сообщения $NOT_AUTHORIZE_MESSAGE $NO_RIGHTS_MESSAGE Системные переменные $PLUGS_INSTALL_TYPE $ROOT_FOLDER $PICTURES_FOLDER $INCLUDE_FOLDER $HTTP_DOMAIN $HTTP_ROOT_PATH $HTTP_PICTURES_PATH $HTTP_IMAGES_PATH $HTTP_USER_PATH $PROJECT_NAME $PROJECT_URL $TEXTAREA_CLOSE Текст, который выдается пользователю, не прошедшему авторизацию в системе. Текст, который выдается пользователю, не имеющему права на производимую операцию. “Неправильный логин или пароль” “У вас нет прав на эту операцию” Тип установки модулей и патчей. Возможные значения – «int» (внутренняя, через веб-интерфейс) или «ext» (внешняя, при помощи терминального интерфейса). Локальный адрес каталога «i/» на сервере, в котором установлена система NetCat. Локальный адрес каталога на сервере, который будет использоваться для закачки файлов через веб-интерфейс. Локальный адрес каталога на сервере, в котором находятся подключаемые функции системы. Основной домен сайта. Относительный адрес (URL) каталога, в котором находится система NetCat. Относительный адрес (URL) каталога, в который будут закачиваться файлы через веб-интерфейс. Относительный адрес (URL) каталога, в котором хранятся картинки, закачанные по FTP. Относительный адрес (URL) каталога, в котором находится файлы работы с пользователями. Название проекта (сайта). Полный URL сайта. “ext” HTML-код тега, закрывающего блок вводы текста. Не изменяйте эту переменную! Настройки для системы администрирования $ADMIN_FOLDER Локальный адрес каталога на сервере, по которому находится система администрирования. $ADMIN_DOMAIN Домен (или URL), соответствующий каталогу, в котором находится система администрирования. $EDIT_DOMAIN Домен, который используется для режима редактирования информации на сайте. Обычно совпадает с переменной $ADMIN_DOMAIN. $DOC_DOMAIN Домен (или URL), по которому располагается система контекстной помощи. Обычно это адрес “www.netcat.ru/support/online” Настройки системы ввода-вывода $BROWSE_LEVEL Уровень навигации, при котором подразделы данного раздела показываются при помощи функции s_browse (см. «Руководство разработчика»). $BROWSE_GLOBAL Номер раздела, подразделы которого “/usr/local/etc/httpd/ htdocs/company/i/” “/usr/local/etc/httpd/ htdocs/company/i/ trash/” “/usr/local/etc/httpd/ htdocs/company/i/ require/” “www.company.ru” “/i/” “/i/trash/” “/i/images/”; “/i/user/” “Компания.ру” “http://www.company. ru” “</textarea>” “/usr/local/etc/httpd/ htdocs/company/i/ Admin/” “admin.company.ru” или “www.company.ru/i/Admin” “admin.company.ru” или “www.company.ru/i/Admin/” “www.netcat.ru/support/ online” 3 135 Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 12 определяют глобальное (альтернативное) меню для сайта (см. «Руководство разработчика»). Настройки работы с пользователями $USER_TABLE_NAME Название таблицы, содержащей информацию о пользователях. $USER_TABLE_ID Номер системной таблицы пользователей. “User” 3 Настройки работы с внутренней рассылкой сообщений по базе пользователей $SPAM_FIELD Названия поля в таблице пользователей, “Email” предназначенное для хранения E-mail адресов пользователей. $SPAM_REPLY_TO E-mail, на который может быть произведен “[email protected]” ответ после получения пользователем письма. $SPAM_FROM_NAME Имя отправителя сообщения по базе “Subscribe Service” пользователей. $SPAM_FROM E-mail отправителя сообщения по базе “[email protected]” пользователей. Также для работы системы необходимо: - - - Указать скрипт /i/require/e404.php как обработчик ошибки 404 для домена; Это можно сделать, добавив в файл .htaccess (в корневом каталоге сайта) строку: ErrorDocument 404 /i/require/e404.php Также указать скрипт можно в конфигурации домена, если есть возможность ее редактировать. Убедиться, что у файлов системы есть права на закачку файлов при помощи стандартных механизмов PHP на каталог, который указан в переменной $PICTURES_FOLDER (например, “/usr/local/etc/httpd/htdocs/company/i/trash/”); Прописать в конфигурации веб-сервера еще один домен для системы администрирования (например, admin.company.ru), в качестве домашнего каталога указав значение переменной $ADMIN_FOLDER (например, “/usr/local/etc/httpd/htdocs/company/i/Admin/”). В зависимости от типа установки PHP на сервере в файле /i/require/e404.php необходимо откорректировать значение второй строки: - header("Status: 200 OK"); Если PHP собран как CGI - header("HTTP/1.1 200 OK"); Если PHP собран как модуль Возможно, хостинг-провайдер не поддерживает возможность иметь несколько доменов для одного сайта. В этом случае необходимо: - Установить значение переменной $ADMIN_DOMAIN в “www.company.ru/i/Admin”; Установить значение переменной $EDIT_DOMAIN в “www.company.ru/i/Admin”; Для входа в систему администрирования заходить не по адресу http://admin.company.ru, а по адресу http://www.company.ru/i/Admin. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 13 После того, как система установлена и настроена, войдите в систему администрирования, используя следующие параметры: Login: 1 Password: 123456 Нажмите на ссылку «обновить состояние базы». После настройки системы вы можете приступать к началу работы с ней. Сразу же после установки в целях безопасности смените пароль для пользователя «1». Решение проблем Если у вас возникли проблемы при установке системы, попытайтесь классифицировать проблему. Если проблема относится к настройкам сервера хостинг-провайдера, обратитесь в его службу поддержки. Возможно, ее сотрудникам понадобится настоящее Руководство. Если же, по вашему мнению, проблема в другом, обратитесь к производителю системы. Также попробуйте решить проблему через сайт netcat.ru, на котором есть: - форумы, посвященные решению различных ситуаций при использовании NetCat; - контактная информация службы поддержки пользователей NetCat; - разнообразные примеры, советы, рекомендации; - различная документация к системе. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 14 Концепция системы В этой главе описывается концепция системы, принципы ее функционирования, а также приводится глоссарий терминов и понятий, используемых в интерфейсах управления и в настоящем Руководстве. Термины и понятия Настоящее Руководство оперирует определенными понятиями, смысл которых раскрыт в нижеследующей таблице. Понятие Система Макет, макет дизайна Поле, поле данных Классификатор Темплейт Шаблон, шаблон данных Запись Каталог Раздел Пользователь Права Модуль Префикс и суффикс Рассылка Описание Автоматизированная система создания и управления сайтами NetCat. Макет дизайна HTML-страниц для сайта, переведенный во внутренний формат системы NetCat. Информация, необходимая для перевода HTML-страницы в формат NetCat, содержится в книге «Руководство разработчика». Некоторое свойство какого-либо понятия. Пример: для понятия (сущности) «фирма» могут быть поля «Название», «Адрес», «Количество сотрудников», «Телефон» и пр. Поля могут быть разных типов (строка, целое число, текст, классификатор и пр.). Обозначает одноуровневый набор однотипных перечислимых данных, например, названия городов, коды валют, геометрические фигуры и пр. Макет расположения некоторых элементов на странице (например, элементов поиска, значений полей сущности и пр.). Совокупность определенного количества полей и темплейтов вывода содержимого страницы, добавления, поиска и пр., а также некоторых правил. Описывает определенную сущность, понятие. Например, шаблон «Фирмы», «Статьи», «Сотрудники» и пр. Экземпляр какой-либо сущности. Например, есть сущность «Сотрудник» с полями «ФИО», «Должность», «Фото», «Стаж». Экземпляр «Иванов Иван Иванович, Директор, (фотография), 5 лет» является записью. Корневой элемент структуры сайта (или некоей глобальной части сайта, например, «Английская версия» или «Подразделение компании»). В системе может быть несколько каталогов, но в обычных случаях он один. Промежуточный элемент структуры сайта. Совокупность разделов описывает структуру сайта. Разделу может соответствовать одна страница, а может быть несколько. Каждому разделу должен соответствовать минимум один шаблон данных. Разделы могут иметь собственные подразделы, т.е. образовывать иерархическую структуру сайта. Пользователь системы определяется набором «логин (login, username и т.д.) плюс пароль», при помощи которых он может совершать на сайте какие-либо действия. Пользователь может иметь несколько прав (см. ниже). Помимо логина и пароля пользователь может иметь другие атрибуты (поля): имя, город, дату рождения и пр. Право – это возможность пользователя совершать некоторые операции (например, чтение информации в некотором разделе, добавление и пр.). Дополнительный программный элемент к системе NetCat, позволяющий реализовать нестандартные функциональные элементы (например, контекстная реклама, сложные форумы и пр.). Информация, выводимая до (префикс) или после (суффикс) вывода какого-либо списка. Записи выводятся на странице согласно настройкам шаблона: префиксзапись-запись-…-запись-суффикс. Помимо шаблонов данных префиксы и суффиксы применяются, например, в макетах дизайна для вывода списка разделов. Отправка писем сразу нескольким подписчикам. Рассылка бывает ручная (сообщение составляется и рассылается вручную в соответствующем разделе системы администрирования) и автоматическая (осуществляется при наступлении какого-либо события, например, добавлении записи в базу данных). Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 15 Подписчик Патч Пользователь, подписанный (администратором или самостоятельно) на одну или несколько рассылок. Обновление системы, исправление ошибок и пр. Принципы функционирования системы Система NetCat представляет собой совокупность программных файлов, файлов настроек и базы данных. Программная часть в свою очередь делится на систему администрирования (т.н. Back-office) и систему вывода (т.н. Front-office). Обе системы работают с базой данных: система администрирования управляет базой данных, а система вывода, как очевидно из ее названия, отображает страницы сайта. Логически система различает следующие понятия (сущности): Структура сайта Шаблоны данных Контент (содержимое сайта, данные) Макеты дизайна Пользователи и права доступа Дополнительные функции Вспомогательные данные Эти сущности тесно взаимосвязаны между собой. Так, к разделу сайта (единица структуры) логически привязаны: - шаблоны данных, в соответствие с которыми отображается содержимое страниц; - контент, относящийся к этому разделу; - макет дизайна, который используется для вывода страниц этого раздела; - права доступа пользователей (просмотр/запись/редактирование/настройка). Система администрирования сайта логически разделена на две части: - инструменты разработчика; - инструменты пользователя. В первую часть входят: - средства создание макетов страниц; - средства программирования шаблонов; - среда программирования модулей (API). Во вторую часть входят: - средства управления структурой; - средства управления контентом; - средства управления пользователями и правами данных. При разработке сайта используются как инструменты разработчика, так и инструменты пользователя. При поддержке и обслуживании сайта обычно используются только инструменты пользователя. Система администрирования представляет собой специализированный веб-интерфейс к базе данных. С ее помощью пользователи могут управлять всеми сущностями (структура, шаблоны и пр.). Система вывода выводит страницы сайта, формируя их из информации в базе данных. Ниже представлен схематически алгоритм вывода страницы. 1. Определение раздела сайта и структуры шаблонов, настроек Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 16 a. По адресу URL и параметрам определяется раздел сайта, который должен быть отображен, а также его настройки. b. По адресу URL и параметрам определяются также те шаблоны, которые присутствуют в данном разделе и должны быть отображены, а также их настройки. 2. Определение прав доступа a. По разделу и шаблонам определяются настройки прав на действие посетителя (просмотр, добавление и пр. – см. ниже). b. Если данное действие при данных настройках раздела/шаблона требуют авторизации, система авторизует пользователя и определяет возможность произведения данной операции данным пользователем. c. В случае отрицательного результата происходит отказ в действии путем вывода соответствующего сообщения. 3. Вывод страницы a. По настройкам раздела определяется макет дизайна, который должен быть использован при выводе страниц данного раздела. b. По адресу URL и параметрам определяется конкретные записи, которые должны быть отображены. c. Система форматирует данные в соответствие с настройками шаблона. d. Система выводит страницу в дизайне, описанном в текущем макете. Данный алгоритм является упрощенным схематическим последовательности действий при выводе страниц. вариантом реальной Принципы создания сайта Создавая сайт, пользователю/разработчику необходимо произвести следующие операции: 1. Установка системы NetCat; 2. Настройка системных таблиц; 3. Создание шаблонов, необходимых для функционирования сайта; 4. Конвертирование дизайн-макетов страниц в формат макетов NetCat; 5. Создание и настройка структуры сайта; 6. Подключение и настройка дополнительных модулей (при необходимости); 7. Создание базы пользователей и установка прав для каждого из них; 8. Наполнение сайта информацией. Последовательность действий нестрогая, однако, чаще всего процесс создания сайта происходит примерно в такой последовательности. Обычно структура сайта, шаблоны, дизайн готовятся и описываются до начала настройки системы. Ниже кратко описывается каждый этап. 1. Установка системы NetCat Этот процесс подробно описан в главе «Установка системы». 2. Настройка системных таблиц В большинстве случаев (особенно для сложных сайтов) требуется настроить системные таблицы, введя дополнительные поля. Так, информация о пользователях помимо логина и пароля может содержать имя, город, телефон и пр. Разделы могут иметь поля «URL кнопки», «Логотип раздела» и пр. Также необходимо настроить различные параметры, необходимые для работы системы (тип авторизации, параметры для новых пользователей и пр.). 3. Создание шаблонов, необходимых для функционирования сайта Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 17 4. 5. 6. 7. 8. Система поставляется с некоторым типовым набором шаблонов (HTML-текст, список ссылок, новости и пр.). Если для сайта требуются другие шаблоны, их необходимо создать (или импортировать, установив соответствующие модули). Процесс создания шаблонов описан в главе «Шаблоны данных», а также в «Руководстве разработчика системы NetCat». Конвертирование дизайн-макетов страниц в формат макетов NetCat Макеты дизайна, которые будут использованы при выводе страниц сайта, должны быть переведены в формат макетов системы NetCat и введены в систему при помощи соответствующего раздела системы администрирования. Подробная инструкция по созданию макетов дизайна доступна в «Руководстве разработчика системы NetCat». Создание и настройка структуры сайта При помощи интерфейса необходимо ввести структуру сайта, начиная с каталога и разделов первого уровня в соответствие с инструкциями (см. ниже). После ввода структуры необходимо определить состав шаблонов для каждого раздела и настроить параметры разделов (права доступа и макет дизайна) и шаблонов в разделах (параметры доступа). Подключение и настройка дополнительных модулей (при необходимости) Подключение модулей производится через стандартный интерфейс системы администрирования. Создание базы пользователей и установка прав для каждого из них Пользователи вводятся через стандартный интерфейс. Каждому пользователю может быть присвоено несколько прав от директора до администратора раздела. Наполнение сайта информацией Наполнение также происходит через стандартный интерфейс. Подробно каждый из этапов описывается в соответствующих главах данного Руководства. Интерфейс системы администрирования Страница системы администрирования делится на 4 части: 1. Верхняя часть. В ней отображается название проекта, пользователь, а также его права. 2. Левая часть (оглавление). В ней отображаются ссылки на разделы системы администрирования по группам. 3. Основная часть. Здесь отображается тело текущей страницы администрирования. 4. Нижняя часть. Отображается текущая версия системы NetCat и правовая информация. Также в верхней части каждой страницы отображаются: - заголовок текущей страницы; - навигационная строка, отображающая пусть к текущей странице с возможностью перехода по ссылкам на любой уровень; - ссылка на контекстную подсказку по данной странице. На титульной странице системы администрирования показана краткая статистика по проекту, а также небольшой текст приветствия. Все внутренние страницы системы администрирования можно условно разделить на три группы. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 18 1. Списки Примеры: список разделов в каталоге; список шаблонов; список пользователей. Каждая строка означает элемент списка (каталог, раздел, пользователя и пр.). В первой колонке отображается номер (ID) элемента, далее название (возможно, со ссылкой), далее могут идти другие ссылки/значения. В последней колонке отображено поле для удаления элемента. Так, чтобы удалить разделы, нужно установить галочки напротив их, после чего нажать на кнопку «Х» внизу страницы, которая обозначает удаление. 2. Иерархические списки Примеры: полный рубрикатор, макеты страниц На странице приводится дерево элементов (разделов или макетов), отражающее иерархию элементов. Иерархия применяется для реализации наследования некоторых полей (свойств) элементов. Название элемента служит ссылкой на меню операций с ним или форму редактирования элемента. Также рядом с названием присутствует несколько иконок: удаление, добавление подэлемента, просмотр (для разделов). 3. Формы для редактирования/добавления/отправки писем и пр. Примеры: добавление каталога, редактирование шаблона, отправка письма. В каждой строке отображается название поля и само поле. При редактировании записей в полях установлены их предыдущие значения. Внизу страницы располагаются кнопки «Сбросить» (отмена изменений, сделанных в форме) и «Записать» (совершение действия добавления, изменения, отправки и пр.). Также могут быть простые страницы: ссылки по данному элементу, отчеты и пр. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 19 Структура сайта Структура сайта представлена в древовидном иерархическом виде с неограниченным уровнем вложенности. Корневой элемент структуры – каталог. Каталогов в системе может быть неограниченное количество. Как правило, каждому каталогу соответствует некий глобальный раздел сайта (например, английская версия сайта или «подсайт» подразделения компании и пр.), которому соответствует доменное имя второго или третьего уровня. В стандартных задачах каталог только один. В каждом каталоге могут быть т.н. разделы сайта. У каждого раздела могут быть подразделы. Каждый раздел/каталог имеет некоторые поля (свойства), состав которых может расширяться при помощи системы администрирования. Свойства определяют характеристики раздела: название, права доступа, макет дизайна и пр. Каждое свойство может быть наследуемым, а может и не быть. Приведем пример. У разделов есть свойства «Логотип» (наследуемое) и «Ключевые слова» (не наследуемое). Приведем фрагмент условной структуры сайта: - О компании o Пресс-центр Новости При определении свойств раздела «Новости», если оба указанных выше свойства пусты, поле «Ключевые слова» будет определено как пустое, т.к. оно не наследуемое. Если же «Логотип» также пустое поле, оно должно наследоваться от раздела верхнего уровня. Т.е. если в «Пресс-центре» это свойство не пустое, для раздела «Новости» будет использовано значение поля в разделе «Пресс-центр». Если пустое – смотрим раздел «О компании» и т.д. вплоть до каталога. Состав свойств у разделов/каталогов можно увидеть, зайдя в «Настройки» любого раздела/каталога. К каждому разделу должен быть «привязан» (или унаследован с верхнего уровня иерархии) минимум 1 шаблон данных. Он определяет шаблон, по которому будут показываться/добавляться/изменяться данные в этом разделе. Если разделу соответствуют более одного шаблона, они будут показаны в виде закладок в разделе или на одной странице разными блоками (в зависимости от используемого макета дизайна). Операции с каталогом В разделе «каталоги и разделы» вы можете добавить каталог – ссылка «добавить», перейти к меню работы с каталогом – нажатие на название каталога, а также попасть в рубрикатор каталога – ссылка «разделы». Каталоги можно удалять, предварительно установив флажки напротив удаляемых каталогов и нажав на кнопку в виде крестика. Будьте осторожны: при удалении каталогов из базы данных стирается ВСЯ информация внутри него. Добавление каталога Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 20 Для добавления каталога необходимо в разделе «каталоги и разделы» нажать на ссылку «добавить». В появившейся форме вам необходимо заполнить следующие поля: Название каталога будет использоваться как заголовок титульной страницы каталога (или сайта), также в зависимости от выбранного макета страниц может фигурировать на внутренних страницах каталога. Пример названия каталога: «АИСТ» (по названию компании). Ключевое слово предназначено для адресации каталога. Чаще всего используется как домен третьего уровня (КлючевоеСлово.ДоменСайта.ru). Так, если в системе есть каталог «Web-студия» в проекте «АИСТ», он может иметь ключевое слово «studio», поэтому все страницы внутри каталога студии начинаются с адреса http://studio.aist.ru. В качестве ключевых слов можно использовать латинские буквы (желательно прописные), цифры, символы «-» и «_». Зеркала (по одному на строчке) используются системой для корректного отображения страниц, если пользователь зашел по адресу зеркала сайта. Например, если адрес http://www.aiststudio.ru является зеркалом сайта http://studio.aist.ru и при отображении внутренней страницы http://www.aiststudio.ru/about не произойдет ошибки, так как формально система обратится по адресу http://studio.aist.ru/about. Макет страниц служит для выбора макета из имеющихся в базе данных. Макет должен быть создан вне системы администрирования на основе использования HTML и макроязыка. Доступ на чтение предлагает выбор одного из четырех вариантов: Не определен – предоставление доступа к информации каталога наследуется с верхнего уровня иерархии; Доступ для всех – предоставление доступа к информации каталога всем желающим; Доступ только для авторизованных пользователей – возможность чтения информации в каталоге всеми авторизованными пользователями; Доступ для уполномоченных пользователей – возможность доступа предоставляется исключительно административным пользователям, обладающим правами доступа на чтение в данном каталоге. Доступ на добавление - то же, что и выше только касательно возможности записи информации в каталог. Доступ на редактирование собственных записей - то же, что и выше только касательно возможности редактирования информации в каталоге. Доступ на подписку - то же, что и выше только касательно возможности подписки на изменение информации в каталог. Тип модерирования – возможно два варианта: постмодерирование - информация будет доступна на сайте сразу после ее добавления; премодерирование – добавленная информация будет доступна на сайте только после того, как ее проверит уполномоченный пользователь системы. Включить – данный параметр разрешает или запрещается (делает скрытым) показ каталога на сайте. Чтобы включить каталог, надо поставить галочку. Если галочки нет, то каталог не будет показываться на страницах сайта, а в режиме администрирования около имени будет стоять красный крестик. Заполните форму и нажмите на кнопку «записать». В зависимости от настроек системы в форме добавления/изменения настроек каталога могут присутствовать и другие поля. Их описание можно увидеть в разделе «Системные таблицы» – «Каталог» – «Поля» (при наличии доступа в этот раздел). Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 21 Изменение настроек каталога Для того чтобы изменить настройки каталога нужно в разделе «каталоги и разделы» (или в «полном рубрикаторе») нажать на имя каталога, а затем выбрать из списка пункт «изменить настройки каталога». Значения полей формы аналогичны значениям полей в форме добавления каталога. Удаление каталога Каталоги можно удалять, предварительно установив флажки напротив удаляемых каталогов в разделе «каталоги и разделы» и нажав на кнопку в виде крестика. Также можно удалить каталог в разделе «полный рубрикатор», нажав на иконку в виде синего крестика справа от названия каталога. Будьте осторожны: при удалении каталогов из базы данных стирается ВСЯ информация внутри него. Состав шаблонов каталога Шаблоны для каталога целесообразно вводить в том случае, если все (или большинство) разделов сайта будут иметь один и тот же состав шаблонов. Для того чтобы не повторять несколько раз однотипную операцию, вы можете определить состав шаблонов один раз для каталога, не вводя их для каждого раздела. В этом случае состав шаблонов для подраздела будет «наследоваться» с уровня выше. Для того чтобы изменить состав шаблонов, следует нажать на одноименную ссылку в меню работы с каталогом. Шаблоны должны быть предварительно созданы в разделе «шаблоны вывода данных». Для того чтобы добавить шаблон, следует нажать на ссылку «добавить». Чтобы получить информацию о текущих настройках выбранного шаблона или изменить их, следует нажать на название шаблона. Для того чтобы удалить тот или иной шаблон, следует поставить флажок напротив удаляемого шаблона и нажать на кнопку в виде крестика. Ссылки по теме для каталога Ссылки по теме представляют собой некий абстрактный набор данных, который можно использовать на усмотрение разработчика сайта. Ссылки по теме наследуются по иерархии. Например, если для каталога определены 2 ссылки, а для одного из разделов еще одна, то при выводе страниц данного раздела будет показано все три ссылки. Подробнее узнать о применении ссылок по теме для вашего сайта вы можете узнать у его разработчика. Для того чтобы изменить ссылки по теме, следует нажать на одноименную ссылку в меню работы с каталогом. Можно добавить ссылку, нажав на «добавить». Есть возможность просматривать и редактировать настройки ссылки, нажав на название ссылки. Для того чтобы удалить ссылку, следует установить флажок рядом с названием удаляемой ссылки и нажать на кнопку в виде крестика. Поля формы при добавлении или изменении ссылок по теме: Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 22 Название необходимо для идентификации ссылки администратором. Текст – текст ссылки, можно использовать HTML-тэги. Приоритет определяет порядок вывода ссылок по теме на странице. Операции с разделом При нажатии на имя раздела в «каталогах и разделах» или «полном рубрикаторе» открывается страница, позволяющая выполнять следующие операции: добавление нового подраздела в текущий раздел - ссылка «добавить подраздел»; получение информации о текущих настройках раздела и при необходимости изменение их - ссылка «изменить настройки раздела»; получение информации и редактирование ссылок по теме - ссылка «ссылки по теме»; получение информации о текущих настройках состава шаблонов с последующим их редактированием - ссылка «состав шаблонов»; предпросмотр раздела - ссылка «просмотр»; «редактирование» дает возможность редактировать информацию в разделе; также можно перенести раздел, нажав на одноименную ссылку, и посмотреть список подразделов с последующим их редактированием. Добавление раздела Для того чтобы добавить раздел, следует нажать на ссылку «добавить» в разделе «каталоги и разделы». Можно также добавить раздел через «полный рубрикатор», нажав на иконку «плюс» справа от имени родительского раздела. Комментарии к полям формы добавления раздела: Название раздела будет использоваться как заголовок титульной страницы раздела, также в зависимости от выбранного макета страниц может фигурировать на внутренних страницах раздела. Ключевое слово предназначено для адресации раздела. Например, если раздел первого уровня «О компании» имеет ключевое слово «about», а его подраздел «Новости компании» имеет ключевое слово «news», адреса соответствующих страниц на сайте будут соответственно /about/ и /about/news/. В качестве ключевых слов можно использовать латинские буквы (желательно прописные), цифры, символы «-» и «_». Приоритет используется для очередности вывода списка разделов в элементах навигации. Чем меньше число в поле «Приоритет», тем выше будет показан раздел в списке. Внешний URL используется в тех случаях, когда для вывода содержимого раздела используется не стандартный механизм ввода-вывода, а какой-либо внешний скрипт, другая страница. В этом случае укажите в данном поле относительный или абсолютный адрес страницы, которая должна быть показана в этом разделе. Макет страниц служит для выбора макета из имеющихся в базе данных. Макет должен быть создан в системы администрирования в разделе «макеты страниц» на основе использования HTML и макроязыка. Если оставить поле неизменным при создании раздела (значение «не определен»), то макет будет наследоваться с верхнего уровня иерархии. Доступ на чтение предлагает выбор одного из четырех вариантов: Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 23 Не определен – предоставление доступа к информации каталога наследуется с верхнего уровня иерархии; Доступ для всех – предоставление доступа к информации каталога всем желающим; Доступ только для зарегистрированных пользователей – возможность доступа всех зарегистрированных пользователей к некоторой полузакрытой базе данных, которая предназначена для использования определенной группой пользователей; Доступ для уполномоченных пользователей – возможность доступа предоставляется исключительно административным пользователям, обладающим правами доступа. Данный вид доступа может использоваться для пользования внутренней информацией, не предназначенной к внешнему просмотру (просмотру на сайте). Доступ на запись - то же, что и выше только касательно возможности записи информации в раздел. Доступ на редактирование - то же, что и выше только касательно возможности редактирования информации в разделе. Доступ на подписку - то же, что и выше только касательно возможности подписки на изменение информации в разделе. Тип модерирования – возможно два варианта: постмодерирование – информация будет доступна на сайте сразу после ее добавления в раздел; премодерирование – добавленная в раздел информация будет доступна на сайте только после того, как ее проверит уполномоченный пользователь системы. Включить – данный параметр разрешает или запрещается (делает скрытым) показ раздела на сайте. Чтобы включить раздел, надо поставить галочку. Если галочки нет, то раздел не будет показываться на страницах сайта, а в режиме администрирования около его имени будет стоять красный крестик. Заполните форму и нажмите на кнопку «записать». В зависимости от настроек системы в форме добавления/изменения настроек раздела могут присутствовать и другие поля. Их описание можно увидеть в разделе «Системные таблицы» – «Раздел» – «Поля» (при наличии доступа в этот раздел). После добавления раздела необходимо добавить в него минимум один шаблон (см. ниже) в том случае, если не используются наследуемые шаблоны. Изменение настроек раздела Для того чтобы изменить настройки раздела, следует нажать на ссылку «изменить настройки раздела» в меню работы с разделом. Значения полей формы аналогичны значениям полей в форме добавления каталога. Состав шаблонов раздела Для того чтобы изменить состав шаблонов, следует нажать на одноименную ссылку в меню работы с разделом. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 24 Шаблоны должны быть предварительно созданы в разделе «шаблоны вывода данных». Для того чтобы добавить шаблон, следует нажать на ссылку «добавить». Чтобы получить информацию о текущих настройках выбранного шаблона или изменить их, следует нажать на название шаблона. Для того чтобы удалить тот или иной шаблон, следует поставить флажок напротив удаляемого шаблона и нажать на кнопку в виде крестика. Ссылки по теме для раздела Для того чтобы изменить ссылки по теме, следует нажать на одноименную ссылку в меню работы с разделом. Можно добавить ссылку, нажав на «добавить». Есть возможность просматривать и редактировать настройки ссылки, нажав на название ссылки. Для того чтобы удалить ссылку, следует установить флажок рядом с названием удаляемой ссылки и нажать на кнопку в виде крестика. Поля формы при добавлении или изменении ссылок по теме: Название необходимо для идентификации ссылки администратором. Текст – текст ссылки, можно использовать HTML. Приоритет определяет порядок вывода ссылок по теме на странице. Перенос раздела Любой раздел можно перенести в другой родительский раздел. Для этого нужно нажать на одноименную ссылку в меню операций с разделами. В появившемся поле нужно ввести номер (ID) нового родительского раздела. Номер каждого раздела можно определить на странице, содержащей меню данного раздела. Удаление раздела Разделы можно удалять, предварительно установив флажки напротив удаляемых разделов в разделе «каталоги и разделы» и нажав на кнопку в виде крестика. Также вы можете удалить раздел в «полном рубрикаторе», нажав на иконку в виде синего крестика справа от названия раздела. Будьте осторожны: при удалении разделов из базы данных стирается ВСЯ информация внутри него. Редактирование информации в разделе Для редактирования информации в разделе необходимо в меню операций над разделом выбрать пункт «редактировать», после чего выбранный раздел откроется в новом окне. Также войти в режим редактирования информации в разделе можно путем нажатия на иконку «редактировать» напротив выбранного раздела в «полном рубрикаторе». Подробнее процесс работы с содержимым сайта описан в главе «Работа с содержимым сайта». Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 25 Работа с содержимым сайта Вся текстовая информация на сайте хранится в базе данных. Отображение содержательной части страницы происходит примерно по алгоритму, кратко описанному ниже: 1. По адресу URL и параметрам определяется состав шаблонов для раздела, которые подлежат выводу. 2. Из базы данных выбираются записи, которые подлежат выводу. 3. Записи форматируются согласно настройкам шаблонов и в отформатированном виде выводятся на странице. Редактирование записей происходит через стандартный интерфейс. Шаблон вывода форм добавления и редактирования записи определяется на уровне шаблона данных. При редактировании/добавлении записей возможно использование HTML-редактора в полях типа «Text» (элемент управления <textarea>) в том случае, если шаблон позволяет использование HTML-тегов (см. ниже). Добавление информации Конечный элемент структуры сайта, в котором хранятся записи – шаблон в разделе. Чтобы произвести добавление в шаблон в разделе, можно: - - В полном рубрикаторе нажать на иконку «режим редактирования» напротив нужного раздела. Если система навигации по данному разделу предусматривает переключение между шаблонами в разделе при помощи системы закладок, необходимо перейти по закладкам в нужный шаблон в разделе. После попадания в нужный шаблон необходимо нажать на ссылку «добавить» (она может называться по-другому) и заполнить появившуюся форму. Зайти в меню раздела и нажать на ссылку «режим редактирования», после чего откроется та же страница. Войти в меню редактируемого раздела, нажать на «состав шаблонов» и нажать на ссылку «добавить». Если в «полном рубрикаторе» нет значка «редактирование» и аналогичной ссылки в меню раздела тоже нет, значит, раздел представляет собой ссылку на другую страницу (или внешний скрипт) и не может быть отредактирован стандартными средствами. Обратитесь к разработчику сайта, чтобы выяснить, как редактировать информацию в этом разделе. Форма добавления записи зависит от состава полей в шаблоне и шаблона добавления для данного шаблона данных (см. ниже). Т.к. шаблоны могут создаваться через систему администрирования, описать форму добавления для каждого шаблона невозможно. Ниже приведено описание нескольких стандартных полей, которые доступны при условии, что авторизованный пользователь имеет право на модерирование (см. ниже): Дата и время добавления – изменяет дату и время добавления, автоматически проставляемую при добавлении записи. По умолчанию текущая дата. Показывать перед ID – устанавливает номер записи, перед которой будет показана эта запись. Номера всех записей доступны при просмотре изменяемой страницы в режиме редактирования. По умолчанию записи сортируются в соответствие с настройками шаблона. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 26 Редактирование и удаление информации Для редактирования информации на сайте (модерирования) необходимо войти в режим редактирования данного раздела или шаблона в разделе (см. выше). Около каждой записи будет отображен ее статус, автор и ссылки «изменить» и «удалить». Также, если для данной страницы предусмотрен режим премодерирования, будет показана ссылка «включить» или «выключить» в зависимости от текущего состояния записи. Чтобы отредактировать запись нажмите на ссылку «изменить». Перед вами появится форма редактирования записи, структура и формат которой определяются составом полей и шаблоном редактирования в шаблоне данных. Также для редактирования доступны поля «Дата добавления», «Показывать перед ID», назначение которых описано выше. Для удаления записи нажмите на ссылку «удалить» в режиме редактирования. Система попросит подтвердить удаление; после подтверждения запись будет удалена. Работа с файлами Файлы (картинки, Flash-ролики, внешние документы и пр.) можно закачивать на сайт тремя способами. 1. При помощи FTP Наличие возможности закачивать файлы через протокол FTP зависит от настроек доступа вашего хостинг-провайдера. Для закачки файлов по FTP вам понадобится иметь FTP-клиент – специальную программу, которая осуществляет закачку файлов на сервер. Самые распространенные FTPклиенты: Far, CuteFTP, Windows Commander. Если у вас нет навыков работы с FTP-клиентами, обратитесь к вашему разработчику, хостинг-провайдеру или документации по FTP-клиенту. 2. Через шаблон «Вспомогательные файлы» В комплект стандартной поставки NetCat входит шаблон «Вспомогательные файлы», при помощи которого можно закачивать файлы так же, как и добавлять записи другого вида. Для использования этого шаблона вам необходимо создать выключенный раздел, добавить в него шаблон «Вспомогательные файлы» и добавлять записи при помощи стандартного интерфейса. На первой странице при добавлении вам необходимо ввести комментарий к файлу (например, ключевое слово или описание на русском языке), а на второй вам будет предложено выбрать файл с диска и закачать его на сайт. 3. Через стандартный интерфейс добавления записи Для некоторых шаблонов может присутствовать поле (одно или несколько) типа «File». В этом случае после заполнения первой страницы формы добавления записи на экран будет выдана форма закачки файла с локального диска. Использование файла (отображение картинки, ссылка на Wordдокумент и пр.) зависит от шаблона вывода для данного шаблона данных. Если вы закачиваете картинки при помощи FTP-клиента, рекомендуется размещать их в каталоге /i/images/. В нем можно создавать подкаталоги. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 27 Титульные страницы Каждому каталогу соответствует какой-либо хост (домен), например, www.netcat.ru. Чтобы определить, что показывать на этой странице, необходимо: 1. При помощи стандартного интерфейса создать раздел, который будет содержать информацию для титульной страницы; 2. Выключить данный раздел; 3. Сформировать для него макет вывода (если он отличается от остальных макетов); 4. Указать номер раздела в соответствующем поле в настройках каталога. Визуальный HTML-редактор Визуальный HTML-редактор вызывается на странице добавления/изменения записи для каждого шаблона, у которого есть поля типа «Text» (элемент <textarea>) и для которого разрешено использование HTML-тегов. Для использования редактора необходимо иметь броузер Microsoft Internet Explorer 5.5 или выше. Около каждого поля типа «Text» выводится кнопка, при нажатии на которую открывается новое окно с HTML-редактором. Если в поле ввода уже есть какой-то HTML-текст, он будет отображен в новом окне. В редакторе доступны стандарные функции работы с текстом: копировать, вырезать, вставить, вставить с фильтром (без форматирования). Так, можно копировать в окно редактора данные из документов Microsoft Word и др. Также доступны функции отмены или повтора действия. На панели редактора также находятся следующие кнопки: - вставка/редактирование ссылки - работа с таблицами: o вставка/редактирование таблицы o вставка строки в таблицу o вставка столбца в таблицу o удаление строки o удаление столбца - вставка/редактирование картинки - форматирование выделенного текста как ненумерованного списка - форматирование выделенного текста как нумерованного списка - форматирование текста по центру, левому краю, правому краю, обоим краям - форматирование выделенного текста жирным, курсивом, подчеркнутым - установка атрибутов выделенного текста (установка производится после нажатия на стрелку после выпадающего списка): o цвет o цвет фона o размер После окончания работы с текстом нажмите на кнопку внизу окна, и текст появится в поле ввода основной страницы. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 28 Пользователи и права доступа В системе NetCat существует встроенная система авторизации и разделения прав. Философию системы разделения прав можно описать следующими тезисами: - - пользователь может быть зарегистрирован как из системы администрирования, так и (в зависимости от настроек системы) из системы ввода/вывода; каждый пользователь может иметь неограниченный набор прав; права пользователям могут устанавливаться из системы администрирования, а также при регистрации по умолчанию; каждый экземпляр прав означает возможность пользователю производить определенные действия (просмотр закрытых разделов, добавление, модерирование и пр.); каждый пользователь должен принадлежать к какой-либо группе пользователей; каждая группа пользователей имеет определенный набор прав, которыми также можно управлять через систему администрирования; все права группы распространяются на пользователей в этой группе. Для каждого пользователя предусмотрено свойство «Авторизован» (см. настройки какоголибо пользователя). Если данное свойство не установлено, пользователь считается не авторизованным, т.е. фактически бесправным. Это свойство можно использовать, чтобы «выключать» пользователей без их удаления из системы. Наличие установленного свойства у вновь зарегистрированных пользователей (при регистрации через систему ввода-вывода) зависит от настроек системы (см. «Руководство разработчика системы NetCat», глава «Настройки системы»). Каждый пользователь может иметь несколько прав. Ниже перечислены типы прав: Директор - имеет право совершать все операции в системе. Супервайзер - имеет право совершать все операции в системе за исключением операций с пользователями, имеющими права типа «Директор». Менеджер - имеет право совершать все операции со структурой сайта и его содержимым (т.е. не имеет доступа к пользователям, шаблонам, макетам, классификаторам, модулям). Т.о. права типа «Менеджер» аналогичны набору прав «Администратор каталога» для всех каталогов со всеми установленными возможностями (см. ниже). Администратор каталога - имеет право совершать операции с каталогом и со всеми его подразделами. Для каждого экземпляра прав типа «Администратор каталога» можно установить возможность: просматривать содержимое каталога; добавлять информацию в каталог; редактировать собственные записи в каталоге; подписываться на обновления разделов в каталоге; модерировать информацию в каталоге; изменять настройки каталога и разделов в нем. Администратор раздела - имеет право совершать операции с разделом и со всеми его подразделами. Для каждого экземпляра прав типа «Администратор раздела» можно установить возможность: просматривать содержимое раздела; добавлять информацию в раздел; Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 29 редактировать собственные записи в разделе; подписываться на обновления раздела; модерировать информацию в разделе; изменять настройки раздела. Администратор шаблона в разделе - имеет право совершать операции с шаблоном раздела. Для каждого экземпляра прав типа «Администратор раздела» можно установить возможность: просматривать содержимое шаблона; добавлять информацию в шаблон; редактировать собственные записи в шаблоне; подписываться на обновления шаблона; модерировать информацию в шаблоне; изменять настройки шаблона. Гость – имеет право просматривать все разделы сайта и системы администрирования без возможности изменения, добавления или удаления информации. Рассмотрим подробнее операции с содержимым сайта. Каждый каталог, раздел и шаблон в разделе имеют 4 атрибута, относящихся к системе разделения прав: - Доступ на чтение - Доступ на добавление - Доступ на редактирование - Доступ на подписку Каждый атрибут может иметь одно из значений: Не определено (только для разделов и шаблонов в разделе) – значение атрибута наследуется с верхнего уровня структуры сайта (см. раздел «Структура» данного Руководства). Доступ для всех – права на операцию имеют все посетители вне зависимости от факта регистрации пользователя. Авторизованные пользователи – все зарегистрированные пользователи, авторизованные системой. Уполномоченные пользователи – пользователи, имеющие права на данную операцию. Ниже приведена таблица категорий пользователей, имеющих право на ту или иную операцию. Каждой строке соответствует операция, для которой определяются категории пользователей, а каждому столбцу соответствует значение настроек каталога для этой операции. Операция Все Просмотр Все (авторизация не производится) Авторизованные пользователи Все авторизованные пользователи Добавление Все (авторизация не производится) Все авторизованные пользователи Уполномоченные пользователи Авторизованные пользователи, которые имеют право на просмотр данного раздела или любого раздела верхнего уровня. Администраторы каталога, которые имеют право на просмотр каталога. Менеджеры, супервайзеры, директора. Авторизованные пользователи, которые имеют право на добавление в данный раздел или любой раздел верхнего уровня. Администраторы каталога, которые имеют право на добавление в каталог. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 30 Изменение своих записей (редактирование) Все авторизованные пользователи Все авторизованные пользователи Подписка Все авторизованные пользователи Все авторизованные пользователи Менеджеры, супервайзеры, директора. Авторизованные пользователи, которые имеют право на изменение в данном разделе или любом разделе верхнего уровня. Администраторы каталога, которые имеют право на изменение в каталоге. Менеджеры, супервайзеры, директора. Авторизованные пользователи, которые имеют право на подписку в данном разделе или любом разделе верхнего уровня. Администраторы каталога, которые имеют право на подписку в каталоге. Менеджеры, супервайзеры, директора. В нижеследующей таблице приведены стандартные примеры настроек прав доступа для некоторых типов информации. В строках указаны типы информации, в столбцах – настройки доступа. Доступ на чтение Новости Все О компании Все Для партнеров Объявления Авторизованные пользователи Все Поручения сотрудникам Уполномоченные пользователи Доступ добавление Уполномоченные пользователи Уполномоченные пользователи Уполномоченные пользователи Авторизованные пользователи Авторизованные пользователи на Доступ на редактирование Уполномоченные пользователи Уполномоченные пользователи Уполномоченные пользователи Авторизованные пользователи Авторизованные пользователи Доступ на подписку Авторизованные пользователи Уполномоченные пользователи Авторизованные пользователи Авторизованные пользователи Уполномоченные пользователи Первый тип информации (новости) подразумевает открытость информации для всех; подписаться на новости компании может любой пользователь, а добавлять и менять новости – только сотрудники, обладающие соответствующими правами. Тексты в разделе «О компании» также доступны всем, но т.к. подписка не имеет смысла, поэтому она фактически закрыта (может быть открыта для отслеживания информации кем-нибудь из руководства). Информация для партнеров и подписка на обновления открыты любому авторизованному пользователю (подразумевается, что пользователями могут быть только сотрудники компании и партнеры). Частные объявления могут добавлять партнеры и сотрудники, а просматривать – все. Соответственно, менять свои объявления могут все авторизованные пользователи; они же могут подписываться. И внутренний раздел «Поручения сотрудникам», в котором подразумевается несколько подразделов для каждого сотрудника, доступны для чтения и подписки конкретному сотруднику (и, например, его руководителю). Писать же поручения могут все сотрудники. Система авторизации В зависимости от настроек системы пользователь может иметь в качестве регистрационного имени либо логин, либо адрес электронной почты, либо идентификатор (подробнее см. «Руководство разработчика системы NetCat», глава «Настройка системы»). В каждой из частей системы (система администрирования и система ввода-вывода) может быть свой метод авторизации: HTTP-авторизация (ввода логина и пароля во всплывающем окне) и Cookie-авторизация (форма ввода логина и пароля располагается на HTML-странице). Эти параметры также настраиваются (см. там же). За один сеанс работы с какой-либо частью Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 31 системы необходимо авторизоваться только один раз – до закрытия окна или выхода из системы логин/пароль спрашиваться не будет. Права авторизованного пользователя определяются в реальном времени. Это означает, что, если в процессе работы с системой у пользователя изменились права, система авторизации учтет это сразу же при первом действии авторизованного пользователя; если пользователя удалили во время его работы или у него сменился пароль, система авторизации попросит его авторизоваться еще раз. Операции с пользователями Операции с пользователями происходят в группе разделов «пользователи». Здесь представлены все типовые операции с пользователями: регистрация, изменение регистрационной информации пользователей, смена пароля, настройка прав, рассылки, операции с группами пользователей. Т.к. список пользователей сайта в разных случаях может быть достаточно большим, в системе предусмотрена возможность выборки пользователей по группам или по фрагменту адреса электронной почты (т.е. можно указать подстроку из адреса, например «netcat.ru»). Форма выборки и список пользователей находится в разделе «пользователи и права». Регистрация пользователя Для регистрации нового пользователя зайдите в раздел «Регистрация пользователя». Форма (карточка) пользователя может состоять минимум из двух полей: Группа пользователей – название группы, к которой принадлежит пользователь. Авторизован – пользователь авторизован системой и может считаться полноправным пользователем. Установленная галочка означает, что пользователь авторизован; отсутствие ее – пользователь не авторизован. Заполните форму и нажмите на кнопку «записать». В зависимости от настроек системы в форме добавления/изменения регистрационной информации пользователя могут присутствовать и другие поля. Их описание можно увидеть в разделе «Системные таблицы» – «Пользователи» – «Поля» (при наличии доступа в этот раздел). Изменение регистрационной информации Для редактирования регистрационной информации пользователя зайдите в раздел «пользователи и права», при необходимости сделайте выборку и нажмите на адрес нужного пользователя, после чего внесите изменения в показанную форму. Значения полей формы аналогичны значениям полей в форме изменения регистрационной информации пользователя за исключением пароля: он меняется на отдельной странице. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 32 Смена пароля Для смены пароля необходимо в разделе «пользователи и права» выбрать справа от имени интересующего вас пользователя ссылку «сменить пароль». Для смены пароля требуется ввести новый пароль в первом поле и повторить ввод того же значения во втором. По окончании ввода требуется нажать на кнопку «записать». Установка прав доступа для пользователя Для установки или редактирования прав доступа пользователя сначала выберите пользователя в разделе «пользователи и права», после чего нажмите на ссылку «права доступа» напротив выбранного пользователя. На появившейся странице будет представлен список всех прав данного пользователя. Каждая строка представляет собой экземпляр прав. Напротив прав типа «администратор каталога», «администратор раздела» и «администратор шаблона в разделе» отображены 6 полей ввода, соответствующих правам на чтение, добавление, подписку, редактирование (собственных записей), модерирование, изменение настроек раздела. Установленные галочки означают наличие прав на данную операцию с разделом (или каталогом или шаблоном в разделе); отсутствие галочки – отсутствие прав. Изменять набор прав на действия можно путем снятия/добавления галочек и нажатия кнопки «записать». Для удаления какого-либо экземпляра прав пользователя выберите удаляемые права, установив галочки в последнем столбце напротив выбранных прав, и нажмите кнопку «Х» (удаление). Для добавления экземпляра прав пользователю нажмите на ссылку «добавить». Выберите тип прав, установив переключатель напротив нужного типа. Если выбранный тип прав находится в нижней (отделенной) части списка, также необходимо указать номер (ID) каталога, раздела или шаблона в разделе, а также набор прав на операции. После этого необходимо нажать кнопку «добавить». Удаление пользователей Для того чтобы удалить пользователя или несколько пользователей, зайдите в раздел «пользователи и права», при необходимости сделайте выборку, после чего проставьте галочки напротив выбранных пользователей и нажмите кнопку «Х» внизу страницы. Будьте осторожны: удаленные пользователи восстановлению не подлежат. Вместе с пользователями будут удалены и их права. Группы пользователей Для управления группами пользователей и их правами зайдите в раздел «группы пользователей». На экране отобразится список групп. При нажатии на название группы вы можете изменить ее название в появившейся форме. При нажатии на ссылку «права доступа» для выбранной группы появится список прав. Интерфейс управления правами для данной группы аналогичен интерфейсу управления правами доступа для пользователей. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 33 Добавить новую группу можно, нажав на ссылку «добавить» вверху страницы, после чего в появившейся форме ввести название группы и нажать кнопку «записать». После этого можно добавлять права доступа для данной группы. Чтобы удалить группу (или несколько групп), а также все ее права, нужно проставить галочки напротив выбранных групп и нажать на кнопку «Х» внизу страницы. Рассылки по базе пользователей В разделе «отправка письма» существует возможность рассылки писем зарегистрированным пользователям. Для отправки письма необходимо заполнить следующие поля: Группы пользователей – выбираются группы пользователей, которым необходимо отослать письмо (можно выбрать все группы – в этом случае письмо будет отправлено всем пользователям системы). Прикрепить файл – поставьте галочку, если хотите отправить вместе с письмом какой-либо файл (форма для его выбора появится на следующей странице). Тема – тема письма. Тело – текст письма. Если установлена галочка «прикрепить файл», после нажатия на кнопку «отправить письмо» будет предложено выбрать файл с локального диска (при нажатии на кнопку «обзор» или «browse» в английской версии броузера). После нажатия на ссылку «отправить письмо» оно отправится. Письмо будет отправлено от имени авторизованного пользователя. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 34 Макеты дизайна страниц Для создания макетов дизайна необходимо иметь HTML-макеты всех типов страниц, после чего перевести их в формат системы NetCat. Подробно процесс перевода и спецификации для внутреннего формата системы описаны в «Руководстве разработчика системы NetCat». Каждая страница сайта под управлением системы NetCat состоит из трех частей. Помимо содержательной части страницы (где показывается собственно ее) система оперирует понятиями «Header» (верхняя часть страницы) и Footer (нижняя часть страницы). Такое разделение совершенно не означает, что страница разделена на три горизонтальных части (см. рисунок «Схематический пример страницы»). В этих двух «сервисных» частях страницы могут располагаться такие элементы, как логотип, название сайта, заголовок текущей страницы, элементы навигации, баннеры, обменные кнопки, ссылки по теме и пр. На приведенном ниже примере светло-серым цветом выделена верхняя часть страницы, темно-серым – нижняя, а белым – содержательная ее часть. Компания «Рога и Копыта» С нами рога становятся ветвистей! ЛОГОТИП - Структура компании - Руководство компании - Новости - Филиалы О компании Продукция Дилеры Поставщики Форум Координаты Новости 32.13.02. В продажу поступила новая партия рогов. 31.12.02. В продажу поступила новая партия копыт. 03.11.01. Сегодня мы получили лицензию на наставление рогов на территории России. См. также: - roga.ru - kopyta.ru - r&k.ru © ООО «Рога и Копыта» [email protected] Рис. «Схематический пример страницы» Макет дизайна в формате NetCat представляет собой описание верхней и нижней частей страницы, а также настроек (разделители, префиксы/суффиксы и пр.). Таким образом, при выводе страницы сначала отображается ее верхняя часть (в соответствие с настройками макета), затем содержательная, а затем нижняя (опять в соответствие с настройками макета). Редактирование макета При нажатии на имя макета в разделе «макеты страниц» открывается страница с информацией о макете. Пояснение к полям: Название – это название макета, в дальнейшем появляющееся в списке доступных макетов при добавлении/изменении раздела или каталога. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 35 Настройки – в этом поле указываются шаблоны вывода различной навигации (первый уровень, второй уровень, ссылки по теме и т.д.). Более подробную информацию можно получить в «Руководстве разработчика системы NetCat», раздел «Макеты дизайна». Верхняя часть страницы (Header) - макет вывода верхней части страницы, так называемого «хэдера». Нижняя часть страницы (Footer) – макет вывода нижней части страницы, так называемого «футера». Комментарий – произвольный текст, обычно составляемый разработчиком для пояснений к макету. В зависимости от настроек системы в форме добавления/изменения макета могут присутствовать и другие поля. Их описание можно увидеть в разделе «Системные таблицы» – «Макеты страниц» – «Поля» (при наличии доступа в этот раздел). Добавление макета Чтобы создать макет, необходимо в разделе «макеты страниц» нажать на ссылку «создать новый макет» и заполнить появившуюся форму. Значения полей в форме аналогичны соответствующим значениям в форме добавления макета. Удаление макета Для удаления макета необходимо нажать крестик справа от его имени в списке макетов. Внимание: макет «Макет по умолчанию» является системным и не может быть удален. Также необходимо следить за тем, чтобы при удалении макетов не оставалось разделов, использующих их, так как в противном случае обращение к таким разделам будет приводить к ошибке на странице броузера. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 36 Шаблоны данных Шаблоны вывода данных представляют собой совокупность структуры данных (набора полей) и шаблонов действий (вывода, добавления, редактирования, подписки, поиска по страницам данных шаблонов). С точки зрения посетителя сайта шаблон определяет внешний вид содержательной части страницы (см. раздел «Дизайн»). В зависимости от настроек макета дизайна на одной странице могут располагаться как несколько шаблонов раздела, так и по одному (навигация по ним в этом случае осуществляется посредством т.н. «закладок»). Региональные партнеры Корпорация «Рога и Копыта» имеет разветвленную сеть партнеров по всей России, которая позволяет клиентам корпорации своевременно и в полном объеме получать все необходимые услуги корпорации. Москва Санкт-Петербург Екатеринбург Новосибирск «Рога и Копыта Северо-запад» Адрес: ул. Рогокопытническая, 9 Тел. 222-3344 «Копыта и Рога» ООО Адрес: ул. Копыторожская, 12 Тел: 444-3322 URL: http://www.k-r.ru Схематический пример страницы с пятью шаблонами Классификация шаблонов Шаблон данных может быть одноуровневым или двухуровневым. Пример одноуровневого шаблона: гостевая книга, HTML-текст. Пример двухуровневого шаблона: список статей. На странице может располагаться название статьи, автор, краткий анонс. У каждой записи есть ссылка на темплейт полного вывода, по ссылке показывается страница с названием, картинкой, полным текстом статьи, ее реквизиты. Шаблон может поддерживать или не поддерживать HTML-текст. Рекомендуется выключать поддержку HTML-текста в шаблонах, которые могут заполняться внешними пользователями. Шаблон может предполагать листинг на несколько страниц, а может выводить все записи на одной странице. Записи шаблона могут быть законченными информационными единицами, а могут быть интегрированными с внешними модулями, как то: - шаблоны электронной коммерции (заказ/покупка товаров на сайте); - изменение данных в БД (голосование, бронирование туров и пр.) и пр. Добавление шаблона Для добавления шаблона необходимо нажать на ссылку «добавить» в разделе «шаблоны вывода данных». Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 37 Комментарии к полям формы добавления шаблона: Название предназначено для ввода внутреннего названия шаблона. Это название видно только в административном режиме и предназначено для удобства работы. Тип модерирования предполагает выбор одного из двух представленных значений: Постмодерирование - добавленные записи сразу же видны на сайте и процесс модерирования происходит после добавления. Премодерирование - добавление записи происходит только после проверки модератором. Значение типа модерирования для конкретного шаблона в разделе определяется настройками типа модерирования для раздела/шаблона в разделе. Если он не установлен, то используется настройка по умолчанию, т.е. значение данного поля в шаблоне вывода данных. Срок хранения записей задает количество дней для хранения записей. Если срок установлен в 0, то данные хранятся вечно. Разрешать тэги определяет возможность использования HTML-тэгов при вводе информации. Примечание: при помощи некорректного HTML-кода возможно серьезно нарушить внешний вид страницы, поэтому рекомендуется выключать HTML-теги в разделах и шаблонах, которые предназначены для добавления внешними пользователями. Шаблон заголовка определяет внешний вид заголовка страницы при выводе полного шаблона записи. Префикс формы предопределяет макет структуры вывода данных страницы, в данном случае ее верхний вид. Это поле предназначено для ввода HTML-текста с возможными вставками макрокода. Суффикс формы предопределяет макет структуры вывода данных страницы, в данном случае ее нижний вид (между префиксом и макетом вывода записи). Это поле предназначено для ввода HTML-текста с макроязыком. Макет вывода записи предопределяет макет структуры вывода данных страницы, в данном случае ее среднюю часть (между префиксом и суффиксом). Это поле предназначено для ввода HTML-текста с макроязыком. Макет полного вывода предназначен для вывода страниц пояснительного характера. Иными словами, если в макете вывода записи существует необходимость вывода более подробной информации о записи, то используется макет вывода полной записи. Это может быть, например, всплывающие меню. Число записей на странице дает возможность ввести максимальное количество записей, выводящихся на одной странице. Сортировка записей по полю предназначена для ввода полей типа данных, относительно которых будет происходить процедура сортировки. Описание служит кратким описанием к типу данных. Для того чтобы добавить тип данных, следует заполнить поля формы и нажать на кнопку «записать». Редактирование настроек шаблона Для редактирования настроек шаблона необходимо нажать на его название в разделе «шаблоны вывода данных». Значения полей формы редактирования настроек шаблона аналогичны значениям тех же полей в форме добавлении шаблона. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 38 Также к настройкам шаблона относятся шаблоны действий: - шаблон формы добавления записи; - шаблон действия после добавления; - шаблон формы изменения записи; - шаблон действия после изменения; - шаблон формы поиска; - шаблон формы расширенного поиска; - шаблон отправки письма подписчикам после добавления записи. Правила составления этих шаблонов описаны в «Руководстве разработчика системы NetCat», глава «Программирование шаблонов». Редактирование полей шаблона При нажатии на ссылку «поля» напротив названия шаблона на экране появляется список полей данного шаблона. Каждое поле можно удалить при помощи стандартного интерфейса. Также можно изменить настройки поля (кроме его названия) и добавить поле (нажав на ссылку «добавить»). Формы для добавления и изменения поля идентичны. Комментарии к полям: Название поля будет использоваться системой, поэтому это поле необходимо заполнять английскими буквами и цифрами и без пробелов. Описание поля обозначает внутреннее название поле (можно на русском языке). Тип данных определяет назначение использования поля: Char - строковой (символьный) тип данных; Int - тип данных целых чисел; Text - тип данных произвольного текста; List - списочный тип данных; Logical - логический тип данных («Да» или «Нет»); File - тип данных работы с файлом; Float - тип данных с плавающей запятой. Формат представляет собой формат ввода типа данных: для Text должна быть указана высота:ширина поля ввода типа TEXTAREA в символах (например 8:40); для List должно быть указано английское название классификатора; для File должен быть указан максимальный размер файла в байтах; для Char возможно указать формат «url» или «email» - система будет проверять вводимые данные на предмет соответствия формату URL-а или электронного адреса. Ширина для Char указывает число символов в поле при использовании данных типа Char. Не пустое подразумевает выбор одного из двух значений: «Да» - поле обязательно для заполнения; «Нет» - поле может оставаться пустым. Индексировать – будет ли создаваться индекс для данного поля в базе данных. Индексирование используется для выполнения процедуры поиска с большей скоростью. Искать по этому полю подразумевает разрешение на поиск. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 39 Приоритет вывода поля в форме. Чем выше приоритет, тем ниже выводится поле в форме, если не определены форматы добавления или редактирования записи. Значение по умолчанию выводится в данном поле и используется для облегчения ввода данных в поле. Например, если поле предназначено для введения URL'а, то здесь можно вписать «http://». Тогда при заполнении формы по умолчанию в этом поле будет сразу выводиться «http://». После заполнения формы или внесения изменений нажмите на кнопку «записать». Удаление шаблона Для удаления шаблона необходимо в разделе «шаблоны вывода данных» напротив удаляемого шаблона (или нескольких шаблонов) поставить галочку и нажать на кнопку «Х». Настройка системных таблиц В разделе «системные таблицы» находятся таблицы, используемые системой, например, каталог, раздел, макет страницы, пользователи. Каждая таблица содержит поля, например, название раздела, имя пользователя, его номер телефона. Стоит учесть, что эти поля являются дополнительными, т.е. вы можете оставить этот раздел неизменным, так как в системе уже предусмотрены для каждой таблицы какие-то поля по умолчанию, которые не отображаются. В частности: Каталог может содержать поля, используемые для настройки каталогов, т.е. при создании или изменении настроек каталога вы будете видеть эти дополнительные поля. Раздел может содержать поля, используемые для настройки разделов, т.е. при создании или изменении настроек раздела вы будете видеть эти дополнительные поля. Пользователи может содержать поля, используемые для настройки пользователей, т.е. при создании или изменении настроек пользователя и при регистрации вы будете видеть эти дополнительные поля. Макет страниц может содержать поля, используемые для настройки макетов страниц, т.е. при создании или изменении настроек макета вы будете видеть эти дополнительные поля. Обратите внимание, что в системные таблицы нельзя добавлять поля, уже существующие в данных таблицах (см. Приложение 1). Интерфейс настройки полей для системных таблиц идентичен интерфейсу настройки полей для шаблонов, поэтому для получения более подробной информации по добавлению или изменению поля обращайтесь к разделу «Редактирование полей шаблона» данной документации. Более подробно об использовании полей системных таблиц можно прочитать в «Руководстве разработчика». Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 40 Классификаторы Классификатор – таблица базы данных, содержащая два поля: номер (ID) записи и название. При помощи механизма классификаторов могут быть представлены, например, список городов, валют, должностей и пр. В системе NetCat классификаторы бывают двух типов: системные и пользовательские. Первый тип используется при редактировании настроек каталогов, разделов, пользователей и пр. Так, классификатор «Тип доступа» используется для настроек типа доступа для каталогов, разделов и шаблонов в разделе. В системе NetCat есть механизмы редактирования системных классификаторов, но пользоваться ими рекомендуется только разработчикам при наличии острой необходимости. Второй тип классификаторов используется в шаблонах данных (см. тип данных «List»). Создание классификатора Для того чтобы добавить новый классификатор, следует нажать на ссылку «добавить» в разделе «классификаторы». Комментарии к полям формы: Русское название служит названием классификатора. Применяется для лучшей ориентации в административном режиме работы с сайтом. Английское название – системное имя классификатора, под которым он будет храниться в базе данных и которое будет использоваться при создании полей типа «List» в шаблонах данных. Системный - устанавливает тип классификатора. В абсолютном большинстве случаев вам не понадобится создавать системные классификаторы. После создания классификатора вы можете добавить в него записи. Для этого необходимо вернуться в раздел «классификаторы» и нажать на ссылку «добавить» около нужного классификатора. Чтобы заполнить классификатор, введите в поле ввода значение и нажмите «записать». Затем вернитесь обратно и введите следующее значение и т.д. Редактирование классификатора Для редактирования информации о классификаторе нажмите на его название в списке. Вы можете изменить русское название и признак «системный». Редактирование происходит через стандартный интерфейс. Для редактирования записей классификатора нажмите на ссылку «редактировать» в столбце «записи» напротив выбранного классификатора в списке классификаторов. На экране появится список записей классификатора. Записи можно удалить при помощи стандартного интерфейса (установка галочек в правом столбце и нажатие кнопки «Х»), можно отредактировать, нажав на название записи и внеся изменения в форму. Удаление классификатора Для удаления классификатора в разделе «классификаторы» нужно поставить галочку напротив удаляемых классификаторов и нажать на кнопку в виде крестика. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 41 Модули Модули представляют собой надстройки к системе, расширяющие ее функциональность или обеспечивающие работу нестандартных функционалов или внешних программных комплексов. Модули могут быть трех типов: - Шаблон с расширенными (нестандартными) функциями (форум, операции с кредитными картами и пр.) Модуль расширения функциональности системы (внутренняя баннерная система, генерация счетчиков посещений и пр.) Модуль интеграции с внешними системами (локальные поисковые машины, процессинговые системы и пр.) Каждый модуль для системы включает: - интерфейс для настройки параметров модуля - подпрограмму (программы), реализующие функционал (опционально) - документацию (для сертифицированных модулей также контекстную подсказку) Подробно каждый модуль должен быть описан в документации к нему. Установка модуля Изначально модуль представляет собой файл, который необходимо закачать на сайт, распаковать, установить и настроить при помощи стандартного интерфейса. Для этого зайдите в раздел «установка модуля», при помощи появившейся формы выберите файл на локальном компьютере и нажмите кнопку «установить». На следующей странице будет выведено название модуля и предложение продолжить установку. Далее следуйте инструкциям на экране. Система может запросить какие-либо параметры, необходимые для настройки. После окончания процедуры установки модуля он будет зарегистрирован в системе и доступен для настройки и использования. Настройка модуля Для того чтобы настроить модуль, зайдите в раздел «список модулей», выберите настраиваемый модуль и нажмите на ссылку «настройка» напротив его названия. В появившейся форме необходимо установить некоторые параметры, состав и количество которых зависит от модуля. Более подробная информация о параметрах приводится в документации к модулю. Также напротив названия модуля может быть ссылка «выполнить». Она выводится в случае, если модуль представляет собой интерфейс для каких-либо операций с системой (например, массовый ввод данных, преобразование и пр.). Более подробная информация по работе с модулем приводится в документации к нему. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 42 Системные функции Обновление системы Система NetCat имеет встроенные возможности расширения функциональности двух типов. Первый – модули – подробно описан в главе «Модули». Он предназначен для расширения функциональности системы. Второй – патчи – представляет собой обновления системы, выпускаемые по мере выходя новых версий системы, работающей под управлением ядра версии 2.0. Список установленных патчей доступен в разделе «обновление системы». Для установки нового патча зайдите в раздел «обновление системы», при помощи формы закачайте патч с локального диска и нажмите кнопку «продолжить». После удачной установки патча система выведет на экран уведомление об этом. В случае невозможности установки патча (например, установка этого патча требует установки более ранних патчей, которые еще не установлены в системе) на экран будет выведено предупреждение об этом. Обновление состояния базы данных Данную функцию необходимо вызывать в тех случаях, когда происходит изменение структуры сайта: добавление разделов, изменение их ключевых слов, удаление. После выполнения обновления система выдаст небольшой отчет. Архивирование системы Для того чтобы заархивировать систему (например, перед масштабным изменением сайта или в целях безопасности данных), вам необходимо: 1. Заархивировать данные Создайте в терминальном режиме «дамп» базы MySQL при помощи команды: mysqldump --add-drop-table ИМЯ_БАЗЫ –u ИМЯ_ПОЛЬЗОВАТЕЛЯ –p ПАРОЛЬ > netcat.sql 2. Заархивировать файлы Создайте архив файлов в терминальном режиме при помощи команды: tar zcvf netcat.tgz . При этом имейте ввиду, что текущим каталогом должен быть корневой каталог системы. 3. Скопировать архивы себе Для этого скачайте оба файла в нужное место, например, на локальный компьютер при помощи FTP-клиента. Восстановление системы из архива происходит таким же способом, как и ее первичная установка – см. главу «Установка системы». При помощи архивирования также можно избежать ошибок на рабочей версии сайта при масштабных изменениях, если у вас есть возможность установить систему в другом месте, например, на Unix-сервере в локальной сети. В этом случае второй сервер также должен соответствовать системным требованиям NetCat, а также должна присутствовать возможность работы поддерживать сайты внутри сети. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 43 Выделите для проекта отдельный домен (например, netcat.lan), настройте его, создав соответствующий каталог на сервере, и установите в него систему (или полученные при архивировании файлы), следуя инструкциям, приведенным в главе «Установка системы». При этом не забудьте внести изменения в файл vars.inc.php (домен, пути и пр.). После того, как все необходимые изменения будут сделаны, заархивируйте систему (см. выше) и скопируйте файлы на внешний сервер. Удалите существующие файлы (команда rm –rf * из корня системы) и установите систему в соответствии с инструкциями из главы «Установка системы». Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 44 Начало работы Примечание. Инструкции, приведенные в этой главе, подразумевают, что система уже установлена на сервер (см. главу «Установка системы»). В данной главе вкратце описывается процесс создания сайта под управлением систему NetCat. Более подробную информацию см. в «Руководстве разработчика». Перед созданием сайта обычно разрабатывается техническое задание (ТЗ) на сайт, описывающее его. В него должны входить: - описание структуры сайта; - описание функционалов (алгоритмы, механизмы ввода/вывода и пр.); - макет дизайна сайта; и пр. На основе ТЗ и создается сайт: программируются шаблоны и модули, настраивается структура, формируются макеты дизайна. Формат ТЗ свободный, однако, в нем должно быть исчерпывающее описание будущего сайта. Настройки системы «по умолчанию» подразумевают наличие: основных шаблонов данных (HTML-текст, новости, вспомогательные файлы и пр.); простейшей структуры сайта (титульная страница, два подраздела); необходимых системных классификаторов; одного пользователя с правами директора (логин «1», пароль «123456»). После установки системы необходимо настроить сайт согласно описанному выше ТЗ. Процесс функциональной настройки (разработка сайта) подразумевает: 1. 2. 3. 4. 5. 6. 7. Программирование шаблонов; Настройка системных таблиц (при необходимости); Подключение или создание модулей (при необходимости); Ввод и конвертирование макетов дизайна в формат системы NetCat; Ввод и настройка структуры сайта; Ввод пользователей системы и настройка их прав. Ввод информации на сайт; Пункты 1-4 обычно происходят на этапе разработки сайта (подробнее см. «Руководство разработчика»). Структура сайта может настраиваться как на этапе разработки, так и на этапе наполнения сайта. Этап наполнения сайта и ввода пользователей может быть включен в этап разработки. Каждый этап подробно описан в настоящем Руководстве или в разработчика». «Руководстве Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 45 Получение помощи Если в данном Руководстве вы не нашли ответа на какие-либо вопросы, обратитесь к контекстной подсказке, которая доступна на каждой странице системы администрирования (в правом верхнем углу). Также вы можете обратиться за помощью к разработчику вашего сайта. Вам также доступен сервер netcat.ru, на котором есть: - форумы, посвященные решению различных ситуаций при использовании NetCat; - контактная информация службы поддержки пользователей NetCat; - разнообразные примеры, советы, рекомендации; - различная документация к системе. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 46 Руководство разработчика Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 47 Введение Данное Руководство позволит вам создавать сайты под управлением системы NetCat, управлять ими после создания, изменять и расширять функциональность. Перед прочтением настоящего Руководства изучите Руководство пользователя, т.к. вам понадобятся базовые знания о системе, приведенные в нем. Человек, создающий сайт на NetCat, должен: - - - знать HTML в объеме, необходимом для создания обычного статического сайта; уметь работать с растровой компьютерной графикой (за исключением случаев, когда на сайте не используются графические элементы), например, в пакете Adobe Photoshop; знать основы языка программирования PHP. Язык PHP похож на языки C, C++, Perl, поэтому, если вы знаете какой-либо из этих языков, скорее всего вам не потребуется серьезное изучение PHP; знать основы языка SQL, представлять себе принципы работы реляционной СУБД. Если вы хотите создавать собственные модули, вам необходимо: - профессионально знать язык PHP, иметь опыт разработок на нем; профессионально знать SQL, его реализацию в СУБД MySQL. Также подразумевается, что разработчик сайта должен быть «продвинутым пользователем» компьютера («advanced user»). Если сайт на NetCat создает не один человек, а команда разработчиков (например, веб-студия), эти знания и навыки должны быть распределены между ее участниками. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 48 Описание системы Технические требования Минимальные аппаратные требования для системы NetCat: Компьютер с процессором Pentium-166 или выше; Оперативная память 64 Мб и выше; Место на жестком диске 3 Мб. Программные требования для системы NetCat: Веб-сервер Apache 1.3.18 и выше; PHP 4.0.6 и выше (может быть собран как модуль Apache или как cgi); СУБД MySQL 3.23.32 и выше. Перед выбором хостинг-провайдера необходимо убедиться, что для сайта под управлением NetCat будет возможность: - установить обработчик ошибки 404 для выбранного домена; - распаковывать архивы tgz и «дампы» базы MySQL. Идеологические требования к сайтам Использование NetCat накладывает некоторые ограничения на сайты, которые будут работать под ее управлением. В большинстве своем ограничения несущественные, однако, их стоит иметь ввиду, создавая сайты на NetCat. Ниже приведен список ограничений. Иерархическая древовидная структура сайта Ограничение весьма условно – в настоящий момент редко встречаются сайты с другим видом структуры. Особенно это касается корпоративных сайтов, корпоративных порталов. Это ограничение означает, что структура сайта под управлением NetCat должна иметь вид дерева, например, на представленном ниже фрагменте структуры: o Каталог Валенки Дубленки Лобзики o О компании Миссия Менеджмент Руководство компании Руководители отделов Новости Вакансии o Партнерам Регистрация Принципы работы Также возможна неполная имитация сетевого вида структуры, когда один дочерний элемент структуры может иметь несколько родительских. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 49 Разделение каждой страницы сайта на 3 части Каждая страница сайта делится на три условных части: header (хедер, верхняя часть страницы), содержательная часть страницы и footer (футер, нижняя часть страницы). При этом термины «верхняя» и «нижняя» не означают дословное геометрическое понимание – подразумевается HTML-текст до и после содержательной части страницы. На футере и хедере могут располагаться элементы оформления сайта, навигации, вспомогательные элементы (баннеры, опросы и пр.). Ниже приведен схематический пример простой страницы: белым цветом обозначена содержательная ее часть, светло-серым – хедер и темно-серым – футер. Компания «Рога и Копыта» С нами рога становятся ветвистей! ЛОГОТИП О компании: - Структура компании - Руководство компании - Новости - Филиалы О компании Продукция Дилеры Поставщики Форум Новости 32.13.02. В продажу поступила новая партия рогов. 31.12.02. В продажу поступила новая партия копыт. 03.11.01. Сегодня мы получили лицензию на наставление рогов на территории России. См. также: - roga.ru - kopyta.ru - r&k.ru © ООО «Рога и Копыта» [email protected] Использование Macromedia Flash NetCat позволяет использовать flash-заставки, как и любые другие файлы, используемые в HTML-коде. Однако, в случае создания полноценного flash-сайта NetCat может быть использован с весьма существенными ограничениями. Так, если система навигации по сайту под NetCat реализована на Flash, для ее изменения придется производить двойную работу – изменять структуру в NetCat и в исходном файле flash-заставки. Также NetCat не будет полезен в случае, когда сайт представляет собой один flash-ролик. Использование фреймов (frames) В настоящее время фреймы встречаются очень редко – это связано с многочисленными проблемами, которые возникают при их использовании. NetCat содержит встроенные средства создания сайтов с традиционной, «бесфреймовой» навигацией. При помощи NetCat также можно реализовать фреймовый сайт, но это потребует использования некоторых специальных приемов. Подход к данным как к спискам шаблонной информации Все данные (выводимые в содержательной части страниц) в NetCat представляются в виде списков некоторых шаблонных элементов. Это могут быть списки товарных позиций, новости, списки сообщений в форуме, более сложные конструкции и пр. Простейшим шаблоном является HTML-блок текста. C его помощью реализуются все задачи, для которых неприменим «шаблонный» подход. Так, неструктурированный HTML-текст (с картинками, flash-роликами, скриптами JavaScript и пр.) обычно представляется как список данных, состоящий из одного элемента шаблона «HTML-текст». Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 50 Архитектура системы Систему NetCat можно разделить на 2 взаимосвязанные части: Систему администрирования (back-office) и Системы ввода-вывода (front-office). Первая отвечает за управление сайтом и отдельными сущностями в его рамках: структурой, правами, шаблонами и пр. Фактически Система администрирования является интерфейсом управления сайтом. Вторая часть отвечает за формирование HTML-страниц в броузере пользователя, вывод и ввод информации. Система ввода-вывода является интерфейсом посетителя, т.е. результаты работы именно Системы ввода-вывода видит посетитель сайта. Обе системы работают с единой базой данных. При разработке системы NetCat сущность «сайт» была разделена на несколько структурных составляющих, которые необходимо знать при создании сайта. Итак, любой сайт в представлении NetCat является совокупностью следующих сущностей: 1. Основные сущности, на которые можно разделить любой стандартный сайт 1.1. Структура 1.2. Шаблоны данных (типовых страниц сайта) 1.3. Макеты дизайна страниц сайта 1.4. Данные (текстовые, графические и пр.) 2. Дополнительные сущности, связанные с разграничением прав 2.1. Пользователи и права доступа 3. Дополнительные сущности, введенные при проектировании системы 3.1. Вспомогательные данные (классификаторы) 3.2. Дополнительные программные модули Структура сайта Основной единицей структуры сайта является каталог. Обычно каждому каталогу соответствует собственный домен 3 уровня, например, inside.domain.ru (кроме первого каталога – ему обычно соответствует домен вида domain.ru, www.domain.ru). Поэтому в стандартных задачах каталог только один. Дополнительные каталоги следует использовать в том случае, если нужно выделить в отдельный «подсайт» некий объем информации. Внутри каталога структура определяется системой разделов. Каждый раздел может иметь неограниченное количество подразделов, которые, в свою очередь, могут иметь свои подразделы. Таким образом реализуется иерархическая структура сайта. Совокупность включенных разделов идентична карте сайта. Каждый раздел имеет несколько свойств (атрибутов), которые влияют на права доступа к страницам данного раздела, внешний вид страниц, свойства навигации и пр. Состав свойств может дополняться при помощи интерфейса редактирования системной таблицы «Разделы». Большинство свойств характерно как для каталога, так и для раздела. Следующим элементом системы навигации является понятие «шаблон в разделе». К каждому разделу, содержащему какую-либо информацию и не являющемуся внешним скриптом (как, например, карта сайта), должен быть подключен один или несколько шаблонов, которые будут определять внешний вид содержательной части страницы. Только после того, как шаблон подключен к разделу, можно добавлять в него содержимое. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 51 Также в системе управления структурой реализовано важное свойство – наследуемость свойств. Оно значит, что, например, если для некоторого раздела указаны определенные настройки (макет дизайна, доступ, логотип и пр.), то для подразделов этого раздела эти свойства будут такими же, если их специально не переопределить. Это позволяет минимально сократить время на ввод и настройку структуры сайта. Шаблоны данных Целесообразность введения шаблонов можно понять на следующем примере. Допустим, на сайте есть каталог товаров. Для каждого товара определено название, фото, описание и цена (чаще свойств гораздо больше). При добавлении или редактировании позиции товара (без использования шаблонов) необходимо выложить изображение товара на сервер и ввести/отредактировать HTML-код товара. При использовании шаблонов достаточно ввести значения в HTML-форму и закачать картинку через веб-интерфейс. Кроме того, использование шаблонов позволяет быстро и просто осуществлять (на примере того же каталога товаров): - поиск/выборку по базе товаров (NetCat содержит встроенные средства поиска внутри шаблона по любым атрибутам – цена, название, категория и пр.); - изменения в формате вывода позиций (достаточно изменить HTML-код в настройках шаблона и он изменится во всем каталоге); - реализацию разных форматов вывода данных (в зависимости от каких-либо параметров); - проверку на правильность ввода (например, не допускать ввод букв в поле «Цена»); - подключать новые функциональные возможности (например, заказ товара или покупку через платежную систему); - реализовывать импорт/экспорт записей (особенно это важно при больших объемах информации – имея на входе файл Microsoft Excel, можно получить готовый каталог товаров на сайте); и т.д. Система управления шаблонами сочетает мощь и гибкость: с ее помощью можно реализовать огромный объем задач, в то же время, она гибка и удобна в использовании. Для каждого шаблона данных определяются: 1. Набор полей (например, для каталога товаров это может быть «Название», «Описание», «Картинка», «Цена»); 2. Шаблоны вывода содержимого страниц (4 шаблона: префикс, суффикс и макет вывода – для списка записей – и макет полного вывода – если каждой записи будет соответствовать своя отдельная страница); 3. Шаблоны различных действий (добавления/изменения, действия после добавления/изменения, подписки и пр.). Кроме того, при помощи механизма шаблонов можно за несколько минут создать полноценный интерактивный функционал – гостевую книгу, систему вопросов-ответов и др. Система шаблонов также применима для тех случаев, когда списочный вывод не требуется. В этом случае используется одна запись шаблона «HTML-текст». Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 52 Макеты дизайна Как уже показано выше, каждая страница делится на 3 части: хедер, футер и содержательную часть. Формат вывода содержательной части определяется шаблоном данных, а ее расположение на странице, равно как и футер с хедером – макетом дизайна. Основная функция макета дизайна (не считая самого оформления страницы) – реализация навигации по сайту. Макет обеспечивает вывод навигации различных уровней (внешний вид которой может настраиваться) и различных видов: оглавление сайта, меню 2-3-4-… уровня, «хлебные крошки» (Рога и Копыта > О компании > Руководство компании) и пр. Также немаловажной особенностью NetCat является то, что внешний вид элементов также может настраиваться: это могут быть текстовые ссылки на разделы, выпадающие списки (тег <select>), изображения, flash-ролики, выпадающие DHTML-меню, а также сочетания этих видов (иконка + название раздела и пр.). Сам макет представляет собой HTML-страницу, сконвертированную во внутренний формат NetCat. Процесс конвертации несложен. Так, если исходный макет подразумевает оглавление сайта в определенном месте страницы, оформленное каким-то образом (таблицы, выпадающие меню, картинки и пр.), в конечном макете этот HTML-код заменяется на функцию s_browse_level(0, $browse_sub[0]), а внешний вид навигации настраивается в специальном поле «Настройки макета». Макетов в системе может быть несколько. В большинстве случаев их два: для титульной страницы и для внутренних страниц. Однако можно создать неограниченное количество макетов и использовать разные макеты для разных разделов (по умолчанию все страницы сайта имеют тот макет, который определен для всего каталога, но на любом уровне структуры его можно переопределить). Структура свойств макета также редактируется через интерфейс управления системными таблицами. В системе макетов также реализована наследуемость, что позволяет сократить время настройки дизайна и предоставить разработчику более удобный интерфейс работы. Так, если есть задача использовать различную цветовую палитру для разных разделов, необходимо: - добавить в таблицу «Макет» поле «Таблица CSS»; - создать и заполнить макет по умолчанию; - создать дочерний макет, в котором заполнить только поле «Таблица CSS»; - определить в настройках нужных разделов созданный дочерний макет. Пользователи и права доступа В «Руководстве пользователя» достаточно подробно расписана система разграничения прав (см. соответствующую главу), поэтому распишем области ее применения и алгоритм работы. Каждый каталог/раздел/шаблон в разделе имеет 4 свойства, определяющих принцип доступа на операции: 1. Чтение 2. Добавление 3. Изменение собственных записей 4. Подписка Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 53 Каждое из этих свойств является наследуемым (т.е., если на каком-либо уровне структуры оно не определено, ему присваивается значение этого свойства с верхнего уровня, которое в свою очередь определяется так же). Каждое свойство, определяющее права, может иметь значения: 1. Доступ для всех – любой посетитель сайта может произвести эту операцию. 2. Доступ для зарегистрированных пользователей – только зарегистрированные пользователи могут производить эту операцию. 3. Доступ для уполномоченных пользователей – эту операцию могут производить только те пользователи, у которых определены права на нее. Как указано в «Руководстве пользователя», каждый пользователь может быть наделен неограниченным количеством прав. Кроме того, можно объединять пользователей в группы, которые, в свою очередь, также могут иметь определенный набор прав, который наследуется всем пользователям группы. Каждый экземпляр прав может быть одного из следующих типов: 1. Директор (имеет полные права на систему) 2. Супервизор (имеет полные права на систему за исключением операций с директорами) 3. Менеджер (имеет права на все операции со структурой и содержимым) 4. Гость (имеет права на просмотр всех страниц администрирования, без прав добавления/изменения/удаления) 5. Администратор каталога 6. Администратор раздела 7. Администратора шаблона в разделе Последние три типа прав в свою очередь могут иметь некоторый набор прав на операции в своем каталоге/разделе/шаблоне в разделе: Чтение информации в каталоге/разделе/шаблоне в разделе Добавление записей Подписка на добавленные записи Изменение собственных записей (т.е. записей, которые добавил данный пользователь) 5. Модерирование (редактирование, включение/выключение, удаление записей) 6. Администрирование (редактирование настроек; для каталога и раздела – управление шаблонами в разделе/каталоге) 1. 2. 3. 4. Права наследуются параллельно наследованию в структуре сайта. Т.е. пользователь, имеющий какие-либо права на каталог, автоматически получает аналогичные права на все разделы и подразделы внутри каталога; пользователь, имеющий какие-либо права на раздел, имеет аналогичные права на все шаблоны в разделе плюс права на все подразделы этого раздела. Остановимся подробнее на правах трех последних типов. Необходимость проверки на наличие прав у пользователя на какую-либо операцию определяется на уровне настроек раздела. Допустим, для раздела установлен следующий набор свойств на права: - Чтение – доступ для всех; Добавление – зарегистрированные пользователи; Изменение собственных записей – уполномоченные пользователи; Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 54 - Подписка – уполномоченные пользователи. В этом случае: - Просматривать страницы раздела могут все посетители сайта, авторизация не будет производиться; - Добавлять записи могут все зарегистрированные пользователи (кроме выключенных). Перед добавлением должна быть произведена авторизация – если пользователь ее не пройдет, добавления не произойдет. - Изменять собственные записи могут только зарегистрированные пользователи, у которых есть права на изменение собственных записей либо в этом шаблоне в разделе, либо в этом разделе, либо в любом разделе, находящемся «над» данным в структуре, либо в каталоге. - Подписка – то же самое. С системой управления правами также связано свойство каталога/раздела/шаблона в разделе «Тип модерирования». Он иметь одно из значений – премодерирование (после добавления записи она остается выключенной, а ее публикация производится после включения) и постмодерирование (публикация добавленной записи производится сразу после добавления). При помощи сочетания системы разграничения прав и типа модерирования можно организовать, например, систему публикации информационных материалов, когда несколько авторов могут добавлять материалы в раздел, которые проверяются корректором/редактором и только после этого публикуются. Для создания такого функционала обычно выполняется следующие операции: 1. Создается раздел с настройками доступа на чтение для всех, на запись, модерирование и изменение собственных записей – для уполномоченных пользователей. К разделу подключается соответствующий шаблон (статьи, обзоры и пр.). Тип модерирования раздела – премодерирование. 2. Создается группа пользователей «Авторы», которая наделяется правами добавления в созданный раздел. Каждый автор помещается в эту группу. 3. Создается пользователь с условным названием «корректор» или «редактор» и наделяется правами на модерирование. После этого все пользователи, входящие в группу «авторы», смогут добавлять записи в раздел (кроме того, пользователям из других групп можно прописывать права, аналогичные правам группы «Авторы»), но публиковаться эти материалы будут только после того, как «корректор» их включит. Если же наделить «корректора» правом на добавление, он сможет добавлять материалы самостоятельно. С помощью системы управления правами можно решать огромный спектр задач: электронные СМИ и обозрения, интернет-магазины различных типов, закрытые торговые и дискуссионные площадки, системы работы с удаленными партнерами и сотрудниками и многое другой. В стандартных задачах весь спектр возможностей системы управления правами используется очень редко. Обычно права (на просмотр – для всех, на другие операции – для уполномоченных пользователей) проставляются только для каталога, а во всех разделах эти параметры остаются неопределенными. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 55 Данные Работа с данными происходит в интерфейсе Системы ввода-вывода (front-office). Для работы с ними необходимо войти в меню выбранного раздела (к которому должен быть прикреплен минимум один шаблон) и нажать на ссылку «редактирование». Также в полном рубрикаторе около каждого раздела есть иконка «редактировать». На открывшейся странице появится список записей, около каждой из которых будет показан блок меню работы с данной записью – ее атрибуты и ссылки «изменить» и «удалить». Место в записи, где показывается этот блок, определяется переменной $f_AdminButtons в макете вывода записи данного шаблона. Также на странице будет ссылка «добавить». Сами данные хранятся в таблицах MessageXX, где XX – номер шаблона данных, который соответствует данной таблице (за исключением полей типа File – они закачиваются на сайт через веб-интерфейс). Структура таблиц редактируется при помощи интерфейса управления полями в шаблоне. Так, когда в шаблон, к примеру, номер 4 добавляется поле, система модифицирует структуру таблицы Message4 при помощи SQL-оператора «ALTER TABLE». Аналогичная операция выполняется при изменении типа поля или при его удалении. Когда создается новый шаблон, в базе данных создается новая таблица, к примеру, Message9, если номер шаблона – 9. Таким образом, если у шаблона номер 4 есть поля «Name» (имя), «Address» (адрес), «Age» (возраст), «Sex» (пол), в таблице Message4 помимо стандартных полей (см. Приложение 1) есть такие же поля. Все записи шаблона номер XX хранятся в таблице MessageXX вне зависимости от того, в каком разделе находятся эти записи. При выводе содержимого некоторого раздела (а точнее, шаблона в разделе) происходят примерно следующие действия: 1. По шаблону в разделе определяется номер используемого шаблона данных; 2. По номеру шаблона определяется таблица, в которой хранятся данные; 3. Происходит выборка всех записей этой таблицы, атрибуты «Номер раздела» и «Номер шаблона в разделе» которых совпадают с текущим разделом и шаблоном в разделе; 4. Если заданы дополнительные аргументы для выборки, производится дополнительная выборка в соответствии с параметрами запроса; 5. Если количество выбранных записей больше нуля, то a. Выводится префикс для данного шаблона, определенный макетом вывода префикса (см. настройки шаблона); b. Каждая запись, подходящая под указанные выше условия, форматируется в соответствие с макетом вывода записи для данного шаблона и выводится; c. Выводится суффикс для данного шаблона. Если на странице должна отобразиться только конкретная запись, она выводится в соответствие с макетом полного вывода данного шаблона. Классификаторы Классификатор – простейшая таблица, структура которой состоит из двух полей: номер (ID) записи и ее значение (текстовое поле). Так, если мы создаем классификатор «Деньги» (Money), в ней будут два поля: Money_ID и Money_Name. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 56 Классификаторы могут быть системными. Это означает, что они используются в системе администрирования. Так, в системе присутствует классификатор «Тип модерирования», значения которого используются в настройках каталогов, разделов, шаблонов в разделе. В системе предусмотрена возможность управления системными классификаторами, однако разработчики НАСТОЯТЕЛЬНО не рекомендуют пользоваться этим. Классификаторы, не являющиеся системными, предназначены для использования в шаблонах. Поясним использование классификатора в шаблоне на примере. Пусть нам необходимо создать шаблон «Сотрудники», каждая запись которого, помимо других полей, будет иметь поле «Пол». Для этого необходимо: 1. Создать классификатор «Пол» (английское название, к примеру, Sex) и добавить в него записи «мужской» и «женский»; 2. Создать шаблон (например, номер 8) и прочие поля. При этом будет создана таблица Message8; 3. Создать поле «Пол» (комментарий к полю) с названием, например, Sex. В «Типе поля» необходимо выбрать значение «List», в «Формате» указав значение «Sex» аналогичное названию классификатора. При этом в таблице Message8 появится поле Sex целого типа. После этого при добавлении/изменении записей данного шаблона для каждой записи будет выводиться выпадающий список (тег <select>), в котором будут значения «мужской» и «женский». Модули Модули поставляются в виде TGZ-архивов, содержащих программные файлы и наборы SQL-операторов. Модули используются для расширения функциональности и создаются в тех случаях, когда: - необходима функциональность для ввода/вывода данных, которую нельзя реализовать при помощи стандартных механизмов управления шаблонами (например, форумы, для которых нужна реализация подчиненности записей друг другу). В этом случае модуль обычно содержит SQL-код для добавления шаблона и файл с необходимыми функциями; - необходима реализация функционала, использующего шаблоны данных, но требующего нестандартных операций с данными (например, корзина в интернетмагазинах). В этом случае помимо SQL-операторов для создания шаблона «Интернет-магазин» модуль содержит скрипт или набор скриптов, обеспечивающих работу с функционалом; - необходима интеграция с каким-либо сервисом на сервере или вне его. Это может быть как «крон» (средство автоматического произведения каких-либо операций), поисковый движок, так и удаленный сервис (например, офисная торговая система). В этом случае модуль не сможет работать самостоятельно; необходимо будет также настроить внешний сервис. Инструкции по его настройке будут приложены к модулю. Обычно после установки модуля его нужно настроить. Необходимые настройки доступны для редактирования в разделе «модули» системы администрирования. Значения настроек приводятся в документации к нему. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 57 Установка модулей может происходить одним из двух способов: через веб-интерфейс и в терминальном режиме. Доступность этих способов зависит от настроек сервера, на котором размещается система. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 58 Предпроектная подготовка Система NetCat позволяет оптимизировать и упростить процесс создания сайта и управления им в дальнейшем, однако, перед началом создания сайта необходимо подготовить материалы для будущего сайта. Ниже приведен примерный список материалов, которые рекомендуются подготовить до начала настройки NetCat: 1. Техническое задание (ТЗ) 2. Макеты дизайна всех типов страниц 3. Содержимое сайта (текстовая, графическая и прочая информация) ТЗ должно описывать будущий сайт в общем и следующие сущности в рамках сайта в частности: 1. Структура сайта (рекомендуется в иерархическом виде, т.е. в виде дерева) 2. Описание шаблонов данных и модулей: структура данных (список всех полей шаблона), описание внешнего вида страниц каждого шаблона (желательно не только в повествовательном, но и в схематическом виде) 3. Описание системы навигации по сайту (основных и дополнительных средств навигации) 4. Требования к дизайну сайта: рекомендуемая цветовая палитра, наличие/отсутствие большого объема графики, схематическое расположение различных блоков и пр. (если какие-либо страницы требуют нестандартного дизайна, они также должны быть описаны) 5. Описание титульной страницы (описание содержимого страницы, изменения в дизайне и пр.) 6. (опционально) Требования к разграничению прав Создавать макеты дизайна желательно в соответствие с ТЗ. В частности, при создании макетов дизайна следует учитывать: - структуру сайта (например, если количество разделов первого уровня велико и может «раздувать» страницу вширь); - шаблоны данных (перед созданием сложных шаблонов желательно иметь дизайнмакет страницы данного шаблона); - требования к навигации (если в них указаны виды элементов навигации и требования к их оформлению); - требования к дизайну. Содержимое сайта – контент – также должно быть составлено и структурировано в соответствие с ТЗ. Собственно, процесс создания и структурирования контента может происходить параллельно с внедрением системы NetCat, т.к. обычно процесс наполнения сайта является последним или предпоследним (перед тестированием) этапом создания сайта. На сайте netcat.ru в разделе «Разработчикам» приведен пример ТЗ, который можно взять за основу при проектировании сайта. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 59 Ввод и настройка структуры сайта Создание каталогов По умолчанию в системе присутствует один каталог, соответствующий сайту www.DOMAIN.ZONE и DOMAIN.ZONE (например, www.netcat.ru), а также несколько начальных разделов. Эти разделы введены для примера и могут быть удалены. Войдите в настройки каталога и измените их: - Название. Название сайта или компании (если это корпоративный сайт). Примеры: «Рога и копыта», «Сайт компании Рога и Копыта». - Ключевое слово. Название «поддомена» (обычно домен 3 уровня). Для главного каталога рекомендуется установить слово «www», для других – поддомен в основном домене, по которому будет располагаться информация в каталоге. Так, если каталогу должен соответствовать домен «info.roga.ru», то следует указать ключевое слово «info». Не забудьте, что для того, чтобы домен третьего уровня заработал, его (в большинстве случаев) нужно прописывать на сервере. Для ввода в поле допускаются строчные латинские буквы, цифры и знак «-». Если в ключевом слове есть символ «точка», система воспримет значение ключевого слова как самостоятельный домен. Таким образом можно создавать несколько сайтов на одной копии системы. - Приоритет. При использовании нескольких каталогов этот параметр определяет очередность вывода каталогов в списке (на карте сайта, в блоке навигации по страницам). Возможны только натуральные числа. - Зеркала. Список зеркал сайта по одному на каждой строчке. Например, если сайт roga.ru должен иметь алиас (синоним) rogaikopyta.ru, следует прописать в этом поле «rogaikopyta.ru» и «www.rogaikopyta.ru». Также в этом поле рекомендуется указывать альтернативный адрес сайта без слова «www» (если в Ключевом слове вы указали «www»). - Раздел титульной страницы. Здесь следует указать номер раздела, который будет выводиться при обращении к корневой странице каталога (например, к www.roga.ru). Предварительно раздел нужно создать и, при необходимости, выключить. - Раздел ошибки 404. Номер раздела, который будет выводиться системой при попадании на страницу, которой не существует (при ошибке 404 – «Страница не найдена»). Предварительно раздел должен быть создан и выключен. - Макет страниц. Выберите макет по умолчанию для страниц каталога. При стандартных задачах обычно для каталога указывается макет, предназначенный для отображения внутренних страниц, а для раздела, соответствующего титульной странице – собственный макет (если макет титульной страницы отличается от макета внутренних страниц). - 4 поля для настройки доступа на чтение, добавление, изменение собственных записей и подписку. Заполните эти поля в зависимости от задач. В стандартных задачах обычно доступ на чтение предоставляется всем, а остальные параметры – для уполномоченных пользователей. Каждое из этих свойств будет унаследовано всеми разделами сайта, если на какой-либо ветви дерева сайта его значение не будет переопределено. - Тип модерирования. Устанавливает тип модерирования по умолчанию, который будет применяться во всех разделах каталога, если на какой-либо ветви дерева сайта не будет переопределен. По умолчанию тип модерирования установлен как «Постмодерирование», т.е. немедленная публикация по факту добавления. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 60 - Включить. Это поле определяет, будет ли каталог показан в списке каталогов (если список предусмотрен макетом дизайна). Впоследствии в системную таблицу «Каталог» можно добавить другие поля. Их настройка происходит таким же образом. В большинстве случаев сайт должен содержать только один каталог. Вводить дополнительные каталоги имеет смысл, например, в следующих случаях: 1. Под управлением системы NetCat находится несколько сайтов На одной копии системы NetCat можно создать несколько относительно независимых друг от друга сайтов. В этом случае в настройках каждого нового каталога/сайта необходимо указывать полный домен (www.roga.ru) в поле «Ключевое слово». Однако, в этом случае шаблоны, классификаторы, модули и пр. будут общими для всех сайтов. 2. Сайт должен иметь некий глобальный раздел, предназначение которого существенно отличается от основного сайта Пример: сайт, имеющий внутренний раздел для сотрудников или клиентов компании; совмещение традиционного сайта с extranet-системой. В этом случае необходимо настроить права доступа к новому каталогу только для зарегистрированных или уполномоченных пользователей. 3. Сайт имеет сложную структуру, которую имеет смысл разделить на несколько глобальных частей Пример: по адресу www.roga.ru располагается сайт группы компаний, а по адресам вида manufact.roga.ru, sale.roga.ru – сайты компаний, входящих в группу. 4. На сайте должен быть каталог, выполняющий вспомогательные функции Пример: закрытый каталог, в котором в предварительном режиме выкладываются материалы, которые впоследствии должны быть выложены на основном сайте. Создание разделов После настройки каталога можно переходить к вводу всей структуры сайта. Начните добавлять разделы в каталог и подразделы в разделы. При добавлении раздела следует заполнить форму: - Название раздела. Обычно этому полю соответствуют заголовок страниц, соответствующих разделу, а также ссылка в карте сайта и блоках навигации. Однако можно использовать разные названия разделов в качестве заголовков страниц и пунктов меню. Для этого добавьте в системную таблицу «Раздел» новое поле (например, «Краткое название»), которое будет использоваться в настройках макета для вывода навигации по сайту. - Ключевое слово. Используется для адресации разделов: если на сайте есть раздел «О компании» с ключевым словом «about», в котором есть раздел «Новости» с ключевым словом «news», у этих разделов будут адреса соответственно www.roga.ru/about/ и www.roga.ru/about/news/. Каждый раз после изменения ключевого слова какого-либо раздела или каталога необходимо обновлять состояние базы. Допускаются латинские буквы, цифры, символ дефиса, подчеркивания. Для букв рекомендуется использовать только нижний регистр. - Приоритет. Определяет порядок вывода раздела в списке разделов (на карте сайта и в меню по сайту). Допускаются только натуральные числа. - Внешний URL. Используется для т.н. символических разделов, т.е. в тех случаях, когда ссылка в блоке навигации (карте сайта или меню) должна вести на другую, Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 61 - - - уже существующую страницу. Пример: переход на другой сайт (в этом случае нужно указать абсолютный адрес - http://www…) или на другую страницу этого сайта, например, на страницу какого-либо модуля (в этом случае лучше использовать относительный адрес, от корня). Другой пример: при переходе в раздел «Продукция» (ключевое слово «products») необходимо попадать в первый подраздел раздела (например, «Рога», ключевое слово «roga»). В этом случае нужно установить значение внешнего URL как «/products/roga/». Также в поле «Внешний URL» можно вписать выражение «mailto:[email protected]» - в этом случае при нажатии на ссылку на данный раздел будет открыта почтовая программа с новым письмом. Макет страниц. По умолчанию он не определен – это значит, что будет использован макет, который определен для элемента структуры верхнего уровня. Можно указать другой макет – в этом случае все страницы этого раздела и его дочерних разделов будут использовать указанный макет. 4 поля для настройки доступа на чтение, добавление, изменение собственных записей и подписку. Значения полей аналогичны соответствующим полям каталога. По умолчанию значения не определены – в этом случае они наследуются с верхнего уровня структуры. Тип модерирования. Значение аналогично соответствующему полю каталога. Если тип не определен, значение наследуется с верхнего уровня структуры. Включить. Определяет, будет ли раздел показан на карте сайта и в меню. В системную таблицу «Раздел» можно добавить другие поля. Их настройка происходит таким же образом. Для добавления подразделов в разделы воспользуйтесь соответствующей ссылкой в меню работы с разделом или ссылкой в виде плюса в полном рубрикаторе. Таким образом вводится вся структура сайта. Создание шаблонов в разделах Для каждого раздела (не считая символических) должен быть определен минимум один шаблон в разделе. В том случае, если шаблонов несколько, они могут выдаваться в виде закладок (оформленных любым образом – см. раздел «Макеты дизайна»). Предположим, что все необходимые шаблоны уже созданы (см. гл. «Шаблоны данных»). Добавить шаблон в раздел можно при помощи меню «Шаблоны в разделе» (на странице меню работы с разделом). Для добавления нового шаблона в раздел нажмите на ссылку «Добавить» и заполните форму: - Шаблон. Выберите нужный шаблон из списка. - Название шаблона в разделе. Название, которое будет выводиться в списке закладок (шаблонов в разделе) в том случае, если шаблонов в разделе будет несколько. - Приоритет. Определяет очередность вывода шаблонов в разделе в списке (если шаблонов в разделе несколько). - Ключевое слово. Используется для адресации страниц шаблона в разделе. Например, если в разделе «О компании > Новости» будет шаблон с ключевым словом «all», то URL страниц, содержащих полный текст новости, будут иметь вид www.roga.ru/about/news/all_12.html, где 12 – номер (ID) новости. Если же в разделе будет несколько шаблонов, то адрес шаблона в разделе будет иметь вид www.roga.ru/about/news/all.html. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 62 - - - - - 4 поля для настройки доступа на чтение, добавление, изменение собственных записей и подписку. Значения полей аналогичны соответствующим полям раздела. По умолчанию значения не определены – в этом случае они наследуются с верхнего уровня структуры. Тип модерирования. Значение аналогично соответствующему полю раздела. Если тип не определен, значение наследуется с верхнего уровня структуры. Включить. Определяет, будет ли шаблон отображаться. Сколько дней хранить записи. Определяет количество дней, в течение которых хранятся записи в данном шаблоне в разделе. Если поле пустое, оно наследуется из шаблона (см. ниже). Если значение установлено в ноль, записи хранятся вечно, вплоть до их ручного удаления. Разрешать теги. Поле определяет, будут ли разрешены теги при добавлении записей в раздел. Если теги запрещены, теги будут преобразованы следующим образом: например, <table> будет преобразовано в &lt;table&gt;. Если значение поля не определено, оно наследуется из шаблона. Число записей на странице. Устанавливает максимальное количество записей, которые могут быть показаны на странице. Если число записей превышает указанное, они переносятся на другую страницу (см. описание листинга в гл. «Шаблоны данных»). Если поле пустое, оно наследуется из шаблона. Сортировка сообщений по полю. Устанавливает порядок сортировки сообщений (см. гл. «Шаблоны данных»). Если поле пустое, оно наследуется из шаблона. Примеры реализации нестандартных задач В этом разделе приведены некоторые приемы управления структурой, которые можно реализовать при помощи системы NetCat. 1. Сетевая структура сайта Сетевой тип структуры сайта отличается от иерархической тем, что один элемент структуры (раздел) может иметь более одного родительского раздела. Например, подраздел «Зарядные устройства для мобильных телефонов» (ключевое слово «zaryad») в каталоге товаров («catalog») должен относиться к разделам «Мобильные телефоны» («mobile») и «Аксессуары» («other»). Для реализации этой задачи нужно создать раздел «Зарядные устройства для мобильных телефонов» в каком-то одном из разделов, например, в «Мобильных телефонах». При этом относительный адрес раздела будет иметь вид /catalog/mobile/zaryad/ и раздел «Зарядные…» будет выводиться в списке подразделов раздела «Мобильные…». После этого необходимо создать символический раздел «Зарядные…» в разделе «Аксессуары», например, с таким же ключевым словом, указав «/catalog/mobile/zaryad/» как внешний URL. В результате раздел «Зарядные…» также будет находится в разделе «Аксессуары», адрес раздела будет иметь вид /catalog/other/zaryad/, а содержать он будет ту же информацию, что и /catalog/mobile/zaryad/. Напоминание: не забывайте обновлять состояние базы данных при помощи соответствующей ссылки в системе администрирования после изменения ключевых слов или добавления разделов, даже символических. 2. Неоднотипный вывод пунктов меню одного уровня Пункты меню обычно выводятся по одному шаблону (точнее, обычно используется один шаблон для активного пункта меню – выделение цветом или шрифтом – и один для неактивных пунктов). Тем не менее, при помощи системы NetCat можно организовать Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 63 разнотипный вывод пунктов меню. Ниже приведено несколько примеров реализации таких задач. a. Выделение разных пунктов разными цветами Для реализации такого приема необходимо: i. добавить в системную таблицу «Раздел» новое поле, например, MenuColor, char(32), не обязательное, ненаследуемое; ii. установить значения этого поля для тех разделов, выделение которых другими цветами необходимо; iii. в макете установить цвет ссылок по умолчанию при помощи стандартных средств, например, таблицы стилей или атрибутов тега body; iv. в настройках макета установить форматы вывода активного и неактивного элементов навигации с использованием этого поля, например, так: $browse_sub[2][active] = "<a href=%URL><span color=%MenuColor>%NAME</span></a>". В этом случае для тех разделов, у которых указаны цвета, будет выведен тег <span color=red>, а для тех, у которых поле пусто, тег <span color=>, т.е. будет применен цвет по умолчанию. b. Некоторые пункты меню должны открываться в новом окне Реализуется аналогично предыдущему пункту: создается поле в таблице «Раздела» (например, Target) и в нужных разделах оно заполняется значением «_blank». В настройках макета формат вывода элементов навигации должен выглядеть примерно следующим образом: $browse_sub[2][active] = "<a href=%URL target=%Target>%NAME</a>". c. Каждому пункту может соответствовать свой значок («иконка») В таблицах «Раздел» и «Каталог» создается наследуемое поле (например, Icon) типа File, наследуемое. Для каждого раздела рисуется иконка и закачивается через стандартный интерфейс изменения настроек раздела. Целесообразно также закачать некоторую иконку по умолчанию через интерфейс изменения настроек каталога. Это следует сделать для тех случаев, когда раздел создан, а значка еще нет. Дальнейшие действия зависят от того, где именно применяется значок: в меню (например, рядом с каждой ссылкой на раздел первого уровня меню должен стоять значок) или в другом месте (т.е. на любой странице должен быть только один значок – соответствующий данному разделу). В первом случае изменяем настройки макета примерно так: $browse_sub[2][active] = "<a href=%URL><img src=%Icon width=10 height=10 alt=%NAME border=0>&nbsp; %NAME</a>". Во втором случае нужно включить в нужное место страницы (футера или хедера) выражение примерно следующего содержания: <img src=".$current_sub['Icon']." width=100 height=200> 3. Использование нескольких меню первого уровня Строго говоря, использовать несколько меню первого уровня нельзя, однако, такую ситуацию можно сымитировать. Пример: одно меню, располагающееся по вертикали, должно содержать оглавление каталога продукции, а второе, горизонтальное – оглавление «корпоративного» раздела – вакансии, контакты, история и пр. Для решения этой задачи необходимо: a. Ввести одну из этих двух веток структуры в отдельный раздел первого уровня (например, «Продукция»), а вторую (корпоративную) – в виде разделов первого уровня. Т.о. получится, что в списке разделов первого уровня кроме «Вакансий», «Истории» и пр. появится раздел «Продукция». Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 64 b. В макете страницы (обычно, в футере) указать как меню первого уровня (".s_browse_level(0, $browse_sub[0]).", где в массиве $browse_sub[0] хранятся настройки для вывода меню первого уровня), так и навигацию по разделу «Каталог» (".s_browse_sub(16, $browse_sub[2]).", где 16 – номер раздела «Продукция», а в массиве $browse_sub[2] хранятся настройки для вывода оглавления каталога товаров). c. Выключить раздел «Продукция», чтобы он не показывался в «корпоративном» меню. 4. Дублирование меню любого уровня (обычно первого) внизу страницы в другом оформлении Эта задача реализуется путем использования двух функции s_browse_level() два раза – в футере и хедере страницы: - В хедере: ".s_browse_level(0, $browse_sub[0]).", где в массиве $browse_sub[0] хранятся настройки вывода меню для хедера; - В футере: ".s_browse_level(0, $browse_sub[1])." , где в массиве $browse_sub[1] хранятся настройки вывода меню для футера. 5. Меню сайта в виде выпадающих списков (тег <select>) Для реализации данного вида меню нужно только соответствующим образом настроить вывод меню (например, первого уровня) в настройках макета: $browse_sub[prefix] = "<form action='' name=navigat method=get onsubmit='this.document.location.href=this.navigation.value; return false;'><select size=1 name=navigation>"; $browse_sub[suffix] = "</select><input type=submit value=Перейти></form>"; $browse_sub[active] = "<option value=%URL selected> %NAME</option>"; $browse_sub[unactive] = "<option value=%URL> %NAME</option>"; $browse_sub[divider] = ""; 6. Создание «мастеров», экскурсий и пр. (функционалов, требующих последовательного перехода по некоторым разделам) Для реализации мастера такого вида следует: - добавить в таблицу «Раздел» ненаследуемое поле (например, NextLink); - в нужном месте макета (хедера или футера) внести примерно следующее выражение: “.opt($current_sub['NextLink'], “<a href=$current_sub['NextLink']>Далее</a>”).” В приведенном примере ссылка «Далее» будет появляться только в тех разделах, в которых это поле заполнено. Другие советы и приемы по использованию NetCat вы можете увидеть на сайте netcat.ru в разделе «Советы и приемы». Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 65 Дизайн сайта Подготовка макетов страниц Каждый макет дизайна, который должен использоваться на сайте, предварительно должен быть создан в виде файла-макета в формате HTML. Изображения, используемые в оформлении страницы, желательно размещать в одном каталоге или системе каталогов, которая будет затем скопирована на сервер. В макете внутренних страниц желательно учесть детали, приведенные ниже. 1. Способ выделения активных разделов. Например, текущий раздел первого уровня должен выделяться цветом фона и текста, а текущий раздел второго уровня – отсутствием ссылки на нем. Макет должен содержать все возможные блоки навигации (1-2-3… уровня, «хлебные крошки и пр.) и в каждом блоке должны присутствовать как активные, так и неактивные элементы. 2. Внешний вид заголовка страницы (тег <title>). Заголовок страницы может иметь вид, например, «Название компании», «Название текущего раздела», «Компания / Раздел 1 / Раздел 11» и пр. 3. Если какой-либо элемент оформления или навигации присутствует не на всех страницах, необходимо создать макет таким образом, чтобы при его отсутствии страница не исказилась, либо, в случае невозможности этого, создать и использовать разные макеты для данных ситуаций. 4. Таблицу стилей желательно иметь в теле макета, а не во внешнем файле. Кроме того: - необходимо четко разграничить все три части страницы: хедер, содержательную часть и футер; - если для навигации используются графические изображения (названия разделов или иконки), должны быть нарисованы картинки для всех разделов; - если для оформления разных разделов используются разные стили или коллажи, они также должны быть созданы. Ниже приведен пример HTML-файла, готового к конвертации в формат NetCat на примере макета внутренней страницы текущего (по состоянию на осень 2002 года) netcat.ru. <html> <head> <title>NetCat 2.0 / Продукция / Модули</title> <meta name=description content='Система создания и администрирования сайтов NetCat. История создания системы, архитектура, экскурсия создания сайта на NetCat. Документация. Интернет-магазин: система, ASP-версия, модули, услуги, шаблоны. ЧаВо и форум по использованию. Информационные материалы. Предложения о сотрудничестве для провайдеров, веб-студий, корпоративных клиентов. Демо-доступ к движку, примеры сайтов на NetCat.'> <meta name=keywords content='движок создание сайтов администрирование сайтов система NetCat управление контентом через веб-интерфейс автопроектирование автоматизированная система создания и администрирования сайтов сайт редактирование шаблон система интернет дизайн веб-дизайн верстка редизайн компания'> <style type='text/css'> Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 66 <!-.nobg {background-image:none} TD,TH {font-size:x-small; font-family:Verdana,Helvetica,Arial;} .logo {color:#B0B0B0; font-size:x-small} .tittabl{color:#999999; font-family:Verdana;} A.tittabl:link,A.tittabl:visited {color:#999999; text-decoration:underline;} A.tittabl:hover,A.tittabl:active {color:#999999; text-decoration:underline;} .texttablnews {color:#000000; font-family:Verdana; font-size:xx-small;} .texttablforum {color:#7F7F7F; font-family:Verdana; font-size:xx-small;} .texttablforumlink {color:#005F95; font-family:Verdana;} A.texttablforumlink:link,A.texttablforumlink:visited {color:#005F95; text-decoration:underline;} A.texttablforumlink:hover {color:#005F95; text-decoration:underline;} A.texttablforumlink:active {color:#CC3300; text-decoration:underline;} .texttablsubmenu {color:#006699; text-decoration:underline;} A.texttablsubmenu:link,A.texttablsubmenu:visited {color:#006699; text-decoration:underline;} A.texttablsubmenu:hover {color:#006699; text-decoration:underline;} A.texttablsubmenu:active {color:#CC3300; text-decoration:underline;} .texttablsubmenu2 {color:black; text-decoration:underline;} A.texttablsubmenu2:link,A.texttablsubmenu2:visited {color:black; textdecoration:underline;} A.texttablsubmenu2:hover,A.texttablsubmenu2:active {color:black; textdecoration:underline;} .copyright {color:#CCCCCC; font-size:xx-small;} .hdrmenu {color:white; font-size:xx-small; font-family:Verdana;} .menu {color:black;} A.menu:link,A.menu:visited {color:black; text-decoration:none;} A.menu:hover,A.menu:active {color:black; text-decoration:none;} .submenu {color:#999999; font-size:xx-small;} A.submenu:link,A.submenu:visited {color:#999999; text-decoration:none;} A.submenu:hover,A.submenu:active {color:black; text-decoration:underline;} .submenu2 {color:#005F95; font-size:xx-small;} A.submenu2:link,A.submenu2:visited {color:#005F95; text-decoration:underline;} A.submenu2:hover {color:#005F95; text-decoration:underline;} A.submenu2:active {color:#CC3300; text-decoration:underline;} .texttitl {color:#CCCCCC; font-size:medium;} .action {font-family:Verdana;} A.action:link,A.action:visited {color:#005F95; text-decoration:underline;} A.action:hover {color:#005F95; text-decoration:underline;} A.action:active {color:#CC3300; text-decoration:underline;} .ya-checkbox,.ya-radio {font-size:xx-small;color:gray} .ya-hdr {color:gray} --> Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 67 </style> </head> <body bgcolor=#ffffff text=#000000 link=#005F95 alink=#CC3300 vlink=#005F95 topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0 marginheight=0 marginwidth=0> <table cellpadding=0 cellspacing=0 border=0 width=100%> <tr valign=top> <!-- LeftColumn.header:start --> <td width=30%><table cellpadding=0 cellspacing=0 border=0 width=100%><tr><td height=11 bgcolor=#005F95><img src=images/1x1.gif height=1 width=1 border=0 vspace=5 hspace=0></td></tr><tr><td height=20><img src=images/1x1.gif height=2 width=1 border=0 vspace=9 hspace=0></td></tr></table></td> <!-- LeftColumn.header:end --> <!-- RightColumn.header:start --> <td width=70% bgcolor=#005F95> <table cellpadding=0 cellspacing=0 border=0 width=100%> <tr> <td valign=bottom width=20 height=31><img src=images/ugl_bl_t.gif width=20 height=31 border=0></td> <td class=hdrmenu><nobr><a href=/how2buy/ class=hdrmenu><b>Как приобрести</b></a> | <a href=/feedback/ class=hdrmenu><b>Обратная связь</b></a></nobr></td> <td align=right class=hdrmenu nowrap><a href=/search/ class=hdrmenu><b>Поиск / Карта сайта</b></a></td> </tr> </table> </td> <!-- RightColumn.header:end --> </tr> <tr valign=top> <!-- LeftColumn.body:start --> <td align=center width=30%> <table cellpadding=0 cellspacing=0 border=0 width=189> <tr><td><a href='/'><img src=images/logo.gif width=175 height=30 alt=NetCat border=0></a></td></tr> <tr><td class=logo><br>система<br> управления сайтами</td></tr> </table> <table cellpadding=0 cellspacing=0 border=0><tr><td height=28><img src=images/1x1.gif height=2 width=1 border=0 vspace=13 hspace=0></td></tr></table> <!-- LeftColumn.body.tableSubmenu.start --> <table cellpadding=0 cellspacing=0 border=0 width=90%><tr valign=top><td width=1><img src=images/1x1.gif height=1 width=1 border=0 hspace=0 vspace=0></td><td width=18><img src=images/ugl_gr_lt.gif width=18 height=18 border=0></td><td width=99% valign=top><table cellpadding=0 cellspacing=0 border=0 width=100%><tr><td height=1 bgcolor=#DDDDDD><img src=images/1x1.gif height=1 width=1 border=0 hspace=0 vspace=0></td></tr></table></td><td width=18><img src=images/ugl_gr_rt.gif width=18 height=18 border=0></td><td width=1><img src=images/1x1.gif height=1 width=1 border=0 hspace=0 vspace=0></td></tr><tr><td width=1 bgcolor=#DDDDDD background=images/bg_tabl.gif><img src=images/1x1.gif height=1 width=1 border=0 Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 68 hspace=0 vspace=0></td><td width=18><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=8></td><td width=99% class=texttablsubmenu2> <table cellpadding=0 cellspacing=3 border=0><tr><td><a href=http://www.netcat.ru/products/netcat/ class=texttablsubmenu>Система NetCat</a><br></td></tr><tr><td><a href=http://www.netcat.ru/products/modules/ class=texttablsubmenu2>Модули</a><br></td></tr><tr><td><a href=http://www.netcat.ru/products/facility/ class=texttablsubmenu>Услуги</a><br></td></tr><tr><td><a href=http://www.netcat.ru/products/template/ class=texttablsubmenu>Шаблоны</a><br></td></tr></table></td><td width=18><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=8></td><td width=1 bgcolor=#DDDDDD background=images/bg_tabl.gif><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td></tr><tr><td width=1><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td><td width=18><img src=images/ugl_gr_lb.gif width=18 height=18 border=0></td><td width=99% valign=bottom><table cellpadding=0 cellspacing=0 border=0 width=100%><tr><td height=1 bgcolor=#DDDDDD><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td></tr></table></td><td width=18><img src=images/ugl_gr_rb.gif width=18 height=18 border=0></td><td width=1><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td></tr></table> <!-- LeftColumn.body.tableSubmenu.end --> <br><br> </td> <!-- LeftColumn.body:end --> <!-- RightColumn.body:start --> <td width=70% rowspan=2> <!-- RightColumn.body.menu:start --> <table cellpadding=0 cellspacing=0 border=0><tr><td height=1><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td></tr></table> <table cellpadding=0 cellspacing=0 border=0 width=100%><tr valign=top><td width=20><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=9></td><td width=1 bgcolor=#EEEEEE><img src=images/1x1.gif height=1 width=1 border=0 vspace=13 hspace=0></td><td width=7 bgcolor=#EEEEEE><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=3></td><td width=25% bgcolor=#EEEEEE class=menu valign=middle><nobr><a href=http://www.netcat.ru/about/ class=menu><img align=absbottom src=icons/icon1.gif width=15 height=15 alt=О системе border=0> О системе</a> </nobr></td><td width=1><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td><td width=1 bgcolor=#EEEEEE><img src=images/1x1.gif height=1 width=1 border=0 vspace=13 hspace=0></td><td width=7 bgcolor=#EEEEEE><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=3></td><td width=25% bgcolor=#EEEEEE class=menu valign=middle><nobr><a href=http://www.netcat.ru/products/ class=menu><img align=absbottom src=icons/icon2.gif width=15 height=15 alt=Продукция border=0> Продукция</a> </nobr></td><td width=1><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td><td width=1 bgcolor=#EEEEEE><img src=images/1x1.gif height=1 width=1 border=0 vspace=13 hspace=0></td><td width=7 bgcolor=#EEEEEE><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=3></td><td width=25% bgcolor=#EEEEEE class=menu valign=middle><nobr><a href=http://www.netcat.ru/demo/ class=menu><img align=absbottom src=icons/icon3.gif width=15 height=15 alt=Демо-центр border=0> Демо-центр</a> </nobr></td><td width=1><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td><td Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 69 width=1 bgcolor=#EEEEEE><img src=images/1x1.gif height=1 width=1 border=0 vspace=13 hspace=0></td><td width=7 bgcolor=#EEEEEE><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=3></td><td width=25% bgcolor=#EEEEEE class=menu valign=middle><nobr><a href=http://www.netcat.ru/support/ class=menu><img align=absbottom src=icons/icon4.gif width=15 height=15 alt=Поддержка border=0> Поддержка</a> </nobr></td></tr></table> <table cellpadding=0 cellspacing=0 border=0> <tr valign=top> <td width=20><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=9></td> <td width=1 bgcolor=#EEEEEE background=images/bg_tabl2.gif><img src=images/1x1.gif height=1 width=1 border=0 vspace=13 hspace=0></td> <td width=7><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=3></td> <td class=submenu2><br><b><a href=http://www.netcat.ru class=submenu2>NetCat 2.0</a> / <a href=http://www.netcat.ru/products/ class=submenu2>Продукция</a> / <a href=http://www.netcat.ru/products/modules/ class=submenu2>Модули</a> </b><br><br></td> </tr> </table> <!-- RightColumn.body.menu:end --> <table cellpadding=0 cellspacing=0 border=0><tr><td height=10><img src=images/1x1.gif height=2 width=1 border=0 vspace=4 hspace=0></td></tr></table> <!-- RightColumn.body.slogan:start --> <table cellpadding=0 cellspacing=0 border=0><tr><td width=20><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=9></td><td class=texttitl><b>Модули</b></td></tr></table> <!-- RightColumn.body.slogan:end --> <table cellpadding=0 cellspacing=0 border=0><tr><td height=10><img src=images/1x1.gif height=2 width=1 border=0 vspace=4 hspace=0></td></tr></table> <!-- RightColumn.body.content:start --> <table cellpadding=0 cellspacing=0 border=0 width=100%> <tr> <td width=14><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=6></td><td width=17 bgcolor=#E6E6E6><img src=images/ugl_gr2_lt.gif width=17 height=17 border=0></td><td width=100% bgcolor=#E6E6E6><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td><td width=17 bgcolor=#E6E6E6><img src=images/ugl_gr2_rt.gif width=17 height=17 border=0></td><td width=10><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=4></td> </tr> <tr> <td width=14><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=6></td> <td bgcolor=#E6E6E6><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td> <td bgcolor=#E6E6E6><center><font color=gray size=-2>Интерактив | <a href=http://www.netcat.ru/products/modules/management.html><font color=gray>Управление</font></a> | <a href=http://www.netcat.ru/products/modules/ecommerce.html><font color=gray>Электронная коммерция</font></a></font></center><br> Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 70 <!--main part begins--> Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст Текст <!--main part ends--> </td> <td bgcolor=#E6E6E6><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td> <td width=10><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=4></td> </tr> <tr><td width=14><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=6></td><td width=17 bgcolor=#E6E6E6><img src=images/ugl_gr2_lb.gif width=17 height=17 border=0></td><td width=100% bgcolor=#E6E6E6><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td><td width=17 bgcolor=#E6E6E6><img src=images/ugl_gr2_rb.gif width=17 height=17 border=0></td><td width=10><img src=images/1x1.gif height=1 width=2 border=0 vspace=0 hspace=4></td></tr> </table> <!-- RightColumn.body.content:end --> <br> </td> <!-- RightColumn.body:end --> </tr> <tr valign=bottom align=center><td height=100%> <a href=/><img src='images/counter.gif' border=0 width='88' height='31'></a> </td></tr> <tr valign=top> <!-- LeftColumn.footer:start --> <td width=30% bgcolor=#006699><img src=images/1x1.gif height=1 width=1 border=0 vspace=13 hspace=0></td> <!-- LeftColumn.footer:end --> <!-- RightColumn.footer:start --> <td width=70%> <table cellpadding=0 cellspacing=0 border=0 width=100%> <tr> <td width=13 height=27 rowspan=2 bgcolor=#006699><img src=images/1x1.gif height=1 width=1 border=0 vspace=0 hspace=6></td> <td valign=bottom rowspan=2 width=20><img src=images/ugl_bl_b.gif width=20 height=27 border=0></td> <td width=100% class=copyright>Copyright © 1999-2002 <a href=http://www.aist.ru class=copyright>АИСТ</a><img align=middle src=images/1x1.gif height=2 width=1 border=0 vspace=10 hspace=0></td> </tr> <tr> <td height=5 bgcolor=#006699><img src=images/1x1.gif height=1 width=1 border=0 vspace=2 hspace=0></td> </tr> </table> </td> <!-- RightColumn.footer:end --> Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 71 </tr> </table> </body> </html> В следующем разделе Руководства приводятся заполненные поля макета на примере этой же страницы. Конвертация и ввод макетов страниц Итак, макет создан. Следующий шаг – конвертация его в формат NetCat. Первый шаг – копирование всех необходимых файлов (картинок, flash-роликов, внешних подключаемых файлов и пр.) на сервер. Обычно их копируют при помощи FTP-клиента в каталог /i/images/ (имя этого каталога хранится в системной переменной $HTTP_IMAGES_PATH). В исходном файле в процессе конвертации следует заменить адреса картинок на новые. Рекомендуется использовать относительные ссылки – /i/images/logo.gif вместо http://www.sitename.ru/i/images/logo.gif – особенно если сайт разрабатывается по временному адресу. Следующий шаг – разбиение макета на две части – хедер и футер. В примере, приведенном в предыдущем пункте, «разрыв» обозначен несколькими словами «Текст». В обеих частях макета необходимо заменить динамические элементы на специальные выражения. В приведенном примере их 7: Содержимое тега <title> – выводятся «хлебные крошки» без тегов; Блок вспомогательной навигации – «Как приобрести» и «Обратная связь»; Навигация первого уровня – «О системе», «Продукция»…; Навигация «хлебные крошки»; Заголовок страницы – «Модули»; Список шаблонов в разделе – «Интерактив», «Управление»… (элемент может отсутствовать; 7. Навигация второго уровня – «Система NetCat», «Модули»… (элемент может отсутствовать). 1. 2. 3. 4. 5. 6. Разберем подробно каждый пункт. Прежде всего, следует учитывать, что для системы NetCat содержимое хедера и футера является обычным строковым выражением, которое нужно отобразить, выполнив прежде функцию PHP eval(). Т.е. хедер следует воспринимать в контексте следующего оператора: eval(“echo $header;”). Это значит, что для хедера (и футера) действуют все правила представления переменных, а именно: - - - при вызове функций необходимо закрывать кавычку, сцеплять строку с функцией при помощи точки, сцеплять функцию со следующей строкой, открывать кавычку, т.е. таким образом: «…text before”.func($parameters).”text after…»; символы обратного слеша «\» и кавычки «”» нужно маскировать при помощи обратного слеша, т.е. для отображения символа «\» нужно писать «\\», а для отображения кавычки – «\”»; переменные сцеплять со строкой необязательно: «…some text $f_navigation_path some another text»; Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 72 - можно использовать все специальные символы – «\n» (перенос строки), «\t» (табуляция) и пр.; также доступны функции PHP и специальные функции NetCat (полный перечень см. в Приложении 2). Итак, заменяем динамические элементы на необходимые переменные и функции. 1. Содержимое тега <title> В нашем примере в заголовке окна броузера выводится путь до текущей страницы. Путь (с тегами) хранится в переменной $f_browse_path, для вывода его без тегов следует вызвать функции замены ненужных пробелов на пустые строки и очищения текста от тегов: <title>".str_replace(" ","",strip_tags($f_browse_path))."</title> 2. Блок вспомогательной навигации – «Как приобрести» и «Обратная связь» Зная адреса этих разделов, мы можем «жестко» прописать их прямо в теле хедера: <nobr><a href=/how2buy/ class=hdrmenu><b>Как приобрести</b></a> | <a href=/feedback/ class=hdrmenu><b>Обратная связь</b></a></nobr> Однако, в случае изменения их названий или состава (например, добавления новой ссылки) придется изменять их в коде макета. Поэтому целесообразнее создать некий выключенный раздел, в который добавить два подраздела с соответствующими названиями. После этого в макете нужно заменить приведенную выше часть кода на вызов функции, отображающий список подразделов: …".s_browse_sub(220,$browse_global)."… В приведенной функции первый параметр (220) означает номер родительского раздела, а в массиве $browse_global хранятся настройки внешнего вида элемента навигации (вносится в поле «Настройки макета»): $browse_global[prefix] = "<nobr> "; $browse_global[suffix] = " </nobr>"; $browse_global[active] = "<a href=%URL class=hdrmenu><b>%NAME</b></a>"; $browse_global[unactive] = $browse_global[active]; $browse_global[divider] = " | "; Таким образом, в месте вызова функции будет показан список подразделов 220-го раздела, перед которым будет стоять тег <nobr>, а каждый элемент будет выводиться в формате «<a href=ССЫЛКА class=hdrmenu><b>НАЗВАНИЕ_РАЗДЕЛА</b></a>»; после списка будет выведен тег </nobr>, а разделять пункты навигации будут пробел, вертикальная черта, пробел. 3. Навигация первого уровня – «О системе», «Продукция»…; Вывод навигации любого уровня осуществляет функция s_browse_level(N, $array), где N – номер уровня (обратите внимание – первому уровню навигации соответствует «ноль», второму – 1 и т.д.), а в массиве $array хранятся настройки внешнего вывода блока навигации. В нашем случае список элементов навигации должен быть обрамлен таблицей, а каждый элемент должен выводиться в ячейке в виде «<a href=ССЫЛКА><img src=КАРТИНКА…> НАЗВАНИЕ_РАЗДЕЛА</a>». Чтобы каждому разделу соответствовала картинка, добавим поле Icon в системную таблицу «Раздел» (типа Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 73 File); закачаем подготовленные иконки на сайт через форму редактирования настроек разделов (только для включенных разделов первого уровня). Заменим в макете таблицу навигации на выражение: …”.s_browse_level(0,$browse_sub[0]).”… После этого заполним массив $browse_sub[0]: $browse_sub[0][prefix] = "<table cellpadding=0 cellspacing=0 border=0 width=100%><tr valign=top><td width=20><img src=".$HTTP_IMAGES_PATH."1x1.gif height=1 width=2 border=0 vspace=0 hspace=9></td>"; $browse_sub[0][suffix] = "</tr></table>"; $browse_sub[0][active] = "<td width=1 bgcolor=#EEEEEE><img src=".$HTTP_IMAGES_PATH."1x1.gif height=1 width=1 border=0 vspace=13 hspace=0></td><td width=7 bgcolor=#EEEEEE><img src=".$HTTP_IMAGES_PATH."1x1.gif height=1 width=1 border=0 vspace=0 hspace=3></td><td width=25% bgcolor=#EEEEEE class=menu valign=middle><nobr><a href=%URL class=menu><img align=absbottom src=%Icon width=15 height=15 alt=%NAME border=0> %NAME</a> </nobr></td>"; $browse_sub[0][unactive] = $browse_sub[0][active]; $browse_sub[0][divider] = "<td width=1><img src=".$HTTP_IMAGES_PATH."1x1.gif height=1 width=1 border=0 vspace=0 hspace=0></td>"; Основная масса HTML-кода предназначена для соответствующего оформления блока навигации, обратить внимание следует на фрагмент «<a href=%URL class=menu><img align=absbottom src=%Icon width=15 height=15 alt=%NAME border=0> %NAME</a>». В приведенном примере адрес поля Icon в текущем разделе 1 уровня хранится в выражении %Icon. 4. Навигация «хлебные крошки» Путь до текущей страницы хранится в переменной $f_browse_path, внешний вид которой настраивается в массиве $browse_path аналогично предыдущим примерам: $browse_path[active] = "%NAME"; $browse_path[unactive] = "<a href=%URL class=submenu2>%NAME</a>"; $browse_path[divider] = " / "; 5. Заголовок страницы – «Модули» В качестве заголовка страницы обычно используется название раздела, которое хранится в переменной $f_title. 6. Список шаблонов в разделе – «Интерактив», «Управление»… Список шаблонов выводится аналогично другим блокам навигации. Его выводит функция s_browse_cc(). Однако, тот факт, что он необязателен, заставляет настроить его таким образом, чтобы его отсутствие не влияло на внешний вид страницы. В нашем случае эта деталь – перенос строки, который должен быть после списка шаблонов, если он есть, и который должен отсутствовать в противном случае. Для этого тег <br> следует перенести в суффикс блока: $browse_cc[prefix] = "<center><font color=gray size=-2>"; $browse_cc[suffix] = "</font></center><br>"; $browse_cc[active] = "%NAME"; Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 74 $browse_cc[unactive] = "<a href=%URL><font color=gray>%NAME</font></a>"; $browse_cc[divider] = " | "; 7. Навигация второго уровня – «Система NetCat», «Модули»… (элемент может отсутствовать) Внешний вид настраивается аналогично блоку навигации первого уровня, только в качестве первого параметра функции s_browse_level() указывается единица, а в качестве второго – другой массив. Другие функции и переменные, доступные для использования в макетах, см. в Приложении 2. Обратите внимание: если в макете необходимо наличие тега </TEXTAREA>, вместо него нужно указать переменную $TEXTAREA_CLOSE. После добавления макета выберите его в настройках каталога (или нужных разделов). Номер макета также можно напрямую подавать на скрипт как параметр. Это целесообразно, когда макет нужно тестировать на рабочем сайте. Например, если есть задача протестировать внешний вид страницы www.site.ru/about/ с новым макетом (например, номер 3), сделав процесс тестирования незаметным для посетителей сайта, нужно вызывать страницу таким образом: www.site.ru/about/?template=3. Аналогично решается задача создания версии для печати: 1. Создается (и тестируется) новый облегченный макет, предназначенный для распечатки; 2. В тексте макета (если ссылка «версия для печати» нужна на всех страницах, использующих макет) или шаблона (если ссылка нужна только на страницах некоторых шаблонов) ввести примерно следующий текст: <a href=$h_uri?template=3>версия для печати</a> Использование дополнительных полей Дополнительные поля можно использовать как для удобства будущей правки макета, так и для сокращения трудозатрат при использовании нескольких макетов, незначительно отличающихся друг от друга. Что касается первого случая, то в нашем примере удобно некоторые части кода вынести в отдельные поля: ключевые слова, описание страницы, CSS-таблицу. Для вынесения в отдельное поле, например, таблицы стилей добавим новое поле CSS в системную таблицу «Макеты страниц». Поле должно быть типа Text. Перенесем в него содержимое CSSтаблицы, а в хедер внесем название поля со знаком процента: <style type='text/css'> <!-%CSS --> </style> Использовать дополнительные поля для сокращения трудозатрат при нескольких макетах можно при помощи механизма наследования. Например, на сайте нужно использовать два макета, отличающиеся каким-либо фрагментом. Для реализации этой задачи нужно: 1. Добавить в таблицу «Макеты страниц» поле, например, SomeField (тип Text); Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 75 2. Создать первый макет; 3. Перенести HTML-код варьируемой области в это поле, заменив его в хедере/футере выражением %SomeField; 4. Добавить новый макет, дочерний по отношению к основному (для этого нужно нажать на значок «плюс» рядом с названием родительского макета); 5. Заполнить в новом макете только поле SomeField, указав в нем тот фрагмент кода, который нужно выводить на страницах данного макета; 6. Указать макеты в настройках тех разделов, где они нужны. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 76 Шаблоны данных Настройка шаблона и его полей используется для определения структуры данных данного шаблона, внешнего вывода страниц используемых этот шаблон, внешнего вида форм добавления и редактирования записей данного шаблона, определения действий после добавления, изменения и пр. записей данного шаблона. Если к какому-либо разделу прикреплен некоторый шаблон, например, с 5 полями, то: - при добавлении или изменении записей в разделе будет показана форма, состоящая из этих 5 полей (за исключением полей типа «File» - это поле будет представлено на следующей странице добавления/изменения), а также системные поля: дата, время и поле, определяющее номер записи, после которой необходимо отображать данную запись. Стандартную форму добавления/изменения можно переопределить в соответствующем шаблоне действий для данного шаблона данных; - страницы данного раздела будут показаны в том формате, который определяется данным шаблоном: сначала будет отображен префикс, потом список записей в формате, определенном в макете вывода записи, затем суффикс; - если в макете вывода записи предусмотрена ссылка на страницу полного вывода записи (выражение вида <a href=$fullLink>подробнее</a>), по этой ссылке для каждой записи будет показана страница с данной записью в формате, определенном в макете полного вывода записи; - после добавления записи будет появляться в разделе сразу (если установлен режим постмодерирования) или после включения их (если установлен режим премодерирования); - если количество записей в шаблоне в разделе превышает число записей на странице для этого шаблона, записи будут отображаться порциями; для листинга по страницам используются переменные $nextLink и $prevLink; - если не определен порядок сортировки записей, по умолчанию записи сортируются по внутреннему параметру «приоритет» (он управляется при помощи системного поля «показать после записи номер» на странице редактирования записи), дате добавления (последние добавленные записи показываются первыми). Создание и редактирование полей Структура данных – набор полей для шаблона – редактируется на странице списка полей в шаблоне. Каждое поле имеет следующие характеристики: - Название. Название поля в таблице MySQL и внутри системы. Допускаются латинские буквы, цифры, символ подчеркивания. Пример: «BookAuthor». Описание. Комментарий к полю. Пример: «Автор книги». Тип данных. Определяет тип поля. Возможные варианты: o Char – символьное поле; o Int – целое число; o Text – мемо-поле (для ввода будет использован элемент формы <textarea>); o List – список значений (для ввода будет использован выпадающий список <select>); возвращает значение указанной записи классификатора; o Logical – логическое поле (да/нет); при выводе записи возвращает 1 (да) или 0 (нет); o File – поле типа «файл» (для ввода будет использован элемент формы <input type=file>; возвращает URL файла; o Float – число с плавающей запятой. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 77 - - - - - Формат. Используется по-разному для полей разных типов: o Char – можно не использовать поле «Формат». Если в поле «Формат» указаны значения «url» или «email», при добавлении/изменении значения в поле будет проверяться его соответствие формату URL и электронной почты соответственно; o Int, Float, Logical – формат не используется; o Text – в поле «Формат» необходимо указать высоту и ширину элемента <textarea>, который будет использоваться для добавления/изменения поля записи через двоеточие (например, «8:40»); o List – в поле «Формат» необходимо указать латинское название классификатора, содержимое которого будет использоваться при выводе списка возможных значений; o File – в поле должен быть указан максимальный размер файла в байтах. Ширина. Используется для типа поля Char и определяет ширину поля. Максимальное значение поля – 255. Не пустое. Устанавливает обязательность заполнения данного поля. Если поле не может быть пустым, запись данного шаблона не будет добавлена/изменена в случае, если поле не заполнено. Индексировать. Рекомендуется использовать это поле в паре со следующим. Индексирование поля целесообразно в том случае, если по этому полю будет проводиться поиск/выборка – в этом случае индексирование ускоряет работу базы данных. Искать по этому полю. Определяет, будет ли это поле участвовать в качестве аргумента для выборки по записям этого шаблона. Подробнее о поиске и выборке см. ниже. Приоритет. Определяет очередность вывода полей в формах добавления/изменения (если не определены шаблоны добавления и изменения). Значение по умолчанию. Поле зарезервировано и будет использовано в последующих версиях системы. Создание и редактирование шаблонов вывода Создание шаблона подразумевает создание новой таблицы в базе данных. Структура таблицы определяется набором полей для данной таблицы. Для добавления шаблона данных (или его редактирования) необходимо заполнить соответствующую таблицу. - - - - Название. Внутреннее название шаблона. Тип модерирования. Параметр определяет, будут ли записи данного шаблона публиковаться сразу после добавления (постмодерирование) или после проверки уполномоченным пользователем (премодерирование). Сколько дней хранить записи. Количество дней после добавления записи, после которого она будет удалена. Функции автоудаления требуют возможности использования крона на сервере. Если записи не должны удаляться автоматически, оставьте поле пустым или установите его в ноль. Разрешать теги. Устанавливает возможность или невозможность использования тегов в записях данного шаблона. Шаблон заголовка. Устанавливает шаблон вывода последнего пункта в блоке навигации «хлебные крошки» для страницы полного вывода записи. Можно использовать теги, а также поля шаблона в виде $f_НАЗВАНИЕПОЛЯ. Префикс формы. Содержит макет вывода префикса списка записей данного шаблона. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 78 - - Суффикс формы. Содержит макет вывода суффикс списка записей данного шаблона. Макет вывода записи. Содержит макет вывода записей данного шаблона. Макет полного вывода. Содержит макет полного вывода записей данного шаблона. Число записей на странице. Максимальное количество записей на одной странице. Сортировка записей по полю. Поле или поля, по которым производится сортировка записей на странице данного шаблона. Например, если нужно сортировать записи по полю Birthday (по убыванию) и LastName (по возрастанию), в поле ввода следует указать «Birthday desc, LastName». Дополнительные настройки. Поле используется для тех шаблонов, которые поставляются в составе модулей. Описание. Произвольное поле, обычно используется для описания шаблона. Четыре макета (префикс, суффикс, макет вывода записи в списке и полного вывода) представляют собой HTML-текст со вставками функций PHP, системных функций NetCat и специальных переменных. Также, как и содержимое макетов дизайна, эти макеты выполняются при помощи функции eval(): eval(“echo $template;”). Поэтому к ним применимы все те же правила, что и для макетов дизайна: маскировка кавычек и обратного слеша, сцепление строк при помощи точки и пр. В Приложении 2 приведен список функций и переменных, которые можно использовать в макетах шаблона. Обратите внимание: если в шаблоне необходимо наличие тега </TEXTAREA>, вместо него нужно указать переменную $TEXTAREA_CLOSE. Префикс и суффикс обычно используются в следующих случаях: 1. Если шаблон подразумевает какой-либо HTML-текст перед списочной частью (или после не), он указывается в макетах префикса и суффикса соответственно. Например, теги <table…> и </table> (а также, возможно, заголовочную часть страницы), если данные на страницах шаблона должны представляться в табличном виде. 2. Если макет содержит элементы навигации по шаблону в разделе (если подразумевается, что список будет многостраничным). Например, необходимо реализовать навигацию в следующем виде: Новости 11 - 20 из 35 пред. | 1 | 2 | 3 | след. Для реализации этого примера необходимо внести в суффикс (или префикс, что встречается реже) примерно следующий текст: Новости $begRow - $endRow из $totRow &nbsp; &nbsp; “.opt($prevLink, “<a href=$prevLink>пред.</a>”).” “.browse_messages($maxRows, $totRows, $curPos, $queryStr).” “.opt($nextLink, “<a href=$nextLink>след.</a>”) При этом настройки вывода блока навигации должны быть следующими: $browse_msg[prefix] = "| "; $browse_msg[suffix] = " |"; $browse_msg[active] = "<b>%PAGE</b>"; $browse_msg[unactive] = "<a href=%URL>%PAGE</a>"; $browse_msg[divider] = " | "; В этом примере ссылка «пред.» (или «след.») будут показаны только в том случае, если мы находимся не на первой (или последней) странице списка. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 79 Все записи в списке будут показаны в соответствие с макетом вывода записи. Он также представляет собой HTML-текст со вставками переменных и функций, полный список которых приводится в Приложении 2. Для каждой записи определен набор переменных, каждая из которых соответствует полю шаблона. Если Name – название поля в шаблоне, то для ее отображения в макете вывода записи нужно указывать переменную $f_Name, т.е. к названию поля прибавлять префикс «$f_». К любым переменным (в т.ч. и соответствующим полям шаблона) можно применять любые доступные функции, например, opt($var, $output) (вывод $output в том случае, если $var не пусто и не равно нулю), is_even($var) (проверка на четность), стандартные функции PHP. К примеру, необходимо вывести анкету сотрудника. Сущность «Сотрудник» состоит из полей: - ФИО (Name, Char, not null) - Год рождения (BornY, Int, not null) - Месяц рождения (BornM, Int, not null) - День рождения (BornD, Int, not null) - Фото (Photo, File) - Характеристика (Description, Text, not null) - Отдел (Depart, List) Сортировать записи нужно по фамилии сотрудника. Для этого в поле «Сортировать по полю» установим значение «Name». Вывод записей должен происходить в следующем виде: Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Фото Иванов Иван Иванович Родился 32.13.1999, отдел «Отдел маркетинга» Не пьет, не курит, не судим, женат, имеет трех детей и автомобиль ВАЗ. Данный пример может быть реализован примерно так. Префикс: <table width=100% border=0> Суффикс: </table> Макет вывода записи: <tr> <td valign=top><img width=100 height=80 alt=’$f_Name’ src=”.opt_case($f_Photo, $f_Photo, “/i/images/nophoto.gif”).”></td> <td valign=top><b>$f_Name</b><br> <i>Родился $f_BornD.$f_BornM.$f_BornY”.opt($f_Depart, “, отдел \”$f_Depart\””).”</i> <br><br>$_Description</td> </tr> В приведенном примере префикс открывает таблицу, суффикс ее закрывает, а каждая запись представляет собой строку из 2 ячеек. В первой ячейке показывается фотография сотрудника с альтернативным текстом, соответствующим имени сотрудника. Если Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 80 фотографии нет, показывается другая картинка (например, пустая или с надписью «Нет фото»). Во второй ячейке выводится имя сотрудника, дата рождения, затем отдел (если он есть) и потом характеристика. Обратите внимание: т.к. отдел является необязательным параметром, он проверяется на «непустоту». Эту проверку можно было бы не осуществлять, но в этом случае будет выведен некорректный текст: …32.13.1999, отдел «»… Поэтому весь текст, относящийся к необязательному параметру, нужно выводить только в том случае, если параметр не пустой. Если же в данном примере поле «Характеристика» было бы необязательным, код бы не изменился, т.к. отсутствие значения между «<br><br>» и «</td>» не повлияло бы на вид страницы. Для демонстрации следующего приема усложним задачу. Пусть сотрудники должны выводиться по 10 человек на странице. Для этого установим соответствующий атрибут шаблона в 10. Если оставить макеты шаблона такими же, будут выведены первые 10 сотрудников, а на следующие страницы попасть будет нельзя. Для исправления этого необходимо ввести в суффикс или префикс элементы навигации по списку записей. В NetCat поддерживается навигация по списку двух типов, которые могут совмещаться. В первом типе на каждой странице содержатся ссылки на следующую и предыдущую страницу. Для реализации этого типа навигации в суффикс должен быть введен примерно следующий код: <tr> <td><a href=$prevLink>назад</a></td><td align=right><a href=$nextLink>вперед</a></td> </tr> </table> Вместо надписей «назад» и «вперед» можно использовать и другие надписи, а также картинки (например, изображение стрелок). В приведенном примере на первой странице списка слово «назад» будет показано без ссылки, поэтому целесообразно проверять параметр $prevLink: …”.opt($prevLink, “<a href=$prevLink>назад</a>”).”… Аналогично следует поступить и с параметром $nextLink. Также можно использовать переменные $begRow, $endRow, $totRows, которые обозначают соответственно номер первой записи на странице, номер последней записи на странице и общее число записей на всех страницах. Второй способ навигации подразумевает вывод списка всех страниц. Для его реализации нужно в суффикс или префикс внести функцию: “.browse_messages($maxRows, $totRows, $curPos, $queryStr).” Внешний вид этого блока навигации должен быть настроен: $browse_msg[prefix] = "| "; $browse_msg[suffix] = " |"; $browse_msg[active] = "<b>%PAGE</b>"; $browse_msg[unactive] = "<a href=%URL>%PAGE</a>"; $browse_msg[divider] = " | "; Следующий прием одновременно показывает пример присваивания переменной значения и реализации такой частой задачи, как чередования формата вывода записей. Пусть Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 81 необходимо выводить по две записи в строке. Для реализации этого примера нам потребуется ввести некую переменную-счетчик, четность которой проверять. Ввести счетчик нужно в префиксе, добавив в него строчку: “.opt($f_Counter=0, “”).” В данном случае функция opt() ничего не выводит, только присваивает начальное значение переменной $f_Counter (название может быть другим). В макете же вывода записи нужно: - проверять четность счетчика и выводить в зависимости от этого код; - прибавлять единицу к счетчику. Для этого содержимое макета должно быть примерно таким: “.is_even($f_Counter, “<tr>”).” <td valign=top><img width=100 height=80 alt=’$f_Name’ src=”.opt_case($f_Photo, $f_Photo, “/i/images/nophoto.gif”).”></td> <td valign=top><b>$f_Name</b><br> <i>Родился $f_BornD.$f_BornM.$f_BornY.”opt($f_Depart, “, отдел \”$f_Depart\””).”</i> <br><br>$_Description</td> “.is_even(!$f_Counter, “</tr>”).” “.opt($f_counter++,””).” В первой строке в случае четности записи выводится тег <tr>, в предпоследней – в случае нечетности выводится тег </tr>, а в последней к параметру прибавляется единица. Примерно так же можно организовать, например, вывод строк с разным цветом фона через одну. Для демонстрации примера применения макета полного вывода еще усложним задачу. У каждого сотрудника должно быть еще и более полная характеристика (FullDescr, Text, not null), которая должна выводиться на отдельной странице, при нажатии на ссылку «подробнее». Для этого добавим в макет вывода записи ссылку «подробнее» (ее можно продублировать, например, на фотографии или имени сотрудника): …$f_Description <a href=$fullLink>подробнее</a></td>… Ссылка будет иметь вид /about/persons/person_117.html, где /about/persons/ - адрес текущего раздела, person – ключевое слово шаблона в разделе, а 117 – номер записи. Пока макет полного вывода пуст, страница, куда можно попасть после нажатия на ссылку, также будет пуста. Для ее заполнения внесем следующий текст в макет полного вывода: <table width=100% border=0> <tr> <td valign=top><img width=100 height=80 alt=’$f_Name’ src=”.opt_case($f_Photo, $f_Photo, “/i/images/nophoto.gif”).”></td> <td valign=top> <i>Родился $f_BornD.$f_BornM.$f_BornY.”opt($f_Depart, “, отдел \”$f_Depart\””).”</i> <br><br>$_FullDescr</td> </tr> </table> Чтобы вывести имя сотрудника в название страницы, укажем шаблон заголовка данного шаблона: Информация о сотруднике $f_Name В заключение стоит отметить, что в макет вывода записи необходимо добавить переменную $f_AdminButtons (в произвольном месте). В обычном режиме она пуста, а в режиме Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 82 администрирования содержит статусную информацию о записи и ссылки «изменить», «удалить» и (в режиме премодерирования) «включить/выключить». Поиск и выборка В системе шаблонов данных реализована встроенная система поиска и выборки. Поиск можно производить по любым полям. Так, по текстовым и строковым (а также файловым – т.к. в базе данных хранится URL файла) полям производится поиск подстроки (без морфологии), по числовым – по диапазону значений, по логическим – да/нет, по спискам (классификаторам) – по конкретному значению. Прежде всего, выборку можно осуществлять только по тем полям шаблона, у которых установлен атрибут «Искать по этому полю». Каждому из таких полей соответствует элемент (или два элемента) массива srchPat[], значения которого нужно подавать на скрипт, чтобы произвести выборку. Для того чтобы лучше понять принцип работы механизмов выборки, приведем примерный алгоритм осуществления поиска: 1. Выбираем все поля, у которых установлено свойство «Искать по этому полю»; 2. Сортируем их по возрастанию приоритета; 3. С каждым из них ассоциируем элемент массива srchPat[] по порядку, начиная с нуля; если тип поля – Int или Float, ассоциируем два элемента массива; 4. Проверяем каждый элемент массива srchPat[], поданный на скрипт; если элемент не пустой – осуществляем выборку. В следующей таблице приведен пример набора полей (только те поля, которые доступны для поиска) и соответствия им элементов srchPat[]. Приоритет 1 Поле / название поля Имя / Name Тип Char Элементы srchPat[] srchPat[0] 5 Возраст / Age Int srchPat[1], srchPat[2] 6 Отдел / Depart List srchPat[3] 18 Пол мужской? / IsMale Logical srchPat[4] Содержание параметров Подается искомая подстрока. Поиск по полю не производится, если параметр пуст. Подается начало (1) и конец (2) диапазона поиска. Если один из параметров пуст, соответствующей границы диапазона нет. Если оба пусты, поиск не производится. Подается номер записи классификатора. Если значение содержит ноль или пустое, поиск не производится. Подается единица («да») или ноль («нет»). Если значение пустое, поиск не производится. Несколько примеров запросов: 1. Поиск только сотрудников, в имени которых есть подстрока «Bill» …/staff/?srchPat[0]=Bill 2. Поиск только совершеннолетних сотрудников …/staff/?srchPat[1]=18 Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 83 3. Поиск сотрудников из некоторого отдела (которому соответствует, например, запись номер 4 в соответствующем классификаторе), которые не старше 60 лет …/staff/?srchPat[3]=4&srchPat[2]=60 4. Поиск мужчин в возрасте от 20 до 30 лет …/staff/?srchPat[1]=20&srchPat[2]=30&srchPat[4]=1 5. Поиск женщин по имени Jane из 4 отдела в возрасте от 30 до 35 лет …/staff/?srchPat[0]=Jane&srchPat[1]=30&srchPat[2]=35&srchPat[3]=4&srchPat[4]=0 Механизмы поиска можно применять как вручную (добавляя параметры в поле ввода строки URL), так и автоматически. Приведем несколько примеров: 1. На титульной странице сайта нужно показывать список всех клиентов, у которых есть веб-сайт: Предположим, что мы имеем шаблон данных «Клиенты», среди полей которого есть поле «Адрес сайта», и раздел со списком клиентов. Установим для этого поля возможность поиска и внесем в нужное место макета титульной страницы вызов функции s_list_class(): “.s_list_class(1,2,”&srchPat=http”).” В этом примере 1 – номер раздела, 2 – номер шаблона в разделе. Также можно варьировать внешний вид списка клиентов в зависимости от того, выводится он в своем разделе или на титульной странице (об этом см. в следующей главе). 2. В некотором разделе первая страница должна представлять собой форму поиска по записям; Самый простой способ реализовать этот функционал включает использования приема, когда шаблон вводит новую переменную для собственных нужд. Суть его заключается в том, что вывод списка записей осуществляется только при наличии некоторого параметра, который подается как hidden-поле в том случае, если он еще не установлен. Для реализации этого приема нужно: o в префиксе шаблона проверить, установлен ли параметр. Если да, то нужно вывести стандартный префикс для шаблона (или пустой префикс, если он не нужен). Если параметр не установлен, нужно вывести форму, в которой он будет передан как hidden-поле и action которой будет являться самой текущей страницей: “.opt_case(!$f_SomeParameter, “<form action=$h_uri><input type=hidden name=SomeParameter value=1>Введите имя: <input type=text name=srchPat[0] size=10><input type=submit value=’Искать’></form>”, “”).” o в макете вывода записи нужно произвести обратную проверку: если параметр подан, то выводить записи (будут показаны только те, которые соответствуют запросу), а если нет – выводить пустую строку: “.opt_case($f_SomeParameter, “Имя: $f_Name… $f_AdminButtons”, “”).” 3. Несколько подразделов раздела должны представлять собой выборку данных из родительского раздела: Подразумевается, что мы рассматриваем пример, приведенный в начале главы. К примеру, в разделе «Сотрудники» выводим список всех сотрудников, а каждый его подраздел соответствует отделу. Для этого создадим нужное количество разделов, Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 84 соответствующее количеству отделов с аналогичными разделами, и укажем внешний URL следующим образом: «/staff/?srchPat[3]=1» для отдела, который соответствует первой записи в классификаторе «Отделы», «/staff/?srchPat[3]=2» для второй и т.д. Использование условий и параметров В предыдущей главе приводился пример, когда шаблон сам создает условие и форматирует вывод записей в зависимости от этого условия. Шаблон может также реагировать на внешние условия или переменные. Например, на титульной странице нужно выводить 3 последних новости (записи из раздела «Новости» соответствующего шаблона) в сокращенном виде. Допустим, в шаблоне «Новости» два поля: анонс новости и полный ее текст, записи выводятся по 10 новостей на странице, а сам шаблон имеет следующие макеты: - Суффикс: <a href=$prevLink>назад</a> Новости $begRow-$endRow из $totRows <a href=$nextLink>вперед</a> - Макет вывода записи (первые три поля – стандартные свойства даты добавления новости): <b>$f_Day.$f_Month.$f_Year.</b> $f_Anons<br> $f_FullText $f_AdminButtons<br><br> Чтобы вывести 3 последних новости на титульную страницу, внесем в ее футер или хедер вызов следующей функции (пусть раздел «Новости» имеет номер 1, а номер шаблона в разделе – 2): “.s_list_class(1, 2, “&isTitle=1&recNum=3).” После этого на титульной странице будет выводиться три последних новости, но в полном виде и с листингом. Теперь нужно настроить шаблон под использование переменной $isTitle: - Суффикс: “.opt(!$isTitle, “<a href=$prevLink>назад</a> Новости $begRow-$endRow из $totRows <a href=$nextLink>вперед</a>”).” - Макет вывода записи: “.opt_case($isTitle, “<b>$f_Day.$f_Month.$f_Year.</b> $f_Anons<br><br>”, “<b>$f_Day.$f_Month.$f_Year.</b> $f_Anons<br>$f_FullText $f_AdminButtons<br><br>”).” Другой пример: записи должны разделяться чертой (тег <hr>). Можно выводить <hr> в конце каждой записи (в макете вывода записи), но в этом случае после последней записи также будет черта. Для решения этой задачи можно проверять в макете, не является ли эта запись последней на странице: …”.opt(!($f_RowNum==($recNum-1)), “<hr>”).” Шаблоны действий Для каждого шаблона данных предусмотрено 7 шаблонов действий: - Форма добавления Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 85 По умолчанию поля в форме добавления выводятся по очереди в порядке возрастания приоритета по одному полю на строку. Эту форму можно увидеть, нажав на ссылку «добавить» в режиме редактирования раздела. Внешний вид формы можно переопределить. Это применяется, в частности, в тех случаях, когда добавлять записи могут внешний пользователи: чтобы придать форме особенный вид или скрыть некоторые поля, чтобы пользователь не мог их добавить (например, если в шаблоне «вопросы и ответы» есть поля «вопрос» и «ответ», целесообразно в форме добавления оставить только вопрос). Для создания формы добавления возьмите HTML-текст стандартной формы и внесите в него нужные изменения. - Действие после добавления По умолчанию после добавления записи появляется сообщение об успешном добавлении записи. Содержание этой страницы (и действия, которые происходят после добавления) можно переопределить, например, для «вопросов-ответов» вывести сообщение о том, что в скором времени вопрос будет обработан. Также можно вызывать различные действия: операции с базой, отправку писем и пр. Все параметры, указанные в форме добавления, доступны в этой форме. - Форма изменения, Действие после изменения Назначение и функциональность этих форм аналогичны форме изменения и действию после добавления. Разница лишь в действиях – эти настройки относятся к изменению записи. - Форма поиска Стандартную форму поиска можно получить, введя один из адресов: …/i/search.php?sub=1&cc=2 (где 1 – номер раздела, а 2 – шаблона в разделе) или …/staff/search_people.html (где «/staff/» - путь до текущего раздела, а «people» – ключевое слово шаблона в разделе). По аналогии с формой добавления внешний вид этой страницы можно переопределять на основе представленной формы. - Форма расширенного поиска Эта форма используется, если на страницах данного шаблона вверху нужно выводить форму для фильтра (выборки) записей. Она создается по аналогии с формой поиска и выводится только в том случае, если определен параметр fullSearch (он может быть подан в командной строке или указан в настройках шаблона). - Текст письма для подписчиков Поле зарезервировано для использования в некоторых модулях. Если в вашей системе установлены эти модули, см. документацию к ним. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 86 Обновление системы Установка и настройка модулей Установка модулей производится при помощи веб-интерфейса. Закачайте файл при помощи формы установки в разделе системы администрирования «модули» и следуйте указаниям системы. Каждый модуль может иметь настройки, которые определяются в соответствующем поле информации о модуле. К каждому стандартному модулю прилагается инструкция по использованию и настройке, в соответствие с ней и нужно настраивать модуль. Установка обновлений системы Обновления системы (патчи) решают задачи исправления найденных недочетов в системе или обновления ее до новых версий. Новые патчи выкладываются на сайте netcat.ru по ходу их появления. Интерфейс обновления системы идентичен интерфейсу установки модулей. В случае неудачной установки патча вы получите соответствующее сообщение в броузере. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 87 Устранение проблем Если в процессе работы с системой у вас возникли сложности, которые вы не смогли разрешить при помощи данного Руководства или Руководства пользователя, возможно, вы найдете ответ на свой вопрос на сайте netcat.ru в разделе «Поддержка». Там же вы можете задать вопрос другим разработчикам или производителю системы. Также вы можете обратиться к разработчику системы напрямую по телефону горячей линии, указанному в вашем договоре. Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 88 Приложение 1. Схема базы данных В этом разделе представлена схема базы данных в упрощенном виде (без некоторых второстепенных таблиц) в виде «дампа» БД MySQL. Для каждой таблицы указывается ее название, описание назначения, а также таблицы, связанные с ней по типу связи «много:1» (например, таблица Button связана с таблицей Subdivision, т.е. для одного раздела (экземпляра сущности Subdivision) может быть определено несколько ссылок по теме (экземпляров сущности Button)). Для реализации связи «много:много» введены т.н. таблицы-связки. Так, таблица Sub_Class является связкой между таблицами Subdivision и Class. # # Table structure for table 'Button' # Таблица для хранения данных «ссылки по теме» каталога или раздела. # Связанные таблицы: Catalogue, Subdivision. # CREATE TABLE Button ( Button_ID int(11) NOT NULL auto_increment, Button_Name varchar(64) NOT NULL default '', Text text NOT NULL, Checked smallint(6) NOT NULL default '1', Catalogue_ID int(11) NOT NULL default '0', Subdivision_ID int(11) NOT NULL default '0', Priority int(11) NOT NULL default '0', PRIMARY KEY (Button_ID), KEY Catalogue_ID (Catalogue_ID), KEY Subdivision_ID (Subdivision_ID) ) TYPE=MyISAM; # # Table structure for table 'Cat_Class' # Таблица-связка между каталогом (Catalogue) и шаблоном (Class). Используется для # составления соответствия между шаблонами и каталогами (связь между ними # «много:много»). Структура таблицы расширяется при помощи интерфейса управления # системными таблицами. # Связанные таблицы: Catalogue, Class. # CREATE TABLE Cat_Class ( Cat_Class_ID int(11) NOT NULL auto_increment, Catalogue_ID int(11) NOT NULL default '0', Class_ID int(11) NOT NULL default '0', Class_Name char(32) NOT NULL default '', Priority int(11) NOT NULL default '0', Default_Excluded smallint(6) NOT NULL default '0', PRIMARY KEY (Cat_Class_ID), KEY Catalogue_ID (Catalogue_ID), KEY Class_ID (Class_ID) ) TYPE=MyISAM; Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 89 # # Table structure for table 'Catalogue' # Таблица для хранения настроек каталогов. Структура таблицы расширяется при помощи # интерфейса управления системными таблицами. # Связанные таблицы: Template, классификаторы. # CREATE TABLE Catalogue ( Catalogue_ID int(11) NOT NULL auto_increment, Catalogue_Name varchar(32) NOT NULL default '', Domain varchar(16) NOT NULL default '', Template_ID int(11) NOT NULL default '1', TypeOfSubscribe_ID int(11) NOT NULL default '1', Groups_ID int(11) NOT NULL default '0', Read_Access_ID int(11) NOT NULL default '0', Write_Access_ID int(11) NOT NULL default '0', Mirrors text NOT NULL, Priority int(11) default NULL, Checked smallint(6) NOT NULL default '0', Edit_Access_ID int(11) NOT NULL default '0', Subscribe_Access_ID int(11) NOT NULL default '0', Moderation_ID int(11) NOT NULL default '0', Title_Sub_ID int(11) NOT NULL default '0', PRIMARY KEY (Catalogue_ID), KEY TypeOfSubscribe_ID (TypeOfSubscribe_ID), KEY Groups_ID (Groups_ID), KEY Groups_ID_2 (Groups_ID) ) TYPE=MyISAM; # # Table structure for table 'Class' # Таблица для хранения экземпляров сущностей «Шаблон». # Поля шаблонов хранятся в таблице Field. # Связанные таблицы: Module, классификаторы. # CREATE TABLE Class ( Class_ID int(11) NOT NULL auto_increment, Class_Name varchar(32) NOT NULL default '', DaysToHold int(11) NOT NULL default '0', Moderation_ID int(11) NOT NULL default '1', AllowTags smallint(6) NOT NULL default '0', TypeOfClass_ID int(11) NOT NULL default '1', Class_Script varchar(255) default NULL, FormPrefix text, FormSuffix text, RecordTemplate text, RecordsPerPage int(11) NOT NULL default '20', SortBy varchar(255) NOT NULL default '', RecordTemplateFull text, Description text, Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 90 TitleTemplate varchar(255) default NULL, AddTemplate text NOT NULL, EditTemplate text NOT NULL, AddActionTemplate text NOT NULL, EditActionTemplate text NOT NULL, SearchTemplate text NOT NULL, FullSearchTemplate text NOT NULL, SubscribeTemplate text NOT NULL, System_Table_ID int(11) NOT NULL default '0', Module_Name varchar(64) default NULL, Settings text NOT NULL, PRIMARY KEY (Class_ID), KEY Moderation_ID (Moderation_ID), KEY TypeOfClass_ID (TypeOfClass_ID) ) TYPE=MyISAM; # # Table structure for table 'Classificator' # Таблица «Классификаторы». # CREATE TABLE Classificator ( Classificator_ID int(11) NOT NULL auto_increment, Classificator_Name char(32) NOT NULL default '', Table_Name char(32) NOT NULL default '', System smallint(6) NOT NULL default '0', PRIMARY KEY (Classificator_ID) ) TYPE=MyISAM; # # Table structure for table 'Field' # Таблица «Поля шаблонов». # Связанные таблицы: Class, классификаторы. # CREATE TABLE Field ( Field_ID int(11) NOT NULL auto_increment, Class_ID int(11) NOT NULL default '0', Field_Name char(16) NOT NULL default '', Description char(32) NOT NULL default '', TypeOfData_ID int(11) NOT NULL default '1', Format char(255) default NULL, Width int(11) default NULL, NotNull smallint(6) NOT NULL default '1', Priority int(11) NOT NULL default '0', Indexed smallint(6) NOT NULL default '1', DoSearch smallint(6) NOT NULL default '1', DefaultState char(255) default NULL, Inheritance smallint(6) NOT NULL default '0', System_Table_ID int(11) NOT NULL default '0', DoSubscribe smallint(6) NOT NULL default '1', PRIMARY KEY (Field_ID), Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 91 KEY Class_ID (Class_ID), KEY TypeOfData_ID (TypeOfData_ID) ) TYPE=MyISAM; # # Table structure for table 'Message' # Таблицы для хранения данных. Названия таблиц имеют формат MessageXX, где XX – # номер шаблона (Class), который соответствует таблице. # Структура таблиц расширяется при помощи интерфейса управления шаблонами. # Связанные таблицы: Cat_Class, Sub_Class, User, классификаторы. # CREATE TABLE Message1 ( Message_ID int(11) NOT NULL auto_increment, Subdivision_ID int(11) NOT NULL default '0', Cat_Class_ID int(11) NOT NULL default '0', Priority int(11) NOT NULL default '0', TimeToNull date default NULL, TimeOfAdd timestamp(14) NOT NULL, TimeToDelete date default NULL, StatusOfMessage_ID int(11) NOT NULL default '1', User_ID int(11) NOT NULL default '0', Sub_Class_ID int(11) NOT NULL default '0', IP varchar(15) default NULL, Parent_Message_ID int(11) NOT NULL default '0', PRIMARY KEY (Message_ID), KEY Subdivision_ID (Subdivision_ID), KEY User_ID (User_ID), KEY Sub_Class_ID (Sub_Class_ID), KEY Parent_Message_ID (Parent_Message_ID) ) TYPE=MyISAM; # # Table structure for table 'Permission' # Таблица «Экземпляр прав». В таблице хранятся # CREATE TABLE Permission ( Permission_ID int(11) NOT NULL auto_increment, User_ID int(11) NOT NULL default '0', AdminType int(11) NOT NULL default '0', Catalogue_ID int(11) NOT NULL default '0', PermissionSet tinyint(4) NOT NULL default '0', UserGroup_ID int(11) NOT NULL default '1', PRIMARY KEY (Permission_ID), KEY User_ID (User_ID), KEY AdminType (AdminType) ) TYPE=MyISAM; # # Table structure for table 'Sub_Class' # Таблица-связка между разделом (Subdivision) и шаблоном (Class). Используется для Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 92 # составления соответствия между шаблонами и разделами (связь между ними # «много:много»). Структура таблицы расширяется при помощи интерфейса управления # системными таблицами. # Связанные таблицы: Subdivision, Class. # CREATE TABLE Sub_Class ( Sub_Class_ID int(11) NOT NULL auto_increment, Subdivision_ID int(11) NOT NULL default '0', Class_ID int(11) NOT NULL default '0', Sub_Class_Name varchar(64) NOT NULL default '', Priority int(11) NOT NULL default '0', Parent_Sub_Class int(11) NOT NULL default '0', Read_Access_ID int(11) NOT NULL default '0', Write_Access_ID int(11) NOT NULL default '0', TypeOfSubscribe_ID int(11) default NULL, EnglishName varchar(64) default NULL, Checked smallint(6) NOT NULL default '0', Catalogue_ID int(11) NOT NULL default '0', Edit_Access_ID int(11) NOT NULL default '0', Subscribe_Access_ID int(11) NOT NULL default '0', Moderation_ID int(11) NOT NULL default '0', DaysToHold int(11) NOT NULL default '0', AllowTags smallint(6) NOT NULL default '0', RecordsPerPage int(11) NOT NULL default '20', SortBy varchar(255) NOT NULL default '', PRIMARY KEY (Sub_Class_ID), KEY Subdivision_ID (Subdivision_ID), KEY Class_ID (Class_ID) ) TYPE=MyISAM; # # Table structure for table 'Subdivision' # Таблица разделов. # Связанные таблицы: Catalogue, Template, классификаторы. # CREATE TABLE Subdivision ( Subdivision_ID int(11) NOT NULL auto_increment, Catalogue_ID int(11) NOT NULL default '0', Parent_Sub_ID int(11) NOT NULL default '0', Subdivision_Name varchar(255) NOT NULL default '', Template_ID int(11) default NULL, ExternalURL varchar(255) default NULL, TypeOfSubscribe_ID int(11) default NULL, EnglishName varchar(64) default NULL, LastUpdated datetime default NULL, Created timestamp(14) NOT NULL, Hidden_URL varchar(255) default NULL, Read_Access_ID int(11) NOT NULL default '0', Write_Access_ID int(11) NOT NULL default '0', Priority int(11) default NULL, Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 93 Checked smallint(6) NOT NULL default '0', Edit_Access_ID int(11) NOT NULL default '0', Subscribe_Access_ID int(11) NOT NULL default '0', Moderation_ID int(11) NOT NULL default '0', Description text, PRIMARY KEY (Subdivision_ID), KEY Catalogue_ID (Catalogue_ID), KEY Parent_Sub_ID (Parent_Sub_ID) ) TYPE=MyISAM; # # Table structure for table 'Template' # Макеты дизайна. Структура расширяется при помощи интерфейса управления # системными таблицами. # CREATE TABLE Template ( Template_ID int(11) NOT NULL auto_increment, Description varchar(64) NOT NULL default '', Comment text, Parent_Template_ID int(11) NOT NULL default '0', Settings text NOT NULL, Header text NOT NULL, Footer text NOT NULL, PRIMARY KEY (Template_ID) ) TYPE=MyISAM; # # Table structure for table 'User' # Пользователи. Структура расширяется при помощи интерфейса управления системными # таблицами. # CREATE TABLE User ( User_ID int(11) NOT NULL auto_increment, Password char(25) NOT NULL default '', UserGroup_ID int(11) NOT NULL default '1', Checked tinyint(4) NOT NULL default '0', PermissionGroup_ID int(11) NOT NULL default '0', PRIMARY KEY (User_ID), KEY UserType (UserType) ) TYPE=MyISAM; Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 94 Приложение 2. Список используемых функций и переменных Функции и переменные, используемые в шаблонах и макетах Функция is_even(int $param) Проверяет параметр на четность. Используется, например, для чередования цветов строк в таблицах: <td “.opt_case(is_even($some_counter), “bgcolor=white”, “bgcolor=silver”).”>Text</td> “.opt($some_counter++, “”).” Функции opt($flag, $string), opt_case($flag, $string1, $string2) Функция opt() выводит $string в случае, если $flag – истина. Функция opt_case() выводит $string1 в случае, если $flag истина, и $string2, если $flag ложь. <b>Имя:</b> “.opt_case($f_ManName, “$f_ManName”, “не указано”).”<br> Переменная $TEXTAREA_CLOSE Содержит значение «</textarea>». В полях ввода шаблонов и макетов нельзя использовать данный закрывающий тег, т.к. броузер воспримет его как закрытие текущего поля редактирования. Хэш-массивы $current_catalogue[], $current_sub[], $current_subclass[] Содержат значения свойств текущего каталога, раздела и шаблона в разделе соответственно. Индекс массива должен соответствовать запрашиваемому полю таблицы, например, $current_sub[“Subdivision_Name”]. Функция listQuery(char $sql_query, char $output_template) Выводит результат SQL-запроса $sql_query в формате $output_template. Последний параметр должен содержать вызов хэш-массива $data, индексы которого соответствуют полям таблицы (знак доллара и двойные кавычки необходимо маскировать). Следующий пример выводит в выпадающем списке список всех значений классификатора Money: <select name=MoneyList> ".listQuery("SELECT * FROM Money","<option value=\$data[Money_ID]> \$data[Money_Name]")." </select> Переменные $sub, $cc, $f_context_add Номер текущего раздела, номер текущего шаблона в каталоге, ссылка на форму добавления в текущий шаблон в разделе. Переменные $HTTP_HOST, $HTTP_IMAGES_PATH Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 95 Хост (домен) сайта вида «www.domain.ru» и путь до каталога картинок вида «/i/images/». Функции и переменные, используемые в шаблонах Функция browse_messages($maxRows, $totRows, $curPos, $queryStr) Отображает блок навигации по страницам списка записей в шаблоне в формате «1 2 3 >>». Список параметров функции должен быть только таким, как указан в примере, без подстановок конкретных значений. Для настройки формата отображения используется массив $browse_msg[], значения которого указываются в настройках макета. Макропеременная %PAGE обозначает номер страницы, макропеременная %URL – ссылку на соответствующие страницы. $browse_msg[prefix] = ""; // Префикс перед блоком навигации $browse_msg[suffix] = ""; // Суффикс после блока навигации $browse_msg[active] = "%PAGE"; // Формат вывода текущего $browse_msg[unactive] = "<a href=%URL>%PAGE</a>"; // Формат вывода ссылок $browse_msg[divider] = " "; // Разделитель между ссылками Переменные, содержащие свойства текущей записи (доступные в полях «Темплейт вывода записи» и «Темплейт полного вывода записи»): $f_Day, $f_Month, $f_Year, $f_Hours, $f_Minutes, $f_Seconds – реквизиты времени добавления записи $f_TimeOfAdd – реквизиты времени добавления записи в формате «ггггммддччммсс». $f_RowID – номер (ID) записи $f_RowUser – номер (ID) пользователя, добавившего запись $f_ИМЯПОЛЯ – значение поля шаблона «ИМЯПОЛЯ» в данной записи $f_AdminButtons – в режиме администрирования содержит блок статусной информации о записи и ссылки на действия для данной записи «изменить», «удалить», «включить/выключить» $fullLink - ссылка на макет полного вывода данной записи $fullDateLink - ссылка на макет полного вывода с указанием даты в виде «…/2002/02/02/message_2.html» Переменные, доступные во всех полях шаблона: $admin_mode – истина, если пользователь находится в режиме администрирования $h_uri – путь к текущему разделу вида «http://www.domain.ru/about/pr/» $h_cc_uri - путь к текущему шаблону в разделе вида «http://www.domain.ru /about/pr/news.html» $prevLink - ссылка на предыдущую страницу в листинге шаблона (если текущее положение в списке – его начало, то переменная пустая) $nextLink - ссылка на следующую страницу в листинге шаблона (если текущее положение в списке – его конец, то переменная пустая) $f_RowNum – номер записи по порядку в списке на текущей странице $isTitle – истина, если шаблон используется для вывода на титульную страницу Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 96 $recNum – максимальное количество записей, выводимых в списке $totRows – общее количество записей в списке $begRow – номер записи (по порядку), с которой начинается листинг списка на данной странице $endRow – номер записи (по порядку), которой заканчивается листинг списка на данной странице Функции и переменные, используемые в макетах Макропеременные вида %НАЗВАНИЕПОЛЯ В темплейтах вывода (Header/Footer) содержат значение поля таблицы Template «НАЗВАНИЕПОЛЯ». Так, если таблица «Макеты дизайна» (Template) содержит поле CSS_Table, ее можно вставить в темплейт примерно так: <style><!— %CSS_Table --></style> В настройках макета переменные содержат значение поля «НАЗВАНИЕПЕРЕМЕННОЙ» в таблицах Catalogue или Subdivision. Так, элемент навигации «Путь до текущей страницы» ($f_browse_path) может иметь такие настройки: $browse_path[active] = "%NAME"; $browse_path[unactive] = "<a href=%URL>%NAME</a>"; $browse_path[divider] = " / "; Макропеременная %URL обозначает ссылку на раздел/каталог/шаблон в разделе, который соответствует названию. Переменные навигации и хранения свойств раздела/страницы $f_title – заголовок текущей страницы $f_browse_path – элемент навигации «хлебные крошки» (путь до текущей страницы) $sub_level_count – текущий уровень вложенности навигации $cc_array[] – массив номеров шаблонов в текущем разделе отсортированных по приоритету. Нулевой элемент ($cc_array[0]) – невыключенный шаблон с наименьшим приоритетом. Функция s_list_class(int $sub, int $cc, char $params) Выводит содержимое шаблона в разделе $cc раздела $sub и параметрами $params в виде параметров, подающихся на скрипты в строке URL. Следующий пример выводит 3 последних новости на титульной странице (к примеру, номер шаблона в разделе «Новости» 45, а самого раздела – 8): <b>Последние новости</b><br><br> “.s_list_class(8, 45, “&recNum=3&isTitle=1”).” Функции навигации по сайту Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 97 s_browse_level(int $level, $template) – выводит навигацию уровня $level в соответствие с темплейтом, описанном в массиве $template s_browse_sub(int $parent_sub, $template) – выводит подразделы указанного раздела (блок навигации) в соответствие с темплейтом, описанном в массиве $template s_browse_catalogue($template) – выводит список каталогов (блок навигации) в соответствие с темплейтом, описанном в массиве $template s_browse_cc($sub, $template) – выводит блок навигации по шаблонам раздела $sub соответствие с темплейтом, описанном в массиве $template В последующем примере выводится навигация первого уровня в соответствие с настройками: В верхней части страницы: “. s_browse_level(1, $brouse_sub[2]).” В настройках макета (%URL – ссылка на раздел, %NAME – название раздела): $browse_sub[2][prefix] = "<ul><font size=-1>"; $browse_sub[2][suffix] = "</font></ul>"; $browse_sub[2][active] = "<li><b><a href=%URL>%NAME</a></b>"; $browse_sub[2][unactive] = "<li><a href=%URL>%NAME</a>"; $browse_sub[2][divider] = ""; Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 98 Заметки Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 99 Система управления сайтами NetCat 2.0. Руководство пользователя. Руководство разработчика. 100