Мы будем Вам признательны, если Вы поддержите проект Open SLAED и используя Ваши возможности, разместите наш пресс-релиз на страницах своих сайтов, проектов, форумов, блогов. Текст пресс-релиза, возможно, видоизменить под Ваш формат, не искажая смысл. Пресс-релиз можно взять на данной странице.
Для изготовления своих тем оформления системы, не требуются знания языка программирования PHP. Все действия производятся в формате разметки HTML. При создании своей темы, рекомендуется брать за основу стандартную тему «celestial» предварительно копируя и меняя название папки на своё. Редактировать и видоизменять можно в директории темы или в отделе шаблонов панели администратора.
Cамым оптимальным вариантом является использование стандартных тем оформления или предназначенными для работы с используемой версией системы. Вы так же можете с легкостью написать свою тему на основе стандартной. При написании новой темы не требуются познания в программировании PHP. Знания HTML являются достаточными.
Вы уже, наверное, в курсе, что группа разработчиков ядра PHP 6 встречалась в ноябре 2005 года в Париже. Это была захватывающая встреча, на которой разработчики обсудили развитие PHP со своей точки зрения. Прежде чем я начну свой рассказ о принятых решениях, вынужден предупредить – все что здесь перечислено, это не «100% решенные вопросы» и в окончательном релизе PHP 6 дела могут обстоять иначе. Конечно же, все эти моменты будут обсуждаться подробнее, но уже сейчас можно говорить о перспективах.
Окончательные релизы PHP 6 появятся не скоро, но профессиональные разработчики должны знать к чему готовиться...
Юникод
Поддержка юникода в настоящий момент может быть установлена только на уровне «per request», т.е. для каждого запрашиваемого файла. Это означает, что PHP придется сохранять варианты классов, имен методов и функций одновременно в таблице символов Unicode и в non-Unicode, что, конечно же, увеличивает количество потребляемых ресурсов. Разработчики решили сделать настройку юникода на уровне всего сервера, а не запроса. Отключение поддержки юникода, если таковая не требуется, может увеличить производительность строковых функций до 300% и приложений в целом до 25%. Вынос настроек в php.ini позволит снять заботу о юникоде с разработчика и переложить ее на администраторов хоста.
Если вы самостоятельно собираете PHP и несете всю ответственность за ваши серверы, то вам будет полезно знать, что для PHP 6 потребуются библиотеки ICU (в зависимости от того, будет ли нужен Unicode или нет).
Register Globals уйдут в прошлое
Попрощайтесь с этой настройкой, она будет окончательно убрана. Такой настройки больше не будет в php.ini и если вы ее внесете, то получите ошибку уровня E_CORE_ERROR. Это означает, что PHP 6 наконец-то завершит эру скриптов PHP 3. Это серьезный, но очень нужный шаг.
Magic Quotes будут исключены
Опция magic quotes будет так же исключена из PHP и при попытке включения такой настройки, «выскочит» ошибка E_CORE_ERROR. Это повлияет на magic_quotes, magic_quotes_sybase и magic_quotes_gpc.
Больше не будет Safe Mode
Это понравится тем, кто хостится на серверах с обязательным включением Safe Mode. Теперь, включение опции будет вызывать ошибку E_CORE_ERROR. Причиной для этого становится механизм посыла «сигнала опасности», который делает PHP более безопасным. Сохранится лишь open_basedir.
'var' будет полным алиасом 'public'
Var используется в классах PHP 4. В объектном подходе PHP 5, употребление var вызывает ошибку уровня E_STRICT. В PHP 6 предупреждение об ошибке будет устранено и var станет полным синонимом public. Это вполне нормальное решение, однако, те, кто «подогнал» свои скрипты под PHP 5, сделали в этом плане лишнюю работу.
Возврат по ссылке вызовет ошибку
И '$foo =& new StdClass()' и 'function &foo' теперь вызовут ошибку уровня E_STRICT.
Будет убрана совместимость с zend.ze1
Ze1 всегда пытался поддерживать старое поведение PHP 4, но не всегда «работал на 100%», поэтому в шестой версии PHP он будет полностью исключен.
Поддержка Freetype 1 и GD 1 будет убрана
Поддержка обоих (очень-очень старых) библиотек будет убрана.
dl() останется только в SAPI
Каждую функцию SAPI нужно будет регистрировать отдельно и только CLI и embed SAPI будут работать с этого момента. В других вариантах dl() работать не будет.
FastCGI всегда включена
FastCGI код будет «вылизан» и станет включенным по-умолчанию для CGI SAPI. При этом, поддержку FastCGI будет невозможно отключить.
Старые названия глобальных массивов будут удалены
Помните старые массивы HTTP_*_VARS? Если вы еще не начали использовать $_GET и $POST, то начните делать это прямо сейчас, потому что в PHP 6 эти массивы будут вызывать E_CORE_ERROR.
Перемещения расширений
Расширения XMLReader и XMLWriter войдут в дистрибутив и станут доступны по умолчанию. Расширение ereg для работы с регулярными выражениями переедет в PECL (т.е. будет удалено из PHP). Это означает, что PCRE будет по умолчанию недоступно и выключено. Такой шаг делается для включения нового расширения для работы с регулярными выражениями, основанными на ICU. Чрезвычайно полезное расширение Fileinfo будет включено в дистрибутив и доступно по умолчанию.
Дополнения к движку PHP
64 битный целочисленный тип данных
В движок будет добавлен новый тип данных -int64. Он будет использоваться поумолчанию для integer.
Goto
Никаких команд goto не будет добавлено. Однако, команда break расширится статической меткой, поэтому будет возможно написать break foo и это перекинет на метку foo: в вашем коде.
ifsetor()
Похоже, что мы не увидим эту функцию, что обидно. В операторе ?: можно будет опускать один параметр, что позволит писать так: "$foo = $_GET['foo'] ?: 42;" (т.е. если foo является истиной, то $foo будет равно 42). Это сэкономит немного кода, однако будет не так читаемо, как при использовании ifsetor().
foreach для многоуровневых массивов
Это отличное новшество – вы сможете проходить с помощью foreach по нескольким уровням массива, к примеру "foreach( $a as $k => list($a, $b))".
{} против []
Сейчас вы можете использовать и {} и [] для обращения к строковым индексам. Однако, запись {} уже сейчас вызовет E_STRICT в PHP 5.1 и будет полностью устранена в PHP 6. К тому же, [] частично заменят substr и array_slice и вы сможете использовать "[2,]" для получения символов от второго и до конца строки. Очень удобно.
Изменения в объектном стиле
Связка static
Будет добавлено новое ключевое слово для доступа к последующей связке – static::static2(), что позволит управлять static во время выполнения.
Пространства имен
Этот момент остается нерешенным и по сей день. Мой совет – не задерживайте дыхание.
Типизированные значения при возврате из функций
Разработчики высказались против типизации, потому как это «не в стиле PHP». Однако такая возможномть будет добавлена, но не решен вопрос ее синтаксиса. В любом случае, это будет полезная возможность.
Вызов динамческих функций как статических приведет к E_FATAL
Сейчас вы можете вызывать статические и динамические методы не обращая внимание на то, статические они или динамические. Вызов динамической функции как статической, вызовет E_FATAL.
Добавления в PHP
APC войдет в ядро
Работа APC с байткодом будет включена в основную поставку PHP в качестве стандарта, но, вероятно, не будет активизирована по-умолчанию, но результаты ее работы будут стимулировать хостеров включать эту опцию.
Hardened PHP патч
Этот патч выполняет большое количество дополнительных проверок на безопасность. Разработчики тщательно изучают этот патч и некоторые элементы найдут свое место в PHP: защита от разделения HTTP-запроса, allow_url_fopen будет разделена на две: allow_url_fopen и allow_url_include. Первая опция будет по-умолчанию включена, а вторая – отключена.
E_STRICT войдет в E_ALL
Вау, это серьезная штука! Сообщения об ошибках наконец-то войдут в E_ALL по умолчанию. Это демонстрирует старания разработчиков научить «лучшей практике программирования» посредством сообщений «Эй, ты делаешь неправильно!».
Прощайте asp-тэги <%
Будет удалена поддержка ASP-тэгов, но останутся короткие PHP-тэги <? ?>.
Заключение
PHP 6 движется в интересном направлении – разработчики PHP начали направлять программистов на правильный путь, вместо того чтобы упреждать «так делать не надо, потому что это устарело». Категоричное искоренение таких моментов как register globals, magic quotes, long arrays, {} string indexes и call-time-pass-by-references наконец-то заставит программистов «вычистить» свой код. Плохо ли это? Я так не думаю, но все это сделает переход на PHP 6 еще более медленным, чем мы наблюдаем с PHP 5 (который итак происходит ужасно!).
Официальная информация: http://www.php.net/~derick/meeting-notes.html
Оригинал статьи: http://www.corephp.co.uk/archives/19-Prepare-for-PHP-6.html
Автор: Richard Davey
Перевод: Андрей Олищук
Источник: http://phpclub.ru
Прежде чем перейти к описанию интеграции модулей, хотелось бы заметить, что в системе могут быть использованы различные модули, блоки и скрипты, не только из похожих по принципу построения систем, но и совершенно не похожих. Не смотря на то, что оригинальные модули и блоки используют стандартные функции, это не является основным фактором в их работе. В системе могут работать модули, совершенно не используя основные функции ядра. В некоторых случаях потребуются только не большие изменение в коде интегрируемого модуля, блока или скрипта.
В данном примере мы рассмотрим способ ручной интеграции модулей одной из самых популярных систем построения сайтов PHP-Nuke. Программу, написанную специально для нашей системы, для автоматической интеграции модулей PHP-Nuke в SLAED CMS Вы можете скачать на нашем проекте в каталоге файлов.
Прошу учитывать, что старые варианты использования кода в модулях PHP-Nuke могут незначительно отличаться от описанных в данной статье.
1. В самом верху изменяем способ защиты для модулей от стороннего доступа.
Старый вариант: if (!eregi("modules.php", $_SERVER["PHP_SELF"])) {
die ("You can"t access this file directly...");
}
Новый вариант: if (!defined("MODULE_FILE")) {
Header("Location: ../../index.php");
exit;
}
2. Старые модули PHP-Nuke используют соединение с базой по средствам переменной $dbi. Наша система использует соединение с базой по средствам переменной $db, по этой причине необходимо изменить все переменные $dbi на $db.
Меняем все глобальные переменные $dbi в функциях, на новые $db. Если это необходимо, указываем переменную $db как глобальную.
Старый вариант: global $prefix, $dbi;
Новый вариант: global $prefix, $db;
Изменяем структуру запроса в базу данных.
Старый вариант: $result = sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id", $dbi);
Новый вариант: $result = $db->sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id");
Как вы заметили, удалена переменная $dbi в конце запроса и добавлена переменная $db в начале. Это нужно проделать со всеми запросами.
В запросах необходимо изменить:
sql_fetch_array на $db->sql_fetchrow sql_query на $db->sql_query sql_fetch_row на $db->sql_fetchrow sql_num_rows на $db->sql_numrows sql_free_result на $db->sql_freeresult
Если появляются вопросы по поводу запросов или правильности их написания, смотрим файл function/mysql.php
В некоторых модулях используются прямые запросы в базу данных в обход файла классов соединения с базой. В таком варианте запросы не подсчитываются. При желании вы так же можете изменить запросы подобного рода.
В запросах необходимо изменить:
mysql_fetch_array на $db->sql_fetchrow mysql_query на $db->sql_query mysql_fetch_row на $db->sql_fetchrow mysql_num_rows на $db->sql_numrows mysql_free_result на $db->sql_freeresult
В функциях не забываем указывать переменную $db как глобальную.
3. В некоторых модулях производится соединение с файлом конфигурации которое нужно заменить.
Старый вариант: include("config.php");
Новый вариант: include("config/config.php");
4. В некоторых модулях используется переменная основного адреса сайта, которую нужно заменить.
Старый вариант: $nukeurl
Новый вариант: $conf['homeurl']
Не исключено что в последствии возникнет необходимость использования параметров основных конфигураций системы. Для этих целей рекомендуется прописать в глобальные, переменную $conf, отвечающую за основные настройки, которые хранятся в файле config/config_global.php
5. В некоторых модулях используются функции темы OpenTable2() и CloseTable2() которые нужно заменить.
Старый вариант: OpenTable2();
Новый вариант: OpenTable();
Старый вариант: CloseTable2();
Новый вариант: CloseTable();
6. В стандартных модулях в начале скриптов используется соединение с файлом mainfile.php.
Необходимо удалить: require_once("mainfile.php"); или include("mainfile.php");
7. Во всех скриптах нужно произвести поиск и изменить стандартные ссылки modules.php на index.php.
Старый вариант: modules.php
Новый вариант: index.php
8. Во всех скриптах нужно произвести поиск и удалить стандартные цветовые переменные в глобальных, и заменить их в коде.
Старый вариант: bgcolor="$bgcolor1"
Новый вариант: class="bgcolor1"
Старый вариант: bgcolor="$bgcolor2"
Новый вариант: class="bgcolor2"
Старый вариант: bgcolor="$bgcolor3"
Новый вариант: class="bgcolor3"
Старый вариант: bgcolor="$bgcolor4"
Новый вариант: class="bgcolor4"
Чтобы создать собственный модуль для сайта, построенного с использованием SLAED, достаточно простейших знаний HTML и PHP, а также соблюдение их синтаксиса. Кроме этого потребуется правильная постановка задачи и внимательность. В качестве примера ниже приведены коды модулей, созданные для использования на всех версиях системы SLAED. При реализации модулей учитывайте, любой PHP код должен начинаться c <?php и заканчиваться ?>
1. Создание простейшего модуля
1.1. Представим себе, что Ваш сайт только на русском языке. Вы хотите для этого сайта сделать модуль «О компании». Для этого Вам нужно в директории http://www.ваш_сайт.com/modules/ создать поддиректорию «About_Company». В этой поддиректории должен находиться файл index.php. Вот как это должно выглядеть:
(Кроме модуля «About_Company» на скриншоте представлен ещё и модуль «Account».)
В файле index.php для простейшего модуля должен быть такой код:
Без комментариев код модуля «О компании» выглядит так:
В содержимое модуля можно вставлять не только текст, но и HTML-код, а также PHP-код. HTML-код нужно вставлять с соблюдением синтаксиса языка PHP.
1.2. Допустим, Вы хотите кроме текста на русском языке вставлять в модуль ещё и какие-то картинки. Для этого нужно добавить в директорию «About_Company» модуля «About_Company» поддиректорию «images», в которой будут храниться графические файлы. Структура директорий и файлов модуля «About_Company» будет выглядеть так:
building.jpg — это фотография здания компании company_logo.gif — это логотип компании director.jpg — это фотография директора фирмы index.html — это пустой файл, который нужен для того, чтобы невозможно было просмотреть браузером содержимое директории «images» map.gif — это карта проезда к зданию компании
Разумеется, могут быть и другие графические файлы. Вы можете задавать свои имена графическим файлам.
1.3. Предположим, что Ваш сайт не на одном языке (только на русском), а на нескольких языках (русском, английском и немецком). В этом случае структура директорий и файлов модуля «About_Company» будет выглядеть так:
language — это директория, содержащая в себе языковые файлы
.htaccess — этот файл запрещает всем доступ в директорию «language», в этом файле должна быть такая строка:
Файл .htaccess нужно создавать, редактировать и сохранять только в программе «Блокнот» (Notepad) под Windows, так как этот файл должен быть сохранён в кодировке Unix, что обеспечивает его правильную работу на web-сервере, использующего операционную систему Unix или ей подобную (Linux, FreeBSD).
index.html — это пустой файл, который нужен для того, чтобы невозможно было просмотреть браузером содержимое директории «language» lang-english.php — языковый файл модуля на английском языке lang-german.php — языковый файл модуля на немецком языке lang-russian.php — языковый файл модуля на русском языке
Код модуля «About_Company» в этом случае будет иметь вид:
Без комментариев код модуля «About_Company», который работает на мультиязычном сайте, имеет вид:
В языковых файлах lang-english.php и lang-german.php информация, представленная в файле lang-russian.php, должны быть переведена на соответствующие языки.
В данном примере всё содержимое (контент) и внутреннее оформление (дизайн) модуля «About_Company» находится в языковых файлах. Для более сложного содержимого модуля (таблицы, например) целесообразно размещать HTML-код в файле index.php модуля «About_Company», а в языковые файлы нужно выносить только языковые константы (define("_ABOUT_COMPANY_TITLE","О компании");, например), что существенно облегчит работу с языковыми файлами, а также позволитс меньшими затратами времени вносить изменения в контент и дизайн модуля.
1.4. Для доступа к страничке со списком учредителей компании нужно применить оператор switch.
Код файла index.php модуля «About_Company» должен иметь вид:
Без комментариев код модуля «About_Company» будет выглядеть так:
В языковом файле http://www.ваш_сайт.com/modules/About_Company/language/lang-russian.php (а также в файлы lang-german.php и lang-russian.php) должна быть языковая константа _ABOUT_COMPANY_FOUNDERS. Файл lang-russian.php будет иметь вид, как было указано выше.
Указанный модуль не хранит информацию в базе данных, что позволяет чуть быстрее выводить эту информацию на страничку в браузер посетителя сайта, к тому же такой способ хранения информации меньше загружает MySQL-сервер хостера.
Для внесения новой информации, для редактирования существующей информации в файлах модуля (языковые файлы http://www.ваш_сайт.com/modules/About_Company/language/lang-russian.php) требуются начальные знания синтаксиса HTML и PHP.
Для изготовления своих тем оформления системы, не требуются знания языка программирования PHP. Все действия производятся в формате разметки HTML. При создании своей, рекомендуется брать за основу стандартную тему «Standart» предварительно копируя её и меняя название папки на своё. После чего заходим в директорию темы или в отдел шаблонов панели администратора и редактируем компоненты под свои нужды.
Ссылки на графику в теме
При использовании ссылок, допустим на графику, название темы в ссылке менять не обязательно. Директория темы определяется автоматически. Для этого используется переменная $ThemeSel. Прописываем только путь к графическому файлу.
Пример ссылки: templates/$ThemeSel/images/ваша_картинка.gif
Графические файлы темы оформления
Директории темы оформления: images/ используется как архив, где хранятся все графические элементы темы оформления сайта. При изготовлении своей темы, для исключения путаницы, рекомендуется использовать данную директорию для хранения графических элементов.
Файлы оформления элементов дизайна в основной директории
Файл темы оформления: style.css отвечает за оформление элементов дизайна всего сайта и позволяет контролировать практически любые элементы. С помощью данного файла можно сделать практически что угодно - от разметки колонок, размера шрифтов, цветовой гаммы до кнопок и всплывающих окон.
Основной шаблон оформления системы
За основное оформление системы отвечает файл index.html предназначенный для формирования структуры и порядка отражения модулей, блоков и других компонентов системы. Естественно, верстальщик и дизайнер могут наполнить его любым HTML оформлением и применить все возможные и известные приемы верстки.
Создание основного шаблона оформления персонально для главной страницы
Вы можете создать уникальное оформление, персонально для главной страницы проекта в не зависимости от модуля, установленного на главной.
Пример: Нужно сделать уникальное оформление для главной страницы проекта
В таком случае создаём файл оформления в директории темы с названием index-Home.html
Система определит его автоматически и будет использовать для персонального оформления главной страницы проекта.
Создание основного шаблона оформления персонально для каждого модуля
Вы можете создать уникальное оформление, персонально для каждого модуля системы. В зависимости от названия имеющегося модуля, который находится в корневой директории modules/
Пример: Нужно сделать уникальное оформление содержания для модуля News
В таком случае создаём файл оформления в директории темы с названием index-News.html
Система определит его автоматически и будет использовать для персонального оформления модуля News.
Ниже представлено описание переменных вида {%XXXX%} и за что они отвечают. Расставить эти переменные можно по всему файлу, в каком угодно порядке.
Используемые переменные
{%HEAD%} - Стандартное формирование шапки - меты и титлы, а также содержание, которое присутствует в системе по умолчанию.
{%MODULE%} - Нарезка для модуля, который должна подставить система (На месте этого участка будет отображаться содержание модуля системы).
{%LICENSE%} - Копирайты системы.
{%BLOCKS banner%} или {%BLOCKS b%} - Верхний баннер.
{%BLOCKS left%} или {%BLOCKS l%} - Левые блоки.
{%BLOCKS center%} или {%BLOCKS c%} - Верхние центральные блоки.
{%BLOCKS down%} или {%BLOCKS d%} - Нижние центральные блоки.
{%BLOCKS right%} или {%BLOCKS r%} - Правые блоки.
{%BLOCKS foot%} или {%BLOCKS f%} - Нижний баннер.
{%BLOCKS time%} или {%BLOCKS t%} - Время генерации страницы.
{%BLOCKS none,ХХХ%} или {%BLOCKS n,ХХХ%} - Произвольный блок системы или свободный блок без оформления, где ХХХ - это либо ID блока, либо название файла блока.
{%BLOCKS standart,ХХХ%} или {%BLOCKS s,ХХХ%} - Произвольный блок системы или свободный блок с оформлением свободного блока, где ХХХ - это либо ID блока, либо название файла блока.
{%BLOCKS message%} или {%BLOCKS m%} - Сообщение на главной странице.
{%BLOCKS variables%} - Анализатор переменных.
{%BLOCKS query%} - Анализатор запросов в базу данных.
Оформление выводимой информации в модулях
Описание компонентов
Файл basic.html отвечает за оформление содержащейся информации в модулях, а так же информации при подробном просмотре.
Создание оформления компонентов
Вы можете создать уникальное оформление материала, персонально для каждого модуля системы. В зависимости от названия имеющегося модуля, который находится в корневой директории modules/
Пример: Нужно сделать уникальное оформление содержания для модуля News
В таком случае создаём файл оформления в директории темы с названием basic-News.html
Система определит его автоматически и будет использовать для персонального оформления содержания модуля News.
Вы можете создать уникальное оформление, персонально для каждой функции модуля. В зависимости от названия используемой функции непосредственно в модуле.
Пример: Нужно сделать уникальное оформление содержания для функции подробного просмотра view модуля News
В таком случае создаём файл оформления в директории темы с названием index-News-view.html
Система определит его автоматически и будет использовать для персонального оформления функции view подробного просмотра модуля News.
Дополнительно к этому в систему внедрена переменная $conf['template'] которую можно использовать в функциях модуля при создании своих названий для компонентов оформления. Такие шаблоны так же будут, определятся системой в автоматическом режиме.
Используемые переменные
$arg[0] - Номер категории в базе данных
$arg[1] - Изображение категории и ссылка на неё
$arg[2] - Заголовок категории
$arg[3] - Номер компонента в базе данных
$arg[4] - Заголовок
$arg[5] - Содержание
$arg[6] - Нижняя строка новости, куда входят: Подробнее, дата, автор, прочитано, комментарии
$arg[7] - Подробный просмотр
$arg[8] - Автор публикации
$arg[9] - Дата публикации
$arg[10] - Количество прочтений
$arg[11] - Количество комментариев
$arg[12] - Рейтинг
$arg[13] - Распечатка
$arg[14] - Редактирование
$arg[15] - Размер
$arg[16] - Версия
$arg[17] - Скачать/Посетить
$arg[18] - Сообщить о недоступном файле/ссылке
$arg[19] - E-Mail
$arg[20] - Сайт
Оформление блоков системы
Описание оформления блоков
1. Файл block-center.html отвечает за верхние центральные блоки.
2. Файл block-down.html отвечает за нижние центральные блоки.
3. Файл block-left.html отвечает за левые блоки.
4. Файл block-right.html отвечает за правые блоки.
5. Файл block-all.html отвечает за все остальные блоки, которые могут использовать в отдельности от стандартных.
Создание оформления блоков
Вы можете создать уникальное оформление, персонально для каждого блока системы. В зависимости от названия имеющегося блока, который находится в корневой директории блоков blocks/. Если это необходимо, создаём идентичное название файла оформления для блока, но с изменением окончания с .php на .html. Куда и вносим свой вид оформления.
Пример: Нужно сделать уникальное оформление для блока block-News.php
В таком случае создаём файл оформления в директории темы с названием block-News.html
Система определит его автоматически и будет использовать для персонального оформления блока block-News.php
Вы можете создать уникальное оформление групп блоков, персонально для каждого модуля системы.
Пример: Нужно сделать уникальное оформление левых блоков для модуля News
В таком случае создаём файл оформления в директории темы с названием block-left-News.html
Система определит его автоматически и будет использовать для персонального оформления левых блоков модуля News
Вы можете создать уникальное оформление групп блоков, для главной страницы.
Пример: Нужно сделать уникальное оформление левых блоков для главной страницы
В таком случае создаём файл оформления в директории темы с названием block-left-Home.html
Система определит его автоматически и будет использовать для персонального оформления левых блоков главной страницы проекта.
Используемые переменные
$title - Заголовок блока
$content - Содержание блока
Оформление комментариев
Описание оформления комментариев
Файл comment.html отвечает за оформление комментариев в модулях.
Создание оформления комментариев
Вы можете создать уникальное оформление комментариев, персонально для каждого модуля системы. В зависимости от названия имеющегося модуля, который находится в корневой директории modules/
Пример: Нужно сделать уникальное оформление комментариев для модуля News
В таком случае создаём файл оформления в директории темы с названием comment-News.html
Система определит его автоматически и будет использовать для персонального оформления комментариев модуля News.
Используемые переменные
$carg[0] - Номер комментария в базе данных
$carg[1] - Ник пользователя с функцией вставки в форму комментария
$carg[2] - Верхняя правая информационная строка
$carg[3] - Аватар пользователя
$carg[4] - Содержание комментария
$carg[5] - Рейтинг пользователя
$carg[6] - Нижняя правая информационная строка
$carg[7] - Пункты пользователя
$carg[8] - Дата комментария
$carg[9] - Номер комментария
$carg[10] - Дата регистрации пользователя
$carg[11] - Пол пользователя
$carg[12] - Ник пользователя
$carg[13] - Сайт пользователя
$carg[14] - E-Mail пользователя
$carg[15] - ICQ номер пользователя
$carg[16] - AIM Адрес пользователя
$carg[17] - Yahoo Messenger пользователя
$carg[18] - MSN Messenger пользователя
$carg[19] - Редактировать пользователя
$carg[20] - Удалить пользователя
Оформление модулей системы
Описание оформления модулей
1. Файл table-open.html отвечает за оформление верхней части модуля и других отделов, где используется функция OpenTable();
2. Файл table-close.html отвечает за оформление нижней части модуля и других отделов, где используется функция CloseTable();
Создание оформления модулей
Вы можете создать уникальное оформление, персонально для каждого модуля системы. В зависимости от названия имеющегося модуля, который находится в корневой директории modules/
1. Для верхней части модуля, table-open-Название_модуля.html
2. Для нижней части модуля, table-close-Название_модуля.html
Пример: Нужно сделать уникальное оформление для модуля News
В таком случае создаём файл оформления в директории темы с названием table-open-News.html и table-close-News.html
Система определит их автоматически и будет использовать для персонального оформления модуля News.
Вы можете создать уникальное оформление, персонально для каждой функции модуля. В зависимости от названия используемой функции непосредственно в модуле.
Пример: Нужно сделать уникальное оформление содержания для функции подробного просмотра view модуля News
В таком случае создаём файл оформления в директории темы с названием table-open-News-view.html и table-close-News-view.html
Система определит их автоматически и будет использовать для персонального оформления функции view подробного просмотра модуля News.
Дополнительно к этому в систему внедрена переменная $conf['template'] которую можно использовать в функциях модуля при создании своих названий для компонентов оформления. Такие шаблоны так же будут, определятся системой в автоматическом режиме.
Оформление сообщений на главной странице
Описание оформления сообщений
Файл message-box.html отвечает за сообщения на главной странице
Используемые переменные
$title - Заголовок сообщения
$content - Содержание сообщения
Оформление страницы печати
Описание оформления страницы печати
Файл prints.html отвечает за оформление страниц печати в модулях.
Создание оформления страниц печати
Вы можете создать уникальное оформление для страниц печати, персонально для каждого модуля системы. В зависимости от названия имеющегося модуля, который находится в корневой директории modules/
Пример: Нужно сделать уникальное оформление страницы печати для модуля News
В таком случае создаём файл оформления в директории темы с названием prints-News.html
Система определит его автоматически и будет использовать для персонального оформления страниц печати модуля News.
Используемые переменные
$charset - Кодировка страницы
$ThemeSel - Название темы оформления
$title - Содержание заголовка кода страницы
$homeurl - Адрес сайта
$sitename - Название сайта
$site_logo - Логотип сайта
$ptitle - Содержание заголовка
$text - Информация
$url - Ссылки на статью и сайт
Оформление заголовка с поиском
Описание оформления заголовка с поиском
Файл search.html отвечает за оформление заголовков с поиском в модулях.
Создание оформления заголовка с поиском
Вы можете создать уникальное оформление заголовка с поиском, персонально для каждого модуля системы. В зависимости от названия имеющегося модуля, который находится в корневой директории modules/
Пример: Нужно сделать уникальное оформление заголовков с поиском для модуля News
В таком случае создаём файл оформления в директории темы с названием search-News.html
Система определит его автоматически и будет использовать для персонального оформления заголовка с поиском модуля News.
Вы можете создать уникальное оформление заголовков с поиском, персонально для каждого модуля системы. В зависимости от названия используемой функции непосредственно в модуле.
Пример: Нужно сделать уникальное оформление заголовка с поиском для функции подробного просмотра view модуля News
В таком случае создаём файл оформления в директории темы с названием search-News-view.html
Система определит его автоматически и будет использовать для персонального оформления функции view заголовков с поиском модуля News.
Дополнительно к этому в систему внедрена переменная $conf['template'] которую можно использовать в функциях модуля при создании своих названий для компонентов оформления. Данные шаблоны так же будут, определятся системой в автоматическом режиме.
Используемые переменные
$sarg[0] - Выводимое название модуля
$sarg[1] - Оригинальное название модуля
$sarg[2] - Ссылки навигации модуля
$sarg[3] – Ссылка: Главная
$sarg[4] – Ссылка: Лучшие
$sarg[5] – Ссылка: Популярные
$sarg[6] – Ссылка: Список
$sarg[7] – Ссылка: Добавить
$s_search - Название поиска
Оформление заголовков во всей системе
Описание оформления заголовков
Файл title.html отвечает за оформление заголовков. Как правило, они используются модулями системы для отображения их названий.
Создание оформления заголовков
Вы можете создать уникальное оформление заголовков, персонально для каждого модуля системы. В зависимости от названия имеющегося модуля, который находится в корневой директории modules/
Пример: Нужно сделать уникальное оформление заголовка для модуля Voting
В таком случае создаём файл оформления в директории темы с названием title-Voting.html
Система определит его автоматически и будет использовать для персонального оформления заголовка модуля Voting.
Вы можете создать уникальное оформление заголовка, персонально для каждой функции модуля. В зависимости от названия используемой функции непосредственно в модуле.
Пример: Нужно сделать уникальное оформление заголовка для функции просмотра view модуля Voting
В таком случае создаём файл оформления в директории темы с названием title-Voting-view.html
Система определит его автоматически и будет использовать для персонального оформления функции view заголовка модуля Voting.
Дополнительно к этому в систему внедрена переменная $conf['template'] которую можно использовать в функциях модуля при создании своих названий для компонентов оформления. Такие шаблоны так же будут, определятся системой в автоматическом режиме.
Используемые переменные
$text - Содержание заголовка
Оформления ошибок, предупреждений и информации
Описание оформления ошибок
Файл warning.html отвечает за оформление ошибок, предупреждений и вывода важной информации в системе.
Создание оформления ошибок
Вы можете создать уникальное оформление ошибок, персонально для каждого модуля системы. В зависимости от названия имеющегося модуля, который находится в корневой директории modules/
Пример: Нужно сделать уникальное оформление ошибок для модуля News
В таком случае создаём файл оформления в директории темы с названием warning-News.html
Система определит его автоматически и будет использовать для персонального оформления ошибок модуля News.
Вы можете создать уникальное оформление, персонально для каждой функции модуля. В зависимости от названия используемой функции непосредственно в модуле.
Пример: Нужно сделать уникальное оформление ошибок для функции подробного просмотра view модуля News
В таком случае создаём файл оформления в директории темы с названием warning-News-view.html
Система определит его автоматически и будет использовать для персонального оформления функции view ошибок модуля News.
Дополнительно к этому в систему внедрена переменная $conf['template'] которую можно использовать в функциях модуля при создании своих названий для компонентов оформления. Такие шаблоны так же будут, определятся системой в автоматическом режиме.
Используемые переменные
$text - Информация
$toredirect - Дальнейший, автоматический переход, так называемый «Редирект».
Прежде чем перейти к описанию интеграции модулей, хотелось бы заметить, что в системе могут быть использованы различные модули, блоки и скрипты, не только из похожих по принципу построения систем, но и совершенно не похожих. Не смотря на то, что оригинальные модули и блоки используют стандартные функции, это не является основным фактором в их работе. В системе могут работать модули, совершенно не используя основные функции ядра. В некоторых случаях потребуются только не большие изменение в коде интегрируемого модуля, блока или скрипта.
В данном примере мы рассмотрим способ ручной интеграции модулей одной из самых популярных систем построения сайтов PHP-Nuke. Программу, написанную специально для нашей системы, для автоматической интеграции модулей PHP-Nuke в SLAED Вы можете скачать на нашем проекте в каталоге файлов.
Прошу учитывать, что старые варианты использования кода в модулях PHP-Nuke могут незначительно отличаться от описанных в данной статье.
1. В самом верху изменяем способ защиты для модулей от стороннего доступа.
Старый вариант: if (!eregi("modules.php", $_SERVER["PHP_SELF"])) {
die ("You can"t access this file directly...");
}
Новый вариант: if (!defined("MODULE_FILE")) {
Header("Location: ../../index.php");
exit;
}
2. Старые модули PHP-Nuke используют соединение с базой по средствам переменной $dbi. Наша система использует соединение с базой по средствам переменной $db, по этой причине необходимо изменить все переменные $dbi на $db.
Меняем все глобальные переменные $dbi в функциях, на новые $db. Если это необходимо, указываем переменную $db как глобальную.
Старый вариант: global $prefix, $dbi;
Новый вариант: global $prefix, $db;
Изменяем структуру запроса в базу данных.
Старый вариант: $result = sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id", $dbi);
Новый вариант: $result = $db->sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id");
Как вы заметили, удалена переменная $dbi в конце запроса и добавлена переменная $db в начале. Это нужно проделать со всеми запросами.
В запросах необходимо изменить:
sql_fetch_array на $db->sql_fetchrow sql_query на $db->sql_query sql_fetch_row на $db->sql_fetchrow sql_num_rows на $db->sql_numrows sql_free_result на $db->sql_freeresult
Если появляются вопросы по поводу запросов или правильности их написания, смотрим файл function/mysql.php
В некоторых модулях используются прямые запросы в базу данных в обход файла классов соединения с базой. В таком варианте запросы не подсчитываются. При желании вы так же можете изменить запросы подобного рода.
В запросах необходимо изменить:
mysql_fetch_array на $db->sql_fetchrow mysql_query на $db->sql_query mysql_fetch_row на $db->sql_fetchrow mysql_num_rows на $db->sql_numrows mysql_free_result на $db->sql_freeresult
В функциях не забываем указывать переменную $db как глобальную.
3. В некоторых модулях производится соединение с файлом конфигурации которое нужно заменить.
Старый вариант: include("config.php");
Новый вариант: include("config/config.php");
4. В некоторых модулях используется переменная основного адреса сайта, которую нужно заменить.
Старый вариант: $nukeurl
Новый вариант: $conf['homeurl']
Не исключено что в последствии возникнет необходимость использования параметров основных конфигураций системы. Для этих целей рекомендуется прописать в глобальные, переменную $conf, отвечающую за основные настройки, которые хранятся в файле config/config_global.php
5. В некоторых модулях используются функции темы OpenTable() и CloseTable() которые нужно заменить.
Старый вариант: OpenTable(); или OpenTable2();
Новый вариант: open();
Старый вариант: CloseTable(); или CloseTable2();
Новый вариант: close();
6. В стандартных модулях в начале скриптов используется соединение с файлом mainfile.php.
Необходимо удалить: require_once("mainfile.php"); или include("mainfile.php");
7. Во всех скриптах нужно произвести поиск и изменить стандартные ссылки modules.php на index.php.
Старый вариант: modules.php
Новый вариант: index.php
8. Во всех скриптах нужно произвести поиск и удалить стандартные цветовые переменные в глобальных, и заменить их в коде.
Старый вариант: bgcolor="$bgcolor1"
Новый вариант: class="bgcolor1"
Старый вариант: bgcolor="$bgcolor2"
Новый вариант: class="bgcolor2"
Старый вариант: bgcolor="$bgcolor3"
Новый вариант: class="bgcolor3"
Старый вариант: bgcolor="$bgcolor4"
Новый вариант: class="bgcolor4"
Я встречал много вопросов связанных с интеграцией обычных шаблонов под шаблоны SLAED CMS. У многих нету ни денег, ни опыта. В бесплатной помощи отказываю, в результате чего все плохие, никто не помогает. Для создания шаблонов последних версий SLAED CMS требуются только знания HTML и CSS. Нестандартный шаблон можно сделать и без внутренних изменений системы, т.е. без вмешательства php, для этого существуют переменные в шаблонизаторе системы
Если внимательно прочитать слова Гроссмана "Сложные проблемы всегда имеют простые, легкие для понимания неправильные решения", то можно понять, что на первый взгляд это всё трудно, но поняв сутьсмысл это можно будет щелкать как орешки. Вернемся к самой статье. Лично я выделяю два вида интеграций: 1 - внедрение в стандартную тему (интеграция на существующую тему), 2 - преобразование HTML (интеграция с нуля).
Очень важную роль играет то, какой шаблон Вы выбрали. Не каждый шаблон можно интегрировать без головные боли. Некоторые авторы шаблонов создают их так, что они не пригодны даже даже для использования их как обычных HTML шаблонов без полной смены структуры.
Когда Вы подобрали HTML, выбираем наиболее доступные для Вас способ интеграции:
Внедрение в стандартную тему (интеграция на существующую тему)
Этот способ включает в себя замены в стандартной темы index.html, и доработкой в style.css, ну а так же где потребуется в остальных файлах .html чтобы придать законченный вид шаблону.
1) Для начала нужно проанализировать структуру HTML шаблона.
2) Далее пожалуй самый сложный этап: из шаблона нужно удалить так называемое лишние (java-срипты, коментарии, лищние рисунки), при этому не нарушая структуру сайта, что является очень частой ошибкой начинающих, в результате чего итоговый templates будет кривой (не правильная структура сайта).
3) Заменяем index.html в стандартном шаблоне SLAED CMS (Default)
4) Включаем страницу и видим «Daring copyrights of system, you break the license of use!». Не надо пугаться, на данном этапе так и должно быть.
5) Изменяем путь до изображений. Перед изображением вписывает такой путь: "/templates/$ThemeSel/images/"
6) Слудующий этап будет заключаться в внедрении переменных. index.html должно содержать следующие: {%HEAD%}, {%BLOCKS left%}, {%BLOCKS message%}, {%BLOCKS center%}, {%MODULE%}, {%BLOCKS down%}, {%BLOCKS foot%}, {%BLOCKS time%}, {%LICENSE%}, {%BLOCKS variables%}, {%BLOCKS query%}.
7) Подстраиваем остальные .html файлы под дизайн.
8) Самым последнем моментом ювелирная работа с style.css (кстати часть style.css можно вырвать из <head> начального HTML шаблона)
Преобразование HTML (интеграция с нуля)
Этот вид более трудоемкий и требует больших знаний. Но он даст Вам желаемый результат. Как говорится «Без труда, не вытащишь и рыбку из пруда». Суть этого вида заключается в том, что Вы практически «создаете» тему. Если быть точнее то Вы вставляете код шаблона в index.html бедующей темы, а остальные части сайта прорабатываете сами.