Мы будем Вам признательны, если Вы поддержите проект Open SLAED и используя Ваши возможности, разместите наш пресс-релиз на страницах своих сайтов, проектов, форумов, блогов. Текст пресс-релиза, возможно, видоизменить под Ваш формат, не искажая смысл. Пресс-релиз можно взять на данной странице.
1. Войдите в панель управления системой, отдел: Панель администратора >> База данных
2. В окне запросов в базу данных Вы можете произвести свой запрос.
Обратите внимание на то, что использование стандартного префикса не обязательно, за место его Вы можете использовать {pref}. В этом случае переменная {pref} будет автоматически заменена Вашим префиксом.
В качестве примера, рассмотрим запрос, который удалит всех зарегистрированных пользователей, не посещавших проект, начиная с: 2007-10-05 18:15:00.
Иногда возникает необходимость перенаправления определённого посетителя, допустим пришедшего с определённого сайта или определённой страны, на определённую страницу. Данную потребность, возможно, реализовать стандартными средствами системы. В качестве примера, ниже мы рассмотрим несколько вариантов.
Перенаправление посетителя пришедшего с определённого сайта
1. Войдите в панель управления системой, отдел: Панель администратора >> Редактор
2. В файл внедрения в шапку системы: config_header.php
Добавляем следующую запись:
$reflink - Отвечает за адрес нужного нам сайта
Заместо: slaed.net укажите свой домен.
$metlink - Отвечает за страницу, куда будет перенаправлен посетитель
Заместо: news.html укажите необходимую страницу или сайт.
Перенаправление посетителя из определённой страны
1. Войдите в панель управления системой, отдел: Панель администратора >> Редактор
2. В файл внедрения в шапку системы: config_header.php
Добавляем следующую запись
$userlang - Отвечает за нужную нам страну
Название страны не должно быть произвольным и должно соответствовать стандартам использования класса. Правильность написания той или иной страны можно проверить в переменной $COUNTRY_NAMES файла: function/geo_ip.php
$metlink - Отвечает за страницу, куда будет перенаправлен посетитель
Заместо: news.html укажите необходимую страницу или сайт.
Причиной данной ситуации может быть несколько, рассмотрим основные из них.
1. Если это произошло после редактирования темы оформления, не исключено что Вы удали копирайты системы, что делать запрещено. Восстановите их, загрузив стандартные файлы темы оформления или всю тему целиком.
2. Если это произошло после новой установки системы:
Возможно Вы загрузили папки темы оформления в нижнем регистре (используя только маленькие буквы алфавита). В таком случае тема системы не соответствует стандартной теме указанной в конфигурациях. Проверьте и откорегируйте название темы. Как правило, нужно изменить название с папкой темы, к примеру, из standard на Standard.
Не забывайте, названия стандартных тем оформления системы начинаются с заглавных букв, то же самое относится к стандартным модулям. Изменение заглавных букв в названиях стандартных модулей и тем оформления может привести к их не корректной работе.
Проверьте, загружены ли стандартные темы оформления и файлы, содержащиеся в них. При необходимости загрузите повторно.
Прежде чем перейти к описанию интеграции модулей, хотелось бы заметить, что в системе могут быть использованы различные модули, блоки и скрипты, не только из похожих по принципу построения систем, но и совершенно не похожих. Не смотря на то, что оригинальные модули и блоки используют стандартные функции, это не является основным фактором в их работе. В системе могут работать модули, совершенно не используя основные функции ядра. В некоторых случаях потребуются только не большие изменение в коде интегрируемого модуля, блока или скрипта.
В данном примере мы рассмотрим способ ручной интеграции модулей одной из самых популярных систем построения сайтов 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"
Данная информация пригодится более опытным пользователям системы для отслеживания ошибок в работе сервера и системы. Не для кого не секрет что наша система построения сайтов способна отслеживать стандартные ошибки 400, 401, 403, 404, 500, 503 и вести соответствующую статистику в лог файлах. Но немногие знаю о том, что система способна регистрировать не только стандартные, но и все возможные ошибки. Для того, что бы активировать регистрацию новых ошибок, необходимо добавить в основной файл: .htaccess соответствующую запись.
Допустим, у Вас появилась необходимость отследить ошибку 504, которая отвечает за время прохождения шлюза.
Открываем файл: .htaccess
После:
Добавляем:
Этого достаточно для того, что бы система начала фиксировать соответствующую ошибку в случае её появления. Просмотреть файл статистики ошибок, а так же загрузить его к себе на компьютер Вы сможете на главной странице отдела безопасности панели администратора системы. Ниже мы рассмотрим все существующие ошибки и их значения.
Коды первого класса Они не посылаются клиентам.
100 Continue - Начальная часть запроса принята, и клиент может продолжать передачу запроса.
101 Switching Protocols - Сервер выполняет требование клиента и переключает протоколы в соответствии с указанием, данным в поле заголовка Upgrade.
Коды второго класса Возникают, когда запрос успешно принят и понят сервером.
200 OK - Пользователю не посылается.
201 Created - Объект создан.
202 Accepted - Информация принята.
203 Non-Authoritative Information - Информация, не заслуживающая доверия.
204 No Content - Нет содержания.
205 Reset Content - Восстановить исходное содержание.
206 Partial Content - Частичное содержание.
Коды третьего класса Сообщают о перенаправлении. Для того чтобы выполнить запрос, нужны еще какие-то действия.
300 Multiple Choices - Несколько вариантов на выбор.
301 Moved Permanently - Ресурс перемещен на постоянной основе.
302 Found - Ресурс временно перемещен.
303 See Other - Смотрите другой ресурс.
304 Not Modified - Не изменился.
305 Use Proxy - Следует использовать прокси-сервер.
307 Temporary Redirect - Временное перенаправление.
Коды четвертого класса Сообщают об ошибках клиента. Проблема связана не с сервером, а с работой системы и запросами посетителей.
400 Bad Request - Некорректный запрос.
401 Unauthorized - Нет разрешения.
402 Payment Required - Требуется оплата.
403 Forbidden - Доступ запрещен.
404 Not Found - Ресурс не найден.
405 Method Not Allowed - Недопустимый метод.
406 Not Acceptable - Неприемлимый запрос.
407 Proxy Authentication Required - Необходима регистрация.
408 Request Time-out - Время обработки запроса истекло.
409 Conflict - Конфликт.
410 Gone - Ресурса больше нет.
411 Length Required - Необходимо указать длину.
412 Precondition Failed - Не выполнено предварительное условие.
413 Request Entity Too Large - Запрашиваемый элемент слишком велик.
414 Request-URI Too Large - Идентификатор ресурса слишком длинный.
415 Unsupported Media Type - Неподдерживаемый тип ресурса.
416 Requested range not satisfiable - Диапазон не может быть обработан.
417 Expectation Failed - Время ожидания истекло.
Коды пятого класса Сообщают об ошибке на сервере. Система к этим ошибкам не имеет отношения.
500 Internal Server Error - Внутренняя ошибка сервера.
501 Not Implemented - Функция не реализована.
502 Bad Gateway - Дефект шлюза.
503 Service Unavailable - Служба недоступна.
504 Gateway Time-out - Время прохождения через шлюз истекло.
Чтобы создать собственный блок для сайта, построенного с использованием SLAED, достаточно простейших знаний HTML и PHP, а также соблюдение их синтаксиса. Кроме этого потребуется правильная постановка задачи и внимательность. В данной статье мы рассмотрим варианты ручного создания файловых блоков. В качестве примера ниже приведены коды, созданные для использования на всех версиях системы SLAED.
Для начала необходимо создать файл в директории блоков blocks/ Для того, что бы система идентифицировала данный файл как файловый блок, название файла должно быть такого типа: block-ваше_название.php В самом файле, для вывода информации необходимо использовать переменную $content за место стандартных методов echo или print, это единственная отличительная особенность которую нужно учитывать. Всё остальное реализуется при помощи стандартных методов и функций PHP и HTML. При реализации блоков учитывайте, любой PHP код должен начинаться c <?php и заканчиваться ?>
Ниже мы рассмотрим варианты реализации блоков на примерах реализованных в коде, с комментариями участков.
Пример 1
Пример 2
В примерах ниже мы рассмотрим варианты вывода информации в блок из других файлов.
Для работоспособности примеров:
1. Создаём файл demo.txt в директории blocks/ Директория значения не имеет, файл может находиться на другом сайте. Важно указать точный путь к файлу!
2. В файле напишите произвольный текст на своё усмотрение. Содержание данного файла может быть любым.
В качестве содержание файла demo.txt предлагаю использовать изначальный текст:
Пример 3
Пример 4
После того как файловый блок создан и находится в директории blocks/ необходимо добавить и активировать его в панели администратора системы, в отделе блоков: Панель администратора >> Блоки и баннеры >> Добавить новый блок
Заголовок – Указываем название для блока
Ссылка на канал RSS – Оставляем пустым
Время обновления – Оставляем как есть
Имя файла – Выбираем созданный файловый блок
Содержание – Оставляем пустым
Позиция – Выбираем на своё усмотрение
Отображать блок в модулях - Выбираем на своё усмотрение
Язык - Выбираем на своё усмотрение
Активировать? – Да
Время работы, в днях – 0 без ограничений
После истечения – Если без ограничений, оставляем как есть
Кто это будет видеть? - Выбираем на своё усмотрение
При использовании ссылок, допустим на графику, название темы в ссылке менять не обязательно. Директория темы определяется автоматически. Для этого используется переменная $ThemeSel. Прописываем только путь к графическому файлу.
Пример ссылки: templates/$ThemeSel/images/ваша_картинка.gif
Графические файлы темы оформления
Директория темы оформления: images/ используется как архив, где хранятся все графические элементы темы оформления сайта. При изготовлении своей темы, для исключения путаницы, рекомендуется использовать данную директорию для хранения графических элементов.
В данной директории так же могут находиться другие графические элементы оформления системы. Если Вы хотите за место стандартных элементов находящихся в папке системы images/ использовать уникальные элементы, персонально для темы оформления, в таком случае создайте идентичную папку в директории images/ темы оформления. Система определить её автоматически и будет использовать находящиеся в ней компоненты, за место стандартных.
Рассмотрим на примере
Вариант 1: Системная папка компонентов оформления BB редактора: images/editor/
Вариант 2: Папка темы компонентов оформления BB редактора: templates/celestial/images/editor/
Если вариант 2 присутствует, использоваться будет именно он, в противном случае вариант 1.
Типы графических файлов и их вызов
Мы рекомендуем к использованию три основных типа графических элементов, такие как: .png, .gif, .jpg. Формат .png поддерживает полную и частичную прозрачность, поэтому желательно использовать именно его, во избежание проблем с белыми рамками при использовании тёмных тем оформления.
Определение графических элементов в системе и её модулях производится автоматически по названию компонента. Файл может находиться в стандартной папке системы или в папке темы оформления с идентичным названием.
Рассмотрим на примере
В модуле новостей нужно добавить графический элемент: images/all/news.png
Для этого используем функцию, где окончание .png и папку images/ указывать не нужно: img_find("all/news")
Пример использования:
Файлы оформления элементов дизайна в основной директории
Файл темы оформления: style.css отвечает за оформление элементов дизайна всего сайта и позволяет контролировать практически любые элементы. С помощью данного файла можно сделать практически что угодно - от разметки колонок, размера шрифтов, цветовой гаммы до кнопок и всплывающих окон.
Прежде чем перейти к описанию интеграции модулей, хотелось бы заметить, что в системе могут быть использованы различные модули, блоки и скрипты, не только из похожих по принципу построения систем, но и совершенно не похожих. Не смотря на то, что оригинальные модули и блоки используют стандартные функции, это не является основным фактором в их работе. В системе могут работать модули, совершенно не используя основные функции ядра. В некоторых случаях потребуются только не большие изменение в коде интегрируемого модуля, блока или скрипта.
В данном примере мы рассмотрим способ ручной интеграции модулей одной из самых популярных систем построения сайтов 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"