Мы будем Вам признательны, если Вы поддержите проект Open SLAED и используя Ваши возможности, разместите наш пресс-релиз на страницах своих сайтов, проектов, форумов, блогов. Текст пресс-релиза, возможно, видоизменить под Ваш формат, не искажая смысл. Пресс-релиз можно взять на данной странице.
Система была задумана как безопасная, скоростная, функциональная, гибкая в использовании, а главное простая для понимания рядовых пользователей с начальным уровнем знаний. Основные замыслы, которые были реализованы в системе, это снижение нагрузки на базу данных и сервер, повышение функциональности и безопасности, удобство управления и работы с системой, интуитивно понятный интерфейс, простота в использовании и расширении, то есть написании своих тем оформления, блоков, модулей и дополнений. Таким образом, система предназначена для максимально широкого спектра использования и предоставляет возможность построения на своей основе любого сайта, начиная от персональной странички или презентации компании и заканчивая мощными, высоко посещаемыми порталами.
ЮжноРоссийский портал посвящённый безопасности, охране и сыску. Безопасные новости. Каталог и рейтинг охранных, сыскных предприятий и служб безопасности Краснодарского края, Ростовской области, Ставропольского края и Республики Адыгея. База знаний. Безопасный форум. Доска объявлений.
Чтобы создать собственный модуль для сайта, построенного с использованием 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.
Чтобы создать собственный блок для сайта, построенного с использованием 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 без ограничений
После истечения – Если без ограничений, оставляем как есть
Кто это будет видеть? - Выбираем на своё усмотрение
Я встречал много вопросов связанных с интеграцией обычных шаблонов под шаблоны 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 бедующей темы, а остальные части сайта прорабатываете сами.
В прошлой главе мы познакомились с основами модуля mod_rewrite. В примере, который был рассмотрен, мы использовали конструкцию, которая в буквальном смысле означает следующее: «Если кто-то пытается получить доступ к файлу .htaccess, выдается ошибка, сообщающая, что доступ к файлу запрещен».
Это «правило» глобально, то есть каждый получит указанное сообщение об ошибке. Напомню, что mod_rewrite является модулем, который предоставляет «основанный на правилах механизм динамического изменения запрашиваемых URL-ов».
Мы можем ограничивать «правило» при помощи различных «условий правила». «Правило» будет выполнено только в том случае, если перед ним будет встречен ряд условий.
Синтаксис: условие должно предшествовать правилу!
Возьмем еще один пример (запись в файле .htaccess):
Назначение первых трех записей было подробно разобрано в первой части публикации. Их функция - включение «движка перезаписи», то есть самого модуля.
Последние две строки запрещают доступ поисковому роботу под кодовым названием «EmailSiphon» (имеется ввиду имя юзер-агента). Данный робот является сборщиком почтовых адресов с различных веб страниц.
Проверочная строка – переменная сервера, которая может быть записана в общей форме: «% {ИМЯ_ПЕРЕМЕННОЙ}».
Образец условия – регулярное выражение. Для более полного понимания темы стоит рассмотреть регулярные выражения как класс.
Регулярные выражения – это механизм, позволяющий задать шаблон для строки и осуществить поиск данных, соответствующих этому шаблону в заданном тексте. Кроме того, дополнительные функции по работе с такими выражениями позволяют получить найденные данные в виде массива строк, произвести замену в тексте по шаблону, разбиение строки по шаблону и т.п. Однако главной их функцией, на которой основаны все остальные, является именно функция поиска в тексте данных, соответствующих шаблону (образцу), описанному в синтаксисе регулярных выражений.
Регулярные выражения подобны маленькому, компактному языку программирования со своими правилами.
Например, регулярное выражение:
заменит строку «abc», на строку «xyz» во всем тексте.
Вот краткий обзор наиболее важных элементов с некоторыми примерами:
. (точка) - текст (любой символ)
| - чередование (то есть/abc|def/)
* - квантификатор (разрешено любое число)
^ $ - якоря строки
s - оператор (string1 заменить на string2)
g - модификатор (искать по всему тексту)
Регулярные выражения конструируются с помощью этих элементов и других «обычных» символов. Они не являются отдельным языком, а используются другими средствами, например языками программирования типа Perl или PHP, а также текстовыми редакторами (Emacs).
Если говорить о связи регулярных выражений и модуля mod_rewrite, то они используются в директивах RewriteRule и RewriteCond.
«^» обозначает начало строки. Из этого следует, что UserAgent должен начинаться со строки «EmailSiphon» и ни с чего другого («NewEmailSiphon», например, не работал бы).
Но, поскольку данное регулярное выражение не содержит символ "$" (якорь конца строки), UserAgent мог бы быть, например, «EmailSiphon2».
Последняя строка нашего примера:
определяет, что именно нужно делать, когда робот запросит доступ.
Регулярное выражение «^.*$» означает: «Доступ ко всем файлам запрещен».
Точка «.» в регулярном выражении – мета символ (подстановочный знак), означающий любой случайный символ.
«*» означает то, что строка может встречаться неограниченное количество раз. В этом случае, независимо от имени запрошенного файла, будет выдана ошибка.
«EmailSiphon», конечно, не единственный почтовый сборщик. Другой известный член этого семейства - «ExtractorPro». Допустим мы хотим запретить доступ и этому роботу. В таком случае нам необходимо еще одно условие.
Теперь файл .htaccess будет выглядеть так:
Третий аргумент [OR] (в первой строке RewriteCond) называется «флагом». Существуют два возможных флага:
NC – не учитывать регистр букв.
OR – означает «или следующее условие».
Флажок NC позволяет игнорировать регистр букв в искомом образце. Например:
Эта строка определяет, что и "emailsiphon" и "EmailSiphon" будут признаны как идентичные выражения.
Вы можете использовать сразу несколько флажков, разделяя их запятыми.
Нет никаких ограничений по числу условий. Таким образом, Вы можете блокировать 10, 100, 1000 или более известных почтовых сборщиков. Определение этих 1000 условий – просто вопрос загрузки сервера и прозрачности файла «.htaccess».
В вышеупомянутом примере используется глобальная переменная «HTTP_USER_AGENT». Существуют также другие переменные: REMOTE_HOST, REMOTE_ADDR
Например, если Вы хотите заблокировать паука пришедшего с www.site.ru, Вы можете использовать глобальную переменную «REMOTE_HOST» таким образом:
Если Вы хотите заблокировать определенный IP адрес, условие будет выглядеть так:
В регулярном выражении по проверке точного и полного IP адреса нужно использовать начальные и конечные якоря.
Также можно исключить целый диапазон:
Этот пример показывает, как можно заблокировать диапазон IP адресов с 212.37.64.0 по 212.37.64.255.
А вот маленькая задачка для проверки приобретенных знаний (решение будет дано в следующей части):
Внимание, вопрос!
Если мы пишем в регулярном выражении «^212.37.64» вместо «^212.37.64.» (с точкой в конце), то даст ли это тот же самый эффект, и будут ли исключены те же самые IP адреса?
До сих пор мы использовали простой RewriteRule, который генерирует сообщение об ошибках. В третьей части публикации мы проанализируем, как можно использовать RewriteRule для переадресации посетителей к определенным файлам.
Данная рубрика позволяет составлять списки часто задаваемых вопросов и ответов на них. Обычно используется вместе с форумом. Позволяет уменьшить нагрузку на форум за счет вынесения полученных ответов в одно место и предоставления их в удобном для пользователя виде. Так же используется для введения в курс дела новичков в различных областях знаний.
Интерфейс пользователя
Списки вопросов делятся на категории по смыслу для удобства навигации.
Администрирование
Добавление новой категории
Для добавления новой категории нажмите на ссылку «Вопросы и ответы» на панели управления модулями, в появившемся ниже поле введите название категории, выберите из выпадающего списка язык и нажмите «Добавить». Новая категория добавлена.
Редактирование существующей категории
Чтобы отредактировать категорию нажмите на ссылку «Вопросы и ответы» на панели управления модулями, из появившегося ниже списка выберите категорию, которую собираетесь редактировать. В поле «Функции» напротив выбранной категории нажмите на ссылку «Редактировать». В появившейся форме Вы можете изменить название и язык категории.
Удаление категории
Для удаления категории нажмите на ссылку «Вопросы и ответы» на панели управления модулями, из появившегося ниже списка выберите категорию, которую собираетесь удалить. В поле «Функции» напротив выбранной категории нажмите на ссылку «Удалить». Во избежание случайного удаления у Вас будет запрошено подтверждение на удаление.
Добавление вопроса в категорию
Для добавления нового вопроса в существующую категорию нажмите на ссылку «Вопросы и ответы» на панели управления модулями, из появившегося ниже списка выберите категорию, в которую собираетесь добавить вопрос. В поле «Функции» напротив выбранной категории нажмите на ссылку «Контент». Появится форма «Добавить новый вопрос», в верхнем поле которой введите вопрос, а в нижней – ответ на него, после чего подтвердите добавление вопроса, нажав «Сохранить». Введенный вами вопрос появится в списке.