Главное меню
RSS трансляции
Наши новости могут транслироваться, используя rss.
rss1.0
rss2.0
rdf
Пишем свой плагин к Е107
В данной серии уроков мы научимся писать плагины для движка E107 и заодно рассмотрим некоторые встроенные функции в Е107, например, очень полезные функции для работы с базой данных. Авторы движка постарались, чтобы работа с базой данных была как можно проще. Всего будет 3 урока. (где 3-й урок я так и не нашел...)
Статья полностью содрана отсюда: http://e107.org.ru/e107_plugins/content/content.php?content.5

Урок 1


Напишем небольшой плагин, который будет выводить случайный анекдот из базы данных. Данный плагин очень простой и примитивный, имеет минимум функционала. Нашей задачей будет показать, как все-таки пишутся плагины для E107. Можете поупражняться на досуге и развить этот плагин во что-то более дельное.

Суть вопроса.

Нужно создать скрипт, который бы был плагином для Е107, мог бы инсталлироваться как плагин, управляться из админки, ну и конечно, показываться на сайте. Для темы выберем простенькую задачку: показывать анекдоты на сайте в случайном порядке. Анекдоты будут храниться в базе данных. От вас требуется знание PHP и основ MySQL.

Приступим.

Итак, с тех. заданием немного определились. Пожалуй, самое время подробней рассказать о плагинах. Плагин - это дополнительный модуль (набор PHP-скриптов), расширяющий функционал движка. Плагины бывают разные, нужные и не очень. Тем не менее, даже в стандартной поставке Е107 присутствуют немало плагинов, хотя некоторые думают, что это стандартные средства Е107. Для того чтобы система поняла, что есть какой-то плагин, который нужно использовать, нужно проделать некоторые операции.

В каталоге e107_plugins нужно создать файл с описанием плагина plugin.php с некоторым заранее определенным содержимым и еще как минимум один рабочий файл, который будет поддерживать функционал плагина, проще говоря, обработчик. Хотя обычно плагин состоит из большего числа файлов. Например, файла описания плагина, конфигуратора и обработчика. В этом уроке мы рассмотрим содержимое файла plugin.php.Для удобства работы лучше создать отдельную директорию, куда мы будем складывать все наши файлы. Имя директории пусть будет anekdot.

plugin.php - Описание плагина.

Если взглянуть на разные директории с плагинами, то можно убедиться, что почти во всех присутствует этот файл. И даже больше, этот файл во всех плагинах имеет практически одинаковый формат. Поскольку все переменные, описываемые в плагине, должны быть именно такими, какие они есть. Мы тоже не будет отходить от традиций и воспользуемся некоторым шаблоном.

<?PHP
$eplug_name 
"Анекдотик";
$eplug_version "0.1";
$eplug_author "Marconi";
$eplug_logo "button.png";
$eplug_url "http://e107.org.ru";
$eplug_email "ezik@1gb.ru"//не пишете на этот емайл он для спама! LOL
$eplug_description "Этот плагин показывает анекдоты";
$eplug_compatible "e107v6";
$eplug_readme "";


В общем-то, тут все понятно. Это информация о плагине, которая будет отображаться в админке – управление плагинами.

$eplug_folder = "anekdot";


Имя папки, в которой будет лежать плагин. В итоге должен получится путь /e107_plugins/anekdot.

$eplug_menu_name = "";


Оставим пустым, нашему плагину не потребуется.

$eplug_conffile = "anekdot_conf.php";


Имя файла, отвечающего за настройку плагина.

$eplug_icon = $eplug_folder."/images/icon.png";
$eplug_caption =  "Настроить анекдотик";


Путь до иконки плагина и название заголовка.

$eplug_prefs = "";


Заранее определенные настройки. Нам не потребуются.

$eplug_table_names = array(
        "anekdot"
        );


Список и название таблиц базы данных, которые будут использоваться скриптом. Нам нужна всего одна.Следует заметить, что приставки к названию таблиц будут добавлены автоматически. Например, если у вас при установке движка был задан префикc e107_, то в итоге таблица будет называться e107_anekdot.

