Перейти к содержимому


Добро пожаловать Форум веб-мастеров | CoderLab.ru
Зарегистрируйтесь сейчас, чтобы получить доступ ко всем функциям. После регистрации и входа в систему вы сможете создавать темы, отвечать на сообщения в существующих разделах, изменять репутацию другим пользователям, получить свой ​​собственный личные сообщения, обновления статуса сообщение, управлять профилем и многое другое. Если у вас уже есть учетная запись, войдите здесь - в противном случае зарегистрироваться

Свернуть чат Чат форума

@  Ember : (25 Октябрь 2017 - 07:22 ) Форум снова доступен! :pivo:
@  Kota : (11 Январь 2015 - 07:01 ) Угу, появляюсь http://forum.coderla...y-sander/page-3
@  dt. : (09 Январь 2015 - 09:43 ) Kota тут появляется?
@  sokoloka : (08 Январь 2015 - 05:56 ) Накрутку на форуме хоть закажите, а то вообще скучно тут
@  Bezlicsa : (06 Январь 2015 - 07:44 ) nujna pomosh v ustanovke shablona dle skype Niciqulu
@  ingushmen : (03 Январь 2015 - 10:18 ) @Recouse uwebber или uweb.ru?
@  FeNIX74 : (26 Декабрь 2014 - 12:54 ) )))
@  DimaTiunov : (08 Ноябрь 2014 - 02:08 ) Разные чаты, по причине разности CMS
@  SoverenG : (07 Ноябрь 2014 - 06:54 ) вфывфыв ;)
@  denissska : (07 Ноябрь 2014 - 01:25 ) light
@  klim_kr93 : (04 Ноябрь 2014 - 08:29 ) У кого есть PRO акаут на uppod ?
@  Master : (04 Ноябрь 2014 - 02:29 ) а кто выиграл домен .com и .net
@  Recouse : (29 Октябрь 2014 - 08:13 ) @Riko_s шаблон форума называется uWeb. Автор я
@  Riko_s : (26 Октябрь 2014 - 10:24 ) Мне ответит кто?
@  Riko_s : (25 Октябрь 2014 - 05:42 ) Как шаблон форума называется?
@  Dada : (21 Октябрь 2014 - 10:13 ) на сайте и на форуме разные чаты, но зачем?
@  superalexey : (13 Октябрь 2014 - 08:02 ) Как в плеере uppod вставить виде со сторонних сайтов не ретранслирую видео-файл?
@  DevCode : (10 Октябрь 2014 - 09:20 ) @Gameer как тонко подмечено :pivo:
@  06shurik : (07 Октябрь 2014 - 08:53 ) всем привет, нужна интеграция форуа IPB 3.4.6+DLE 10.3
@  Sashka777 : (06 Октябрь 2014 - 09:17 ) опа па есть кто живой ? Есть такой еще интерес может кто юзал домены .xxx - что это

Самый Популярный Контент


#81 Общие Правила создания тем и сообщений.

Написано iHunan 02 Октябрь 2014 - 15:32

Общие Правила создания тем и сообщений.

1.1. Перед созданием новой темы или сообщения следует внимательно ознакомиться с принятыми в этом разделе правилами.
1.2. Название темы должно быть максимально информативным, таким, чтобы уже из названия темы другим пользователям была приблизительно понятна Ваша проблема. В теле сообщения давайте развернутое описание вашей проблемы.
1.3. Не торопитесь создавать тему. Весьма вероятно, что ваш вопрос обсуждался ранее, либо существует тема обсуждения вашего вопроса/проблемы. При этом последовательно совершите поиск по нескольким подходящим ключевым словам. Например, если ваш вопрос связан с использованием Шаблона DLE, то следует искать по словам «DLE» и «Шаблон».
1.4. Если вы нашли тему, которая соответствует вашей проблематике, то не следует сразу же писать в ней свое сообщение. Весьма вероятно, что ваша проблема уже обсуждалась и решение найдено. Воспользуйтесь «версией для печати» и поиском по ключевым словам в ней. Непременно прочитайте шапку темы - в нее помещается полезная информация, специально для вас.
1.5. Создание дублей сообщений и тем запрещено. Если вы по ошибке создали тему или сообщение не в том разделе, где планировали (или осознали ошибочность выбора), не создавайте аналогичные темы или сообщения в другом разделе. Обратитесь к модератору - он перенесет вашу тему или сообщение, в правильный раздел.
1.6. Если вы увидели, что кто-то нарушает правила на форуме (создан дубликат существующей темы, агрессия либо флуд в сообщениях, неверное расположение темы и пр.), не стоит создавать новые сообщения об этом - просто нажмите кнопку "Жалоба", и Модераторы примут меры.
1.6.1. При ответе в существующую тему постарайтесь формулировать свой вопрос или ответ таким образом, чтобы он был понятен остальным участникам форума. Избегайте флуда, философствований, лирических отступлений. 
1.6.2. Сообщения, в которых присутствуют грамматические и/или синтаксические ошибки, могут вызвать негативную реакцию участников форума. Старайтесь писать грамотно.
1.7. Запрещается явная и скрытая грубость, хамство, оскорбления.
1.8. Запрещается использование нецензурной лексики, как явной, так и скрытой, в том числе и за спецсимволами.
1.9. Запрещается провоцирование конфликта, равно как и ответ на провокацию. Если вы считаете, что вас оскорбили (унизили, иным образом нарушили ваши права или Правила форума) сообщите об этом факте Модератору. Он примет необходимые меры к нарушителю.
1.10. В названии темы и сообщениях запрещено:
1.10.1. Замена русских букв похожими из других языков и наоборот;
1.10.2. Написание тем и сообщений ЗАГЛАВНЫМИ БУКВАМИ;
1.10.3. Написание сообщений прописными и строчными буквами вперемешку («вОТ тАкИм оБрАзОм») или буквами разных алфавитов («slеdующiм оbраzом»);
1.10.4. При публикации изображения на форуме, автоматически создается его превью с размером не более 500 пикселей по большей стороне. При этом не стоит размещать изображения, отснятые на современных фотоаппаратах, без существенного их уменьшения. Не забывайте о том, что некоторые просматривают форум с мобильных устройств, трафик на которых стоит существенно выше. В случае необходимости размещения оригинального, большого изображения, размещайте только ссылку на него. Кроме того, старайтесь выбирать такой формат данных, который при приемлемом качестве дает минимальный размер. Для скриншотов с преобладанием текста это GIF или PNG. Для красочных изображений - JPEG. Использование формата BMP для скриншотов запрещено! Если того не требует специфика темы, уважайте других и избегайте использования формата BMP.
Данный пункт Правил (за исключением запрета на BMP) не распространяется на разделы и темы, специально предназначенные для размещения больших картинок. Регулирование размера картинок в таких разделах и темах происходит в соответствии с Правилами этих разделов.
1.10.5. Запрещено использование сленга и сокращений в названии темы. Следует писать «DLE на Шаблон», а не «DLEна Шаб или тема».
1.11. Запрещено создание тем или сообщений, не предполагающих обсуждения, или предполагающих личную переписку с конкретным участником форума, в т.ч. публикация объявлений рекламного и иного характера. Для личной переписки используйте систему личных сообщений. 

1.12. Запрещается подъем темы. А именно, публикация сообщений, имеющих целью лишь подъем темы в списке и при этом не несущих смысловой нагрузки, например: «неужели никто не знает?» или «ап!».
1.13. Запрещены неинформативные названия тем, например: «Памагите!», «У меня проблема!», «Крик души!» и т. п. Также запрещено в теме сообщения писать личные пожелания, например: «Настройка DLE. Срочно!!!». Если участники форума знают ответ на Ваш вопрос, то они ответят независимо от того «срочно» вам это надо или нет.
1.14. Запрещены названия тем и сообщения перегруженные знаками препинания (более трех подряд), например: «Как настроить сайт????????».
1.15. Запрещен ответ без текста (смайлом, включая текстовые смайлы). А также ответы состоящие только из смайлов, либо перегруженные ими (более трех смайлов в одном сообщении) во всех разделах.
1.16. Запрещено обсуждение, не связанных между собой вопросов в одной теме.
1.17. Запрещено отклонение от темы. Например, в теме, посвященной Eleanor CMS запрещено обсуждение работы других CMS.
1.18. Запрещено злоупотребление цитированием (оверквотинг, overquoting). Не нужно полностью цитировать сообщения оппонента - достаточно выделить главные моменты и нажать на кнопку 
1.19. Категорически запрещается поиск и публикация ключей, крэков и иного Вареза программ разработчиков ПО, Варез программ которых запрещен на форуме.
1.20. Категорически запрещается обсуждать действия представителей Администрации. Если вы не согласны с действиями представителей Администрации, обратитесь к любому Модератору раздела, в котором произошёл инцидент, или к любому Супермодератору. Жалоба будет рассмотрена, и в случае признания Вашей жалобы обоснованной к представителю Администрации будут применены меры дисциплинарного воздействия. В случае если вы не получили ответ на Вашу жалобу от Модератора или Супермодератора в течение двух или более дней, обратитесь в специальную тему (Обжаловать некорректные действия представителей Администрации).
1.21. Любые материалы эротического и порнографического содержания могут быть удалены с форума без предупреждения, на усмотрение и в соответствии с моральными устоями модераторов.
1.22. Публикация частных объявлений с целью покупки, продажи или обмена сайтами, скриптами и прочего, разрешена только в разделах "Купю, продам"Ведение коммерческой деятельности допускается только в разделе "Коммерческие услуги", получить информацию об условиях размещения объявлений в данном разделе можно на странице с коммерческим предложением.
1.23. При размещении ссылок использование специальных сервисов для их сокращения запрещено.
1.24. Публикация реферальных материалов (ссылок, купонов и кодовых слов) в любом виде запрещена и приравнивается к коммерческой деятельности.




#29 Пишем свой модуль для DLE - подробная инструкция

Написано ufh2 29 Сентябрь 2014 - 18:34

В этой статье я постараюсь очень подробно разобрать процесс создания простого модуля для DLE с кешированием и собственными шаблонами. Сначала разберём модуль без шаблона, а после дополним его собственным шаблоном. Итогом статьи будет работоспособный модуль без админки, вызываемый в любом месте сайта через строку подключения.

 

 

Вступление

 

На написание данного поста меня натолкнул один вопрос на сайте dle-faq.ru. Точнее заставил задуматься, почему люди усложняют себе жизнь постоянными правками движка там, где это по большому счёту не нужно. Причина оказалась очень проста - мало кто умеет и знает как правильно написать свой модуль для DLE, хотя это довольно таки просто на самом деле.
Сразу стоит оговориться, что я человек, имеющий слабое знание даже основ php (что не мешает мне делать качественные модули для dle), поэтому статья для опытного программиста скорее всего не будет представлять интерес, а вот для новичка - будет крайне полезна.

 

 

С чего начать?

 

                                                        71a0e3fa38028592351ad79062937a8e.png

Конечно же начинать лучше с идеи или исходя из конкретной потребности!
В нашем случаи будем рассматривать необходимость вывода в профиле пользователя в любом месте сайта количество новостей определённого пользователя в определённых категориях.
Таким образом мы уже определили пару переменных, которые будут в нашем модуле - это имя пользователя и id категории
Естественно результат работы модуля лучше кешировать т.к. лишние запросы в БД нам совершенно не нужны. Так же нам не нужен шаблон модуля, но для примера я приведу код модуля и с шаблоном, т.к. правильное подключение шаблона тоже очень важно и при более или менее сложном модуле экономит много ресурсов за счёт уменьшения кода самого модуля. 
Круг задач определён, можно приступать к написанию кода. Вспоминаем что у DLE есть API, и вполне логичным кажется использование готового API для этой задачи, но я крайне не рекомендую вообще его использовать даже (особенно!) в сложных модулях.

 

 

Почему не стоит использовать DLE_API

Всё просто - это крайне кривая штука, которая не развивается аж с версии 8.2 (на момент написания текущая версия движка - 10.0 и по сравнению с предыдущей версией пофиксили лишь баг с невозможностью регистрации пользователя через api, никаких доработок не производилось).

 

                                          a4f199d0a23bba27f782bc494678af2a.png

 

Использование dle_api значительно увеличивает расход оперативной памяти, что совсем, совсем не хорошо.

Методы, описанные в dle_api расходятся с оригинальным функционалом.
Общий совет: если вам нужна какой то метод или функция из dle_api - просто скопируйте её в свой модуль.
Возможно моих скромных наработок хватит на набор методов и функций, которые можно будет использовать в дальнейшем, но это тема для отдельной статьи.

 

 

Пишем код

Прежде, чем писать любой модуль (кроме файлов, отвечающих за ajax), нужно в обязательном порядке, в самом начале прописать одну строку:

if (!defined('DATALIFEENGINE')) die("Error!");

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


Конфигурация и кеширование

Я решил остановиться на этом моменте подробно, т.к. это один из самых частых вопросов, которые задаются, если человек решил написать свой модуль.

Конфигурацию модуля лучше всего записывать в массив - это даст возможность беспроблемного создания кеша для каждого вызова модуля с разным набором конфигурации, в нашем случаи для каждого пользователя. 
Объясню почему. Допустим мы написали модуль, он кешируется, и строка создания кеша выглядит следующим образом:

create_cache($var1.$var2.$var3.$var4, $myModule, $config['skin']);

где:
$var1.$var2.$var3.$var4 - переменные модуля.
$myModule - текст, который должен записаться в кеш.

Тут всё замечательно ровно до тех пор, пока не понадобится добавить новую переменную. Как правило автор просто забывает прописать эту новую переменную в строку формирования и получения кеша и потом гадает над причинами неработоспособности или неправильной работы модуля (что негативно сказывается на его психологическом равновесии). Таким образом конфиг модуля лучше писать так:

$myConfig = array(
    'var1' => $var1,
    'var2' => $var2,
    'var3' => $var3,
    'var4' => $var4
);
$cacheName = md5(implode('_', $myConfig));

а строка создания кеша будет такая:

create_cache($cacheName, $myModule, $config['skin']);

Таким образом нам вообще не придётся лазить в этот код никогда, всё будет происходить автоматом.

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

 

9329665c9d9201e0f1be7dcb56de72a2.png

 

В DLE есть много дефолтных префиксов, но нас интересуют лишь те, которые автоматически чистятся при определённых условиях, поэтому приведу список таких префиксов:

  1. news, rss, comm - при добавлении новости или комментария.
  2. news, related, tagscloud, archives, calendar, topnews, rss - при добавлении новости.
  3. comm - при редактировании комментария.
  4. news, rss - при редактировании новости, при выcтавлении рейтинга
  5. news, full, comm, rss - при массовом удалении комментариев
  6. news, full, comm, tagscloud, archives, calendar, rss - при удалении новости

Значит в нашем случаи нужен префикс archives т.к. кеш модуля надо сбрасывать только при добавлении или удалении новости (он мне просто понравился, можно использовать и calendar и rss). Код конфига и создания кеша тут приводить не буду дабы не захламлять статью, весь код модуля можно посмотреть ниже.

Текст кеша - это результат работы модуля, который будет записан в кеш, тут всё просто.
ID кеша или его имя - сюда лучше всего передавать переменную $cacheName, о которой писалось выше и переменную $config['skin'] - это для того, чтобы иметь разные кеши для разных шаблонов сайта.
Суффикс кеша - может принимать два значения true или false, если передано значение true, то для каждой группы пользователей будет создаваться свой кеш-файл, это бывает нужно, если разным группам пользователей нужно показывать разный контент.



Универсальная заготовка для модуля с кешем, без шаблона

Учитывая всё выше написанное мы можем создать простую заготовку для модуля, который будет использовать кеш, но не будет в своей работе использовать шаблон. Всего 15 строк кода! 

<?php
if (!defined('DATALIFEENGINE')) die("Go fuck yourself!");
$myConfig = array(
    'cachePrefix' => !empty($cachePrefix) ? $cachePrefix : 'archives',
    'cacheSuffix' => !empty($cacheSuffix) ? $cacheSuffix : false
);
$cacheName = md5(implode('_', $myConfig));
$myModule = false;
$myModule = dle_cache($myConfig['cachePrefix'], $cacheName . $config['skin'], $myConfig['cacheSuffix']);
if (!$myModule) {
    $myModule = 'Hello World!'; // Результат работы модуля.
    create_cache($myConfig['cachePrefix'], $myModule, $cacheName . $config['skin'], $myConfig['cacheSuffix']);
}
echo $myModule;
?>

Всё довольно просто, правда?



Запрос в БД и проверки.

Ранее мы определили, что нам потребуется две переменные - имя юзера и id категории, а для выборки нужных значений нам необходимо будет составить запрос в БД. 
Заведём две переменные: $userName и $caId - эти переменные будут передаваться в модуль через строку подключения.
Однако для нормальной работы модуля нужно проверять данные (ведь от кривых рук спасения практически не существует).



Небольшое отступление
Я советую использовать однообразный тип переменных модуля и переменных конфига модуля, т.е. 
'userName' => $userName,
или
'user_name' => $user_name,
выглядит гораздо более читабельным, чем 
'user_name' => $userName,
Однако использование нижней черты я не практикую в dle, т.к. разок из-за этого сработал фильтр в dle и модуль не отработал, хотя возможно это лишь единичный случай.


Самая простая проверка - условие if else:

$userName = !empty($userName) ? $db->safesql(strip_tags(stripslashes($userName))) : false;

т.е. мы просто проверяем передана ли переменная через строку подключения, если передана (т.е. не пустая) - прогоняем её значение через $db->safesql - это обезопасит нас от "неправильных" логинов пользователей, т.к. значение переменной будет вставлено в запрос к БД.
Переменную $catId фильтровать не нужно, т.к. она кроме как цифрой никак не задаётся и глупо писать что-то другое в строке подключения. Однако должно быть какое-то дефолтное значение, поэтому проверка нужна и её мы можем прописать непосредственно в конфиге модуля:

$myConfig = array(
    ...
    'catId' => !empty($catId) ? $catId : '1', // По умолчанию id=1
    ...
);

С переменными разобрались, теперь запрос в БД.
В нашем случаи необходимо всего одно значение из БД и использовать полноценный запрос, а потом его разбирать - не имеет смысла, поэтому мы будем использовать метод super_query, он по умолчанию возвращает одномерный массив.
Наш итоговый запрос будет таким:

$row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE category = '".$myConfig['catId']."' AND autor = '".$myConfig['userName']."'");

Где:
$myConfig['catId'] - id ктегории.
$myConfig['userName'] - имя пользователя. 
ниже пропишем отладочный код:

echo "<pre>"; print_r($row); echo "</pre>";

Вызов модуля осуществляем так:

{include file="engine/modules/mymodule.php?&userName=user&catId=5"}

Если переменные указаны правильно - результатом отладки будет массив с данными, состоящий из одного элемента count

Array (
    [count] => 155
)

где: 
155 - количество новостей у указанного пользователя в указанной категории

Теперь можно вывести результат по нормальному:

$count = ($row['count'] > 0) ? $row['count'] : 'новостей нет';
$myModule = $count;
Тут следует отметить, что если в кеш будет записан один нолик - dle его не будет "считать кешем" и создаст новый, поэтому нужно писать туда что-то, отличное от нуля.


Итоговый код нашего модуля будет таким:

<?php
if (!defined('DATALIFEENGINE'))    die("Go fuck yourself!");
$userName = !empty($userName) ? $db->safesql(strip_tags(stripslashes($userName))) : false;
$myConfig = array(
    'userName' => $userName,
    'catId' => !empty($catId) ? $catId : '1',
    'cachePrefix' => !empty($cachePrefix) ? $cachePrefix : 'archives',
    'cacheSuffix' => !empty($cacheSuffix) ? true : false
);
$cacheName = md5(implode('_', $myConfig));
$myModule = false;
$myModule = dle_cache($myConfig['cachePrefix'], $cacheName . $config['skin'], $myConfig['cacheSuffix']);
if (!$myModule) {
    $row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE category = '" . $myConfig['catId'] . "' AND autor = '" . $myConfig['userName'] . "'");
    $count = ($row['count'] > 0) ? $row['count'] : 'новостей нет';
    $myModule = $count;
    create_cache($myConfig['cachePrefix'], $myModule, $cacheName . $config['skin'], $myConfig['cacheSuffix']);
}
echo $myModule;
?>

Всего 20 строк кода - и получаем готовое решение конкретной проблемы.
Код модуля вполне рабочий и его можно использовать в реальном проекте, однако приведён этот код для ознакомления с принципами правильного написания модулей для DLE.

На этом можно было бы закончить, но выше я обещал показать код модуля с использованием собственного шаблона.



Универсальная заготовка для модуля с кешем и собственным шаблоном

В целом тот же модуль, что мы написали без шаблона вполне легко перетащить и на "шаблонный" модуль, однако в нашем случаи это не имеет смысла, т.к. модуль выводит всего одну цифру. Собственный шаблон в модуле лучше использовать когда необходимо вывести несколько значений с разным оформлением в разных местах сайта.
Не буду расписывать что к чему, т.к. статья уже и так довольно таки большая, а лучше оставлю два листинга кода, один без комментариев - для использования в качестве заготовки:

<?php
if (!defined('DATALIFEENGINE'))
    die("Go fuck yourself!");
$userName = !empty($userName) ? $db->safesql(strip_tags(stripslashes($userName))) : false;
$myConfig = array(
    'userName' => $userName,
    'catId' => !empty($catId) ? $catId : '1',
    'template' => !empty($template) ? $template : 'default',
    'cachePrefix' => !empty($cachePrefix) ? $cachePrefix : 'news',
    'cacheSuffix' => !empty($cacheSuffix) ? true : false
);
$cacheName = md5(implode('_', $myConfig));
$myModule = false;
$myModule = dle_cache($myConfig['cachePrefix'], $cacheName . $config['skin'], $myConfig['cacheSuffix']);
if (!$myModule) {
    if (file_exists(TEMPLATE_DIR . '/' . $myConfig['template'] . '.tpl')) {
        if (!isset($tpl)) {
            $tpl = new dle_template();
            $tpl->dir = TEMPLATE_DIR;
        } else {
            $tpl->result['myModule'] = '';
        }
        $tpl->load_template($myConfig['template'] . '.tpl');
        $row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE category = '" . $myConfig['catId'] . "' AND autor = '" . $myConfig['userName'] . "'");
        $count = ($row['count'] > 0) ? $row['count'] : 'новостей нет';
        $tpl->set('{tag_name}', $count);
        $tpl->compile('myModule');
        $myModule = $tpl->result['myModule'];
        create_cache($myConfig['cachePrefix'], $myModule, $cacheName . $config['skin'], $myConfig['cacheSuffix']);
        $tpl->clear();
    } else {
        $myModule = '<b style="color:red">Отсутствует файл шаблона: ' . $config['skin'] . '/' . $myConfig['template'] . '.tpl</b>';
    }
}
echo $myModule;
?>
 
А второй с подробными комментариями, для понимания что-к-чему:
 
<?php

/**
 * НазваниеМодуля - Пример реализации простого модуля для DLE с кешированием и подключением собственных шаблонов вывода.
 * =======================================================
 * Автор:	Юзернейм 
 * URL:  	http://site.ru/
 * ICQ:	 	111222 
 * email:	username@site.ru
 * =======================================================
 * Файл:  название.этого.файла.php
 * -------------------------------------------------------
 * Версия: X.X.X (01.01.2013)
 * =======================================================
 */

// Главная строка.
// Без этой строчки любой пользователь может получить прямой доступ к файлу модуля и передать туда свои переменные, что чревато элементарным взломом сайта.

if (!defined('DATALIFEENGINE')) die("Go fuck yourself!");

// Пример определения переменной имени пользователя
$userName = !empty($userName) ? $db->safesql(strip_tags(stripslashes($userName))) : false;

// Конфиг модуля
// Лучше делать массивом - тогда будет проще в нём ориентироваться в дальнейшем и не нужно будет добавлять новые переменные в формирование кеша.

$myConfig = array(
	// Имя пользователя
	'userName' => $userName,

	// ID категории новости
	'catId'    => !empty($catId) ? $catId : '1',

	// Шаблон, через который будет выведено содержимое модуля
	'template' => !empty($template) ? $template : 'default',

	// Префикс кеша - довольно важная настройка, если нужно автоматически очищать кеш при определённых событиях (как правило достаточно префикса news)
	/**
	 * Префиксы, наличие одного из которых гарантирует автоматическую очистку кеша при определённых условиях:
	 * news, rss, comm                                             - при добавлении новости или комментария.
	 * news, related, tagscloud, archives, calendar, topnews, rss  - при добавлении новости.
	 * comm                                                        - при редактировании комментария.
	 * news, rss                                                   - при редактировании новости, при выcтавлении рейтинга
	 * news, full, comm, rss                                       - при массовом удалении комментариев
	 * news, full, comm, tagscloud, archives, calendar, rss        - при удалении новости
	 */
	'cachePrefix' => !empty($cachePrefix) ? $cachePrefix : 'news',

	// Суффикс кеша - если задать его, то бдет создаваться отдельные кеши для каждой группы пользователей.
	'cacheSuffix' => !empty($cacheSuffix) ? true : false,
	
);

// Имя кеш-файла.
// Формируется из md5 конфига - это самый оптимальный вариант, т.к. уменьшает количество ненужных операций.
$cacheName = md5(implode('_', $myConfig));

// Присваиваем переменной, выводящей работу модуля в шаблон, значение false перед началом работы модуля.
$myModule = false;

// Пытаемся подцепить значение из кеша (если кеширование на сайте включено и если модуль создал кеш - будет выведено содержимое кеша)
$myModule = dle_cache($myConfig['cachePrefix'], $cacheName.$config['skin'], $myConfig['cacheSuffix']);

if (!$myModule) {
	// Если в кеше ничего нет - запускаем работу модуля	
	if(file_exists(TEMPLATE_DIR.'/'.$myConfig['template'].'.tpl')) {
		// Если файл шаблона модуля существует - работаем дальше

		// Проверяем определена ли переменная $tpl и класс dle_template
		if(!isset($tpl)) {
			$tpl = new dle_template();
			$tpl->dir = TEMPLATE_DIR;
		} else {
			$tpl->result['myModule'] = '';
		}

		// Загружаем шаблон
		$tpl->load_template($myConfig['template'].'.tpl');

		// Выполняем нужный нам запрос в БД.
		$row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE category = '".$myConfig['catId']."' AND autor = '".$myConfig['userName']."'");

		// Определяем теги шаблона
		$count = ($row['count'] > 0) ? $row['count'] : 'новостей нет';

		$tpl->set('{tag_name}', $count);

		// Компилим шаблон
		$tpl->compile('myModule');
		// Записываем 
		$myModule = $tpl->result['myModule'];

		// Записываем результат работы в кеш.
		create_cache($myConfig['cachePrefix'], $myModule, $cacheName.$config['skin'], $myConfig['cacheSuffix']);

		$tpl->clear();
		
		
	} else {
		// Если файла с шаблоном модуля нет - скажем об этом юзеру в удобном виде, а не на фоне пустой белой страницы
		$myModule = '<b style="color:red">Отсутствует файл шаблона: '.$config['skin'].'/'.$myConfig['template'].'.tpl</b>';
	}
} 

// Выводим результат работы модуля
echo $myModule;
?>
 

Вот теперь пожалуй можно закончить статью!

Если будет время, идея и желание - я постараюсь написать про создание более сложного модуля. 
А пока жду ваших вопросов и мнений.

 

 

Автор: ПафНутиЙ


  • Ember, swamp и easyarts это нравится


#2 Ukraine - Профессиональный и надежный платный хостинг сайтов

Написано Ember 10 Сентябрь 2014 - 16:28

ukraine (1).jpg

 


  • Recouse, Pan_Oleksandr и Renskiy это нравится


#154 [Халява] Ключи активации для Light-CHat by Sander

Написано Kota 02 Ноябрь 2014 - 22:40

Пишем домен, получаем ключик и радуемся :3

Я говорил про ключ активации.

Сам чатик ищите сами. Так как я его сливать не собираюсь.


  • iHunan, denissska и Miltongom это нравится


#458 Хак для Dle 10.4

Написано Qnut 27 Февраль 2015 - 23:40

Чем custom не угодил


  • Tesak и Madjack это нравится


#197 Услуги по DLE от Gameer

Написано Gameer 08 Ноябрь 2014 - 06:31

Мои услуги:

 
I. Шаблоны :

  • Создание уникального шаблона - цена зависит от ТЗ. (Минимальная сумма 90$).
  • Адаптация шаблона до актуальной версии DLE - 2$.
  • Адаптация любого шаблона на DLE - от 10$.

II. Модули :

  • Создание модуля - цена зависит от ТЗ. (Редко берусь за заказы на модули).
  • Адаптация модуля под актуальную версию DLE - от 4$.
  • Установка модуля - от 2$.

III. Текст :

  • Рерайт текста 1000 символов - 20 рублей.
  • Копирайт текста 1000 символов - 40 рублей.

IV. Оптимизация :

  • Аудит сайта - 5$
  • Полная оптимизация DLE - 12$

V.​ Задачи :

  1. Решение задач на С++ - цена зависит от сложности задачи. 

 

Копипастом не занимаюсь! Файловиком не иду. Под заказ модули / хаки пишу очень редко! Можете подкинуть идею, и может сделаю для общей продажи.

​Мой сайт: igameer.ru
 
Связь со мной Email: gameer@mail.ua или qcodes.official@gmail.com | Skype: gameerblog | VK: http://vk.com/i_loves_ac_dc
 
Не было еще ни одного отрицательного отзыва! Постоянным клиентам скидки!
 
Так же имею хорошую репутацию на talkwebber, coderlaba, nevex smile_mini.gif

 

Читать отзывы можете здесь : http://talkwebber.ru/topic/36845-uslugi-po-dle-ot-gameera/

 

темка создана для отзывов, все вопросы по контактам


  • Recouse и DaNSims это нравится


#181 [Халява] Ключи активации для Light-CHat by Sander

Написано Kota 05 Ноябрь 2014 - 21:08

play4cod.ru

Заранее спасибо!

play4cod.ru Ваш ключ активации: 1A77C-4AB89-74B94-BE7BC-9BEBD

 

incodes.ru

За ранее спасибо)

incodes.ru Ваш ключ активации: 05784-26A6D-B1053-ACFF8-59ACE

 

На timedle.ru прошу пожалуйста.

timedle.ru Ваш ключ активации: D3841-2A27C-2B190-ABFEE-9C155


  • andros0789 и denissska это нравится


#121 Как сделать надпись на постере через доп.поле?

Написано Shnapik 14 Октябрь 2014 - 18:04

Всем привет, подскажите как сделать надпись на постере что бы выводился через доп.поле?

Заранее спасибо!

Как сделать надпись на постере через доп.поле?

Создаешь например блок возле картинки (основы html/css должны присутствовать). Далее выравниваешь его как нужно, например чтобы он был поверх картинки, на скрине выставлен также фон и внешнее оформление. Прописываешь текст внутри блока, выравниваешь текст как нужно. Далее заменяешь текст в блоке на код доп. поля и сам блок оборачиваешь в теги доп. поля, чтобы он не выводился, если поле не заполнено.


  • Shnapik и Lamro это нравится


#11 Bounty v.1 - рейтинг пользователя (DLE 10.x)

Написано MrJack 19 Сентябрь 2014 - 08:30

1410973074_0.jpg

 

Была необходимость создать обновленную копию очень старой и заброшенной разработки (http://prowebber.ru/...tariev-v51.html), к  которой уже многие относятся скептически. Но на моем сайте это пользуется большой популярностью уже много лет. Но посмотрев код, я решил сделать более по человечески.  
 
Особенности:
 
- Не требует НИКАКИХ правок движка
- Полное кеширование модуля средствами DLE 
- Поддерживает AJAX комментарии
- Есть выбор использовать картинки или выводить рейтинг средствами CSS
- Рейтинг основывается на сумме комментариев и новостей пользователя
- Рейтинг администраторов не учитывается (всегда 100%)
- Вывод текстового статуса пользователя
- Установка занимает пару минут
- Не требует установки (просто скопируйте файлы)  и подключите в шаблоне
- Ничего лишнего, никаких издевательств над SQL
2.jpg
3.jpg
4.jpg
 
настройка:
 
В шаблоне \templates\{THEME}\bounty.tpl
 
Доступны следующие теги:
 
{stat_pic} - вывод рейтинга картинкой
{text_stat} - вывод текстового статуса пользователя
{user_level} - вывод уровня пользователя (от 0 до 100)
 
СКАЧАТЬ с Яндекса: https://yadi.sk/d/iVkSzsUBbXJiQ
Автор: MrJack
Распространение: бесплатно
 
P.S. Жду ваших предложений к новой версии.
 
 
 
 

  • Recouse и MrJack это нравится


#86 Помогите решить проблему с поиском на сайте DLE 10.0

Написано Sashka777 04 Октябрь 2014 - 19:23

dle-news.ru/extras/uroki/urok9/urok9.html - почитайте здесь там все расписано


  • sokoloka это нравится


#63 Webmoney

Написано sokoloka 01 Октябрь 2014 - 16:28

А на webmoney при переводе денег на другой кошелёк не нужно же идентификация (то есть без всякого подтверждения личности, можно сделать перевод на другой кошелёк)? 

P.S Просто не пользуюсь электронными кошельками, а тут мне приходится связываться с ними :(


  • SAMRAT это нравится


#58 Пишем свой модуль для DLE - подробная инструкция

Написано swamp 01 Октябрь 2014 - 10:24

И к чему твой пост, автор же указан?

Не зря ж Dexen лайкнул


  • ufh2 это нравится


#5 Услуги по CMS DLE

Написано MStyle 13 Сентябрь 2014 - 13:21

Работа с CMS:

  • Установка и настройка Data Life  - 3$
  • Перенос сайта на другой хостинг - 8$
  • Обновление движка DLE до актуальной версии - 3$

Работа с шаблонами:

  • Установка шаблона на DLE - 1
  • Поиск шаблона под ваш проект (чистка от мусора,ссылок и прочего) - 3$
  • Перевод шаблонов DLE- от 4$
  • Поиск и устранение ошибок в шаблоне  - от 3$

Прочие услуги:

  • Установка модулей,хаков на DLE - от 1$
  • Поиск модулей, хаков(DLE) - 3$
  • Создание сайта под ключ. - цена договорная
  • Адаптация html шаблона под Dle. - цена договорная
  • Адаптация шаблона с разных cms на DLE - цена договорная

skype - mstyle28

 

всегда готов пойти на встречу клиенту,постоянным клиентам скидки

 

ОТЗЫВЫ


  • korkunov66 это нравится


#424 Требуется Хак для Dle 10.4

Написано Kota 13 Февраль 2015 - 18:02

Нужен хак "Рейтинг 10 звезд для Dle10,4" с общим баллом и кол проголосовавших для кино-сайта. 
Цена: ЛС

7 $


  • morozko это нравится


#419 Требуется Хак для Dle 10.4

Написано Qnut 07 Февраль 2015 - 19:45

 

10$, скайп coderlaba.com, vk.com/u_pringles

Дороговато для хака, ну буду иметь ввиду ждем дальнейших предложений.

 

В одни руки? не думаю.


  • Tesak это нравится


#279 Psxtorrent(помогите с модулем)

Написано webil 21 Декабрь 2014 - 22:05


подозреваю конфликт скриптов, либо отсутствие шаблона как такового, попробуйте скачать этот же модуль но с другого сайта

а кодировка может влиять на это?


не, это тут не причем, если бы была проблема в этом вы бы видели либо ошибку, либо кракозябры
  • Orochimaru это нравится


#170 [Халява] Ключи активации для Light-CHat by Sander

Написано Kota 04 Ноябрь 2014 - 17:00

animirok.ru  :coffee:

Ваш ключ активации: 66614-2AC1F-FD666-19EBE-65F5F


  • danil031997 это нравится


#167 [Халява] Ключи активации для Light-CHat by Sander

Написано Zohan 04 Ноябрь 2014 - 14:36

ingfilm.ru заранее спасибо!


  • ingushmen это нравится


#139 Адаптация Thanks v2.2.1 под dle 10.3

Написано Dada 26 Октябрь 2014 - 23:04

merci.png

 

Привет всем!

 

Я скачал  с офф.сайта модуль thanks v.221 от MSW для dle 10.2 и поставил на свой сайт на локалке, который управляется на dle 10.3, но модуля нигде нe видно, нету кнопки спасибо в fullnews и shortnews ничего нету в userinfo, а так же нету дополнительного поля при добавлении новости. все делал по инструкции и не мог ошибиться так как тут особой возни нету всего 6 пунктов.

Скрытый текст

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

 

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

Прикрепленные файлы


  • Recouse это нравится


#134 Как сделать надпись на постере через доп.поле?

Написано FlaZeR 20 Октябрь 2014 - 03:50

ну,конечно. Как можно забыть про z-index :)


  • Zohan это нравится