Модератор форума: Dimitro, LightInDarkness |
Форум Web раздел Web форум [Manual] Создаём модули для DLE |
[Manual] Создаём модули для DLE |
В последнее время слишком много школьников напрягают мою аську и меня вместе с ней вопросом "как ты в dle вшил модуль?". Я, безусловно, понимаю, что таким людям гуглить некамильфо, и что им проще покапать на мозги другим, нежели сделать самому.
Первый и последний раз я что-то делаю за других, но это, так сказать, жест отчаяния. Приступим к делу: У вас есть сайт на DLE, в который вы, к примеру, хотите присабачить модуль "статус сервера" и вывести его на главной странице. Открываем текстовый файлик, копипастим в него след. код: Code <?php if( ! defined( 'DATALIFEENGINE' ) ) die( "Hacking attempt!" ); $fp = @fsockopen(SHOST, SPORT, $errno, $errstr, 5); $status=($fp?"<font color='green'>работает</font>":"<font color='red'>отключен</font>"); $szStatus = <<<HTML Статус сервера - {$status} HTML; $tpl->result['content'] = $szStatus; ?> Сохраняем его под именем status.php и закидываем в папку /engine/modules Далее нам необходимо открыть файл index.php и найти Code define ( 'ENGINE_DIR', ROOT_DIR . '/engine' ); Ниже добавить Code require_once ENGINE_DIR . '/modules/status.php'; Найти Code $tpl->set ( '{headers}', $metatags."\n".build_js($js_array, $config) ); Ниже добавить Code $tpl->set('{status}', $szStatus); Всё, дальше нам будет необходимо только вставить {status} в шаблон на то место, где мы хотим его видеть. ************************************************************************************************ Но как быть, если под ваши нужны нужна целая страница? Например, вы хотите отобразить PvP рейтинг. начало процесса аналогично прошлому модулю. То есть мы создаём файлик pvp.php с содержимым: Code <?php /** * @author Desperado * @copyright 2010 */ if( ! defined( 'DATALIFEENGINE' ) ) die( "Hacking attempt!" ); define ( 'ROOT_DIR', dirname ( __FILE__ ) ); $sMySql = mysql_connect($ip, $userdb, $passw); mysql_query("SET NAMES $encoding"); $aSql = mysql_query("SELECT c.name, c.totalHonorPoints, c.class, c.totalKills, c.chosenTitle, a.gmlevel FROM characters.characters c INNER JOIN realmd.account a ON a.id = c.account WHERE a.gmlevel =0 ORDER BY c.totalKills DESC LIMIT 0 , 71", $sMySql); $szContent .= "<br /><table width='98%' border='1' align='center'><tr> <td align='center' width='20%'><b><font color='green'>Персонаж</font></b></td> <td align='center' width='20%'><b><font color='green'>Класс</font></b></td> <td align='center' width='15%'><b><font color='green'>Очки чести</font></b></td> <td align='center' width='15%'><b><font color='green'>Убийств</font></b></td> <td align='center' width='25%'><b><font color='green'>Ранг</font></b></td> </tr></table>"; while ($row = mysql_fetch_array($aSql)) { $show_name = $row['name']; $show_totalHonorPoints = $row['totalHonorPoints']; $show_totalKills = $row['totalKills']; $show_class = $class[$row['class']]; $show_pvp = $pvp[$row['chosenTitle']]; $szContent .= "<table width='98%' border='1' align='center'><tr> <td align='center' width='20%'><a href='$armory_link$show_name' target ='_blank'>$show_name</td> <td align='center' width='20%'>$show_class</td> <td align='center' width='15%'>$show_totalHonorPoints</td> <td align='center' width='15%'>$show_totalKills</td> <td align='center' width='25%'>$show_pvp</td> </tr></table>"; } $szContent .= "<br><center><font color = 'red'><b>PvP Ранг отображается в случае выбора оного в профиле персонажа</b></font></center>"; $tpl->result['content'] = $szContent; mysql_close($sMySql); ?> Сохраняем его и кидаем в папку /engine/modules/ Далее отправляемся в папку /engine, ищем файл engine.php Открываем его и ищем Code switch ( $do ) { Ниже добавляем Code case "pvp" : include ENGINE_DIR . '/modules/pvp.php'; break; Сохраняем и кидаем обратно. Всё готово. Теперь ваша страница будет доступна по адресу http://ваш сайт/index.php?do=pvp Пример От себя хочу добавить, что модуль пвп не завершён. В нём не хватает пары вещей, которые мне лично объяснять лень и пары массивов. Во всех описанных модулях отсутсвует кеширование. Мне сейчас жутко впадлу объяснять как и для чего его делать. Быть может, в будущем, исправлю это недоразумение. Конечно, глядя на те гавносайты, что вы здесь творите, становится ясно, что у вас у всех мультипроцессорные сервера на базе топовых новинок и кеширование вам не нужно. Для остальных же позже напишу. На тупорылые вопросы в теме не отвечаю. Всё написано довольно просто и понятно. Удачи во всех начинаниях. Модеры, закрепите темку. Добавлено "кеширование результатов" Добавлен Список готовых модулей для сайтов WoW, использующих DLE 8x |
кеширование - одно из самых лёгких занятий
Сообщение # 4 написано 11.06.2010 в 18:57
|
здесь отписал принципы кеширования Дле модулей. Статья не закончена и будет добавляться по мере наличия свободного времени.
Если хотите уметь не только копипастить, но и понимать то, что копируете, спрашивайте и делитесь опытом на этом форуме. Ахтунг! Здесь на вопросы не отвечаю, ибо это мусорка. Добавлено (12.06.2010, 15:30)
Code <?php /** * @descr класс для работы с кешированием данных * поддерживает как массив данных, так и простой текст. * @author Dmitriy 'FlashBlack' Chubrick (d.chubrick@smartdesign.by) * @param $szPath string путь до папки с кеш * @param $nCacheLifeTime int время жизни кеш файла */ class cacheClass { private $Content = FALSE; private $szPath; private $nCacheLifeTime; //время жизни файлов /** * @descr конструктор * @param $szPath string путь к папке с кеш-файлами (на конце слеш (/) обязательно * @param $nCacheLifeTime int время жизни кеш файла */ function __construct($szPath, $nCacheLifeTime) { $this->szPath = $szPath; $this->nCacheLifeTime = $nCacheLifeTime; } /** * @descr устанавливаем контент * @param $content array\string контент, может быть как массив, так и текст */ public function setContent($content) { if ( ! $content) { $this->Content = FALSE; } else { if (is_array($content)) { $this->Content = serialize($content); } else { $this->Content = $content; } } } /** * @descr получаем контент * @return array\string */ public function getContent() { return $this->Content; } /** * @descr функция для проверки, пора ли перезаписывать кеш, либо нет. * @param $szFileName string кеш-индификатор * @return boolean */ public function checkForWrite($szFileName) { $szCacheFileName = $this->szPath.$szFileName.'.cache'; if (file_exists($szCacheFileName)) { $nModifyTime = filemtime($szCacheFileName); if (($nModifyTime + $this->nCacheLifeTime) < time()) { return TRUE; } } else { return TRUE; } return FALSE; } /** * @descr записываем кеш-индификатор с контентом getContent() * @param $szFileName string название кеш-индификатора */ public function writeCache($szFileName) { $szCacheFileName = $this->szPath.$szFileName.'.cache'; if (file_exists($szCacheFileName)) { if ($this->checkForWrite($szFileName)) { file_put_contents($szCacheFileName, $this->getContent()); } } else { file_put_contents($szCacheFileName, $this->getContent()); } } /** * @descr читаем кеш-индификатор * @return array\string */ public function readCache($szFileName) { $szCacheFileName = $this->szPath.$szFileName.'.cache'; $szContent = file_get_contents($szCacheFileName); if ( is_array(@unserialize($szContent)) ) { return unserialize($szContent); } else { return $szContent; } } } ?> |
Очень полезно!
Гммм, to Desperado опять заморочки с твоим кодом, ругаешь наши говносайты хотя в деме сайт грузит дольше чем например мой-же http://www.nicosoft.ru/ |
чё сказали?
скорость загрузки сайта и его нагрузка на сервер - разные вещи. Скорость загрузки зависит от хостинга, от факторов соединения, от количества js, css, html, картинок на сайте. будте так добры, не пишите в этой теме свои дауно мысли. Если у вас есть заморочки с моим кодом, то можете пойти застрелиться. Вам не дано заниматься ничем, кроме ананизма. |
так создавайте по аналогии.
Ничего сложного в этом нет я показывал общую схему создания, а не делал за вас модули.
Сообщение # 11 написано 20.06.2010 в 17:15
|
попробовал вставить вот такой скриптик (status.php)
Code <?php if( ! defined( 'DATALIFEENGINE' ) ) die( "Hacking attempt!" ); $realms = array( '1' => array('root', 'root', 'localhost', 'characters', 'realmd', 'port'), ); ?> <style> d.tt span{ display:none;} d.tt:hover{ position:relative; z-index:23; } d.tt:hover span{ display:block; position:absolute; top:-10px; left:80px; z-index:22; background:#fafafa; } </style> <?php echo "<center>"; for ($i=1; $i<=count($realms); $i++){ $conn = mysql_connect($realms[$i][2],$realms[$i][0],$realms[$i][1]) or die(exit()); mysql_select_db($realms[$i][3]) or die(exit()); $online=mysql_num_rows(mysql_query("SELECT NULL FROM `characters` WHERE `online`='1'")); $chardb=mysql_num_rows(mysql_query("SELECT NULL FROM `characters`")); $guilddb=mysql_num_rows(mysql_query("SELECT NULL FROM `guild`")); $arenadb=mysql_num_rows(mysql_query("SELECT * FROM `arena_team`")); $alliance=mysql_num_rows(mysql_query("SELECT NULL FROM `characters` WHERE `race` IN ('1', '3', '4', '7','10') AND `online`='1'")); $horge=mysql_num_rows(mysql_query("SELECT NULL FROM `characters` WHERE `race` IN ('2', '5', '6', '8','11') AND `online`='1'")); mysql_select_db($realms[$i][4]) or die(exit()); $realmname=mysql_fetch_array(mysql_query("SELECT name FROM `realmlist` WHERE `id`='".$i."'")); $accdb=mysql_num_rows(mysql_query("SELECT * FROM account")); echo "<b>Статистика<br>серверов:</b><br><d class='tt'><b>Realm ".$realmname['name']."</b>:"; $fp = @fsockopen ($realms[$i][2],$realms[$i][5],$errno,$errstr, 0.5); if ($fp){ print "<img src='./images/online.png'>"; } else { print "<img src='./images/offline.png'>"; } @fclose($fp); echo "<span><table><tr><td>Статистика</td><td>сервера</td></tr> <tr><td>Общий online</td><td>".$online."</td></tr> <tr><td>Альянс</td><td>".$alliance."</td></tr> <tr><td>Орда</td><td>".$horge."</td></tr> <tr><td>Аккаунтов</td><td>".$accdb."</td></tr> <tr><td>Персоонажей</td><td>".$chardb."</td></tr> <tr><td>Гийльдий</td><td>".$guilddb."</td></tr> <tr><td>Арена-тим</td><td>".$arenadb."</td></tr> </table></span></d><br>"; mysql_close(); } echo "</center>"; ?> только не могу сообразить как вывести эту статистику в блок сбоку....... он отображается у меня сверху шапки сайта и спасибо за тему очень нужная.... искал не мог найти нигде по выводе статистики в DLE |
Перечитать 1 пост
Сообщение # 13 написано 21.06.2010 в 07:36
|
Quote (Adkot) тема конечно неплохая но думаю скопированная с других источников .....какой смысл выкладывать и писать читай первый пост..проще ответить выложил то что знаю на больше не способен)) Материал писался лично мной. Если вы нихрена не знаете, то не стоит судить так всех.
Quote А как быть с модулем регистрации ??? Аналогично. Подключаете шблонизатор и всё.
Сообщение # 17 написано 21.06.2010 в 15:17
|
в чём проблема?
ищите класс регистрации и редактируете под свои нужды.
Сообщение # 19 написано 21.06.2010 в 18:51
|
хорошее объяснение..... можно поставить то что написано.... люди спрашивают про другие возможности помощи никакой для чего же нужен форум --> тема наверно для того чтоб набить посты и и поднять репутацию (вернусь свой плюсик заберу) пользы маловато от этого .... пойду искать в других источниках может кто объяснит что да как....
|
ога, вперёд.
Я объяснил как делатьв первом сабже. Не понимаете, ну что ж... вовжопа) и этим всё сказано.
Сообщение # 21 написано 22.06.2010 в 02:06
|
вообще то за эти обьяснения я поставил плюсик мне всё понравилось и не только мне..... всё ставится работает отображается ....... если не в силах или не знаете как ответить на вопросы второстепенные не нужно портить репутацию другим ...... КОПИ ПАСТЫ темы говорят сами за себя выдирать темы с других источников может любой ...... а вот ответить как всё работает может только истинный создатель данной темы ...... никогда человек не будит писать идиотизм в плане того что На тупорылые вопросы в теме не отвечаю. Всё написано довольно просто и понятно
для того и нужен форум тема создание модулей DLE ...... только в помощи создать что то похожее я не увидел в этой теме как для себя так и для некоторых...... |
будет, если не хочет заниматься идиотизмом, в стиле объяснения идиотам, котоые не могуь сообразть разницу в 2х строках.
Quote только в помощи создать что то похожее я не увидел в этой теме как для себя так и для некоторых а где я сказал, что буду делать что-то для вас? Учите мануалы и "творите". Я не виноват, что вы нихрена не знаете и делать за вас ничего не собираюсь. Кстати, судя по гавнокоду, который вы опубликовали на моём форуме, объяснять вам вобще бесполезно. Вы даже основ не знаете. Так что, уважаемый товарищ школьник: здесь я вам ничего не должен и заканчивайте брать меня на понт. Не нравится что-то - вон нахер с темы. Кака вариант, поищите проблему в себе и всё станет понятно |
вали и спрашивай.
А "ничего не смыслящий" человек как-нибудь переживёт потери отсутсвия признания у нубов вовжопы
Сообщение # 25 написано 22.06.2010 в 15:17
|
Adkot, он не говорил, что сделает все за тебя(меня, нас, вас). Десперадо правильно делает, ведь те у кого мозг хоть на чучуть работает сами допрут как сделать. Ну а тех до кого не доперло - значит заниматься сайтами не их дело.
371 штука кириллических шрифтов
Произвожу установку и настройку эмуляторов типа MaNGOS и Trinity Core (работаю через Radmin и TeamViver) Компиляция ядер с вашими патчами и на заказ. Также изготовление разнообразной графики, дизайнов. Установка всех видов CMS на ваш хостинг/сервер. За ценами обращайтесь в ICQ 7629199 или Skype: ramzes3202
Сообщение # 26 написано 24.06.2010 в 13:07
|
Народ помагите как исправить эти ошибки:
Code Warning: mysql_connect(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\status.php on line 5 Warning: mysql_selectdb(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\status.php on line 7 Warning: mysql_selectdb(): A link to the server could not be established in C:\xampp\htdocs\engine\modules\status.php on line 7 Warning: mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\status.php on line 8 Warning: mysql_query(): A link to the server could not be established in C:\xampp\htdocs\engine\modules\status.php on line 8 Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\engine\modules\status.php on line 9 Warning: mysql_selectdb(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\status.php on line 10 Warning: mysql_selectdb(): A link to the server could not be established in C:\xampp\htdocs\engine\modules\status.php on line 10 Warning: mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\status.php on line 11 Warning: mysql_query(): A link to the server could not be established in C:\xampp\htdocs\engine\modules\status.php on line 11 Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\engine\modules\status.php on line 12 Warning: mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\status.php on line 13 Warning: mysql_query(): A link to the server could not be established in C:\xampp\htdocs\engine\modules\status.php on line 13 Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\engine\modules\status.php on line 14 Warning: mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\status.php on line 15 Warning: mysql_query(): A link to the server could not be established in C:\xampp\htdocs\engine\modules\status.php on line 15 Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\engine\modules\status.php on line 16 Warning: mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\status.php on line 17 Warning: mysql_query(): A link to the server could not be established in C:\xampp\htdocs\engine\modules\status.php on line 17 Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\engine\modules\status.php on line 18 Аккаунтов: Персонажей: Альянса: Орды: Гильдий: Warning: mysql_connect(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\pvp.php on line 12 Warning: mysql_query(): Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\engine\modules\pvp.php on line 13 Warning: mysql_query(): A link to the server could not be established in C:\xampp\htdocs\engine\modules\pvp.php on line 13 Warning: mysql_query() expects parameter 2 to be resource, boolean given in C:\xampp\htdocs\engine\modules\pvp.php on line 20 Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\xampp\htdocs\engine\modules\pvp.php on line 30 Warning: mysql_close() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\engine\modules\pvp.php on line 50 Загрузка. Пожалуйста, подождите...
Сообщение # 27 написано 29.06.2010 в 12:34
|
| |||