$eplug_tables = array(
        "CREATE TABLE ".MPREFIX."anekdot (
         id int(9) NOT NULL auto_increment,
         anek text NOT NULL,
         PRIMARY KEY  (id)
         ) ENGINE=MyISAM DEFAULT CHARSET=UTF8;");


SQL-скрипт, создающий нужную нам таблицу.

$eplug_link = TRUE;


Нужно ли добавлять ссылку в главное меню навигации:
TRUE=да FALSE=нет

$eplug_link_name = "Хочу анекдот";
$eplug_link_url = e_PLUGIN."anekdot/anekdot.php";


Как будет называться ссылка и куда в итоге приведет.

$eplug_done = "Поздравляем, все гладко";


Надпись по завершении установки плагина.

Остальные поля нам не нужны, оставим их как есть, к тому же из их названий легко можно понять, для чего они нужны. Например, эти поля – для апгрейда, но нам он точно не нужен.

$upgrade_add_prefs = "";
$upgrade_remove_prefs = "";
$upgrade_alter_tables = "";
$eplug_upgrade_done = "";
?>


Теперь сохраняем весь наш файл. Поздравляю, начало положено, не так уж и сложно

Урок 2



На этом уроке мы рассмотрим файл конфигурирования нашего плагина, а также встроенные возможности Е107 для работы с базами данных.

На прошлом уроке в файле описания мы задали имя конфигу:

$eplug_conffile = "anekdot_conf.php";


Вот этот файл мы сейчас и будем создавать.

Ну, в общем-то начало стандартное практически для всех окошек в е107:

<?
require_once("../../class2.php");
if(!
getperms("P"))


Потом цепляем модуль аутентификации:

require_once(e_ADMIN."auth.php");


дабы простые пользователи не могли рулить настройкой.

Есть и другой вариант. Например, в е107 есть глобальные переменные, одна из них называется ADMIN и установлена в значении TRUE, если пользователь авторизовался и является админом. То есть данную строку можно было заменить на:

if(!ADMIN)


Дальше идет собственно код конфигуратора.
Поскольку добавление строк в базу и рапорт системы о том, что строки добавлены, будут у нас в одном файле, то нужно проверить, с какой целью в данный момент файл вызывается, - чтобы что-то добавить или просто показать форму добавления.

if(IsSet($_POST['updatesettings'])){


Тут мы проверяем, пришло ли нам что-нибудь с запросом страницы и если пришло, значит, нужно добавлять строки в базу.

Теперь самое интересное:

       $new_anek = $_POST['new_anek'];
                   $sql = new db;
                   $sql -> db_Insert("anekdot"," ‘’,$new_anek");
                   $message = "Настройки обновили.";
                 }


Тут необходимо остановиться подробнее.
Авторы сайта сделали ряд функций для работы с базой данных, которые облегчают нам с вами жизнь. Описание функций и их использование написаны в файле mysql_class.php в директории с заголовочными файлами.

Одна из этих функций тут используется: db_Insert, в файле описания mysql_class.php можно найти описание этой функции. Примерно оно выглядит так:

function db_Insert($table, $arg, $debug=FALSE){
        /*
# Insert with args
        #
        # - parameter #1:    строка $table, имя таблицы
        # - parameter #2:    строка $arg, вставляет строку в таблицу
        # - return возвращает идентификатор, или ошибку
              */



Давайте посмотрим, насколько авторы облегчили нам жизнь, и какой есть еще вариант работы. Если бы не было этих функций, то пришлось бы писать примерно так (пример почти в самом коротком варианте):

<?
$link 
mysql_connect("mysql_host""mysql_login""mysql_password") or die ("Нет соединения с хостом");
mysql_select_db ("my_database") or die ("Нет соединения с базой");
$query "INSERT INTO …..";
$result mysql_query ($query);
mysql_free_result($result);
mysql_close($link);


Как видим, строк ушло больше, также нужно забивать сюда логин, пароль, полное название таблиц и т.д., а используя функции е107 - только две строки:

$sql = new db;
$sql -> db_Insert("anekdot"," ‘’,$new_anek");


По-моему, заметно удобнее и проще. Рассмотрим более детально db_Insert:

db_Insert(“таблица”, “список значений”)

Если вспомнить скрипт создания таблицы, который мы написали в первом уроке, то мы создали таблицу с двумя полями:

id int(9) NOT NULL auto_increment,
 anek text NOT NULL


Поскольку поле id автоувеличивающееся, то его заполнять нам не нужно и остается одно поле anek. Список значений заполняется через запятую.

$sql -> db_Insert("anekdot",” ‘’,$new_anek");


Также следует заметить, что таблица полностью называется е107_anekdot, но в данном случае движок опять же сам за нас добавит недостающую часть имени, т. е. ту, которую вы указали при установке движка.

Идем дальше.
А дальше, собственно, идет форма для добавления анекдотов. Тут все просто и понятно:

$text='<form name="addanek" action="anekdot_conf.php" method="post">';
$text .='<textarea name="new_anek" rows=5 cols=20 wrap="off">';
$text .='анек пишем сюды';
$text .='</textarea><BR>';
$text .='<input type="submit" name="updatesettings" value="Send">';
$text .='</form>';


Тут же появляется updatesettings, при приеме которого мы выше определяли - нужно добавлять строки в базу или нет. Стоит нажать на кнопку в форме, как это значение установится и страница перегрузится.

Ну и стандартное окончание любого админского окошка в е107:

$ns -> tablerender("<div style='text-align:center'>добавление анекдотов</div>", $text);
require_once(e_ADMIN."footer.php");
?>


На следующем уроке мы займемся выборкой анекдотов из базы.

Удачи!

З.Ы. Надеюсь, что хоть кто-нибудь меня понял


В е107 используются переменные которые вы можете использовать в своих скриптах.


USER
Возращает TRUE если пользователь залогинлся.
Использование: if(USER){...


USERID
Возращает уникальный номер юзера
Использование:$unique_id = USERID;


USERNAME
Возращает имя (ник?) пользователя
Использование: $name = USERNAME;


USEREMAIL
Возращает EMAIL пользователя
Использование: $email = USERMAIL;


USERLV
Возращает дату и время последнего визита пользователя (unix timestamp)
Использование:$last_visit = USERLV;


USERCLASS
Возращает класс пользователя (разделитель '.' Точка)
Использование:$classes = USERCLASS;


USER_PREF
Возращает настройки пользователя
Использование:$preferences = USER_PREF;


ADMIN
Возращает TRUE если юзер админ
Использование:if (ADMIN){...


ADMINID
Возращает уникальный номер админа
Использование:$unique_admin_id = ADMINID;


ADMINNAME
Возращает имя (ник?) админа
Использование:$admin_name = ADMINNAME;


ADMINPERMS
Возращает класс админа (разделитель '.' Точка)
Использование:$admin_permissions = ADMINPERMS;


ADMINEMAIL
Возращает EMAIL админа
Использование:$admin_email = ADMINEMAIL;


ADMINPWCHANGE
Возращает дату последней смены пароля админа (unix datestamp)
Использование:$admin_password_change = ADMINPWCHANGE;


e_HTTP
Возращает путь к корневой папке сайта
Использование:$path = e_HTTP."index.php";


e_ADMIN
Возращает путь к папке админа (default: 'admin')
Использование:$path = e_ADMIN."newspost.php";


e_SELF
Возращает текущие имя скрипта
Использование:$this_script = e_SELF;


e_QUERY
Возращает QUERY_STRING текущего URL
Использование:$qs = e_QUERY;


e_BASE
Возращает путь к базовой папке
Использование:$base_dir = e_BASE;


THEME
Возращает путь к папке c темой сайта (например 'themes/e107/')
Использование:$theme_path = THEME;
РадиоЭлектроника
Поиск Vampyr`s House!
Copyright © 1999-2014, Igor Muraviov. Все авторские права принадлежат их владельцам ( в случае указания) или владельцу сайта, если автор не указан.
Копирование материалов с сайта возможно только в случае размещения ссылки на первоисточник.
Protected by Copyscape DMCA Plagiarism Check