Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru Модули для DLE IF - Условия в шаблоне v3 для DLE 9.x - 11.x

IF - Условия в шаблоне v3 для DLE 9.x - 11.x


     12.03.2016    Модули для DLE    4045    41

Краткая информация о модуле (хаке)

Автор: Gameer
Версия DLE: DLE 9.x - 11.x
Контакты: http://gameer.name/feedback.html
Цена: 10$
Представляю вашему внимаю хак с помощью которого вы сможете делать разные проверки на подобии те что в PHP. Хак добавляет теги : if, elif, else - для того что бы выводить информацию заключенные в них в зависимости от результата условия.

Особенности хака:
- Поддержка актуальных версий. Поддерживает используемые версии движка от версии 9.0 и выше.
- Множественное использование. Можете использовать условия сколько раз угодно! Ограничений нет!
- Полное соответствие тегам PHP. В версии v3 теперь есть возможность использовать в одной проверке теги "&&" и "||".

Требования к установке :
  • Версия DLE: 9.0 и выше
  • Поддерживаемая кодировка: UTF-8
  • Версия php: 5.4 и выше
  • IonCube Loader: v.5.0 и выше

Поддержка сравнений :
  • > - Больше
  • = - Больше или равно
  • <= - Меньше или равно
  • != - Не равно
  • = - Равно
  • ~ - Находится ли искомое значение в исковом тексте
  • !~ - Не находится ли искомое значение в исковом тексте

Поддержка конструкций :
  1. [if *условия*] текст [/if]
  2. [if *условия*] текст [else] текст [/if]
  3. [if *условия*] текст [elif *условия*] текст [/elif][/if]
  4. [if *условия*] текст [elif *условия*] текст [/elif][else] текст [/if]
  5. [if *условия*] текст [elif *условия*] текст [/elif][elif *условия*] текст [/elif][elif *условия*] текст [/elif][elif *условия*] текст [/elif][else] текст [/if]

Примеры использования :
Вывод текста "Горячая новость если рейтинг новости равен или больше 5 и прочитали больше 100 человек или же новость набрала больше 20 комментариев.
[if rating>=5 && news_read>100 || comm_num>20]Горячая новость[/if]
Вывод дополнительного поля с плеером если в нем есть vk.com или moowalk.co если их не найдено, выведем другое доп поле которое содержит Трейлер
[if xf_video~vk.com || xf_video~moowalk.co][xfvalue_video][else][xfvalue_trailer][/if]
Так же в новой версии добавлена поддержка работы с датой, к примеру выведем что новость добавлена сегодня или вчера
[if date=today]Сегодня[elif date=days-1]Вчера[/elif][else]Старые новости[/if]
Для новостей что добавлены сегодня выведет - "Сегодня", для вчерашних - "Вчера" а для всех остальных - "Старые новости". Кроме этого можно передавать саму дату, к примеру
[if date=2016-03-11]Кажется это было очень давно[/if]

Дополнение :
Так же, если встречаются в сравнение два string (строк) и используется такие теги как
>, >=, <=, <
то они будут сравниваться по длине. Так же, для строки можно задавать сравнение по длине, с помощью этих сравнение
>, >=, <=, <
. К примеру
[if title>40]{title limit="40"}...[else]{title}[/if]
- эта конструкция выведет укороченный заголовок до 40 символов с троеточием если его длина больше 40 символом в другом случае выведет полный заголовок новости. Круто, правда ? И никаких доп правок в движке не нужно делать.
Скриншоты :

Цена : 10$
Купить в автоматическом режиме: http://gameer.name/store/24
Список обновлений : http://gameer.name/store/24
Как купить : http://gameer.name/blog/25
Условия покупки : http://gameer.name/buy.html
Контакты : http://gameer.name/feedback.html

Комментарии пользователей (41)

lutskboy
3

579 | 105

lutskboy - 30 августа 2015 17:56 - Юзер

вроде такое Sander делал
У этого функционал больше?
А вот это как применять?
~

Gameer
233

1150 | 399

Gameer - 30 августа 2015 18:02 - Юзер

lutskboy, Вы можете купить и сопоставить эти модули, я не знаю как у Sander'a. Если нужно, я могу предоставить ему модуль что бы не возникало вопросов. Да, функционала тут побольше, здесь есть elseif и else а так же возможность сразу несколько условий в if и elif. А так же взаимодействие с ячейками пользователя и так же возможность использовать условия в кратком или полном описании.

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

lutskboy
3

579 | 105

lutskboy - 30 августа 2015 18:23 - Юзер

Вы можете купить и сопоставить эти модули

А нет, спасибо. Мне просто интересен функционал. Вот и спрашиваю.
Мне не нужно. У меня на сайте файлы шаблона php а не tpl.

Sokolov
92 | 9

Sokolov - 13 сентября 2015 10:05 - Юзер

Идея классная, упрощает многие действия. Возможно скоро куплю!

ПафНутиЙ
1073

3424 | 2437

ПафНутиЙ - 6 декабря 2015 22:20 - Админ

Хак из разряда "делаем шаблонизатор DLE похожим на нормальный" smile
Наверняка полезная штука!

Каков вопрос - таков и ответ. Просто помните об этом.

beoro
4

beoro - 18 декабря 2015 23:23 - Юзер

ПафНутиЙ,

не вижу нечего нормально в нативизации шаблонизатора ДЛЕ.

beoro
4

beoro - 18 декабря 2015 23:34 - Юзер

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

ПафНутиЙ
1073

3424 | 2437

ПафНутиЙ - 21 декабря 2015 19:42 - Админ

Интересно увидеть конструкцию на шаблонизаторе DLE, которой позавидует смарти smile
заодно с тестами производительности.

Каков вопрос - таков и ответ. Просто помните об этом.

beoro
4

beoro - 23 декабря 2015 16:08 - Юзер

чем тебе не устраивает



$temlates->load_template('images.tpl');

foreach($row['images'] as $image_key){
      preg_match(
        "'\{%row-images\%}(.*?)\{%/row-images\%}'si",
             $temlates->copy_template,
         $row_images
      );

     $replace = array(
              '{image}' => $image_key['image']
      );

     $temlates->copy_template = strtr($temlates->copy_template, $replace);
     $temlates->copy_template = preg_replace(
        "'\{%row-images\%}(.*?)\{%/row-images\%}'si",
        "\\1\n".$row_images[0],
        $temlates->copy_template
       );
}

$temlates->set_block("'\{%row-images\%}(.*?)\{%/row-images\%}'si", "");

шаблон

{%row-images%}
<src ='{image}'>
{%/row-images%}


ПафНутиЙ
1073

3424 | 2437

ПафНутиЙ - 23 декабря 2015 17:46 - Админ

Не нужно путать зависть и ужас.

И сколько раз нужно скопипастить этот код, что бы выводить картинки в custom, topnews, relatednews, shotrstory и fullstory ?

Если не ошибаюсь, в смарти такая конструкция пишется в 4 строки.

$tpl->assign(['images' => $row['images']]);

И в шаблоне:

{foreach $images as $image}
    <img src="{$image}">
{/foreach}

При этом мы имеем все преимущества этого шаблонизатора без необходимости копипасты и костылей, чем собственно ваш код, как и мой и является, когда нужно реализовать что-то более менее удобное в DLE.

Каков вопрос - таков и ответ. Просто помните об этом.

beoro
4

beoro - 23 декабря 2015 21:52 - Юзер

ПафНутиЙ,

Смарти грузит ОЗУ и медленее в пять раз, я тебе показал пример, и вообще что бы не копипастить можно организовать функцию и выводить без нативизации и вывода из компилированного php-шного файла

Iceman
3

71 | 6

Iceman - 10 июля 2016 09:18 - Юзер

Подскажи, что и куда добавить, чтоб этот ХАК работал в модуле LinkEnso PRO.

ZK413
13

ZK413 - 27 января 2017 05:08 - Юзер

beoro, Smarty медленнее в 5 раз?! о0 Можно результаты тестов?
На хабре есть тестирование "Smarty vs. Twig: производительность". Есть более свежее тестирование на pvsm "Fenom — yet another PHP template engine". И результаты Smarty в 0.0239 sec, 9.2 MiB, явно лучше стандартных для dle 11: 0.03-0.04.
Думается мне, прежде чем рассказывать о "медленном" смарти, нужно как минимум провести тесты. ПафНутиЙ, не просто так написал тебе о функционале. Большие требования и размеры, это плата за функциональность и безопасность.

Я как то заморачивался с камрадами. Вырезали из десятой dle родной шаблонизатор, и вкорячивали twig. Нудно, но не сложно. Визуальная часть и суть остались прежними, а вот от движка мало что осталось.. Шаблонизатор очень плотно интегрирован в движок, а соблазн использования ORM, был слишком велик. :) Получили прирост производительности почти в трое. Но пришли к выводу, что игра не стоит свеч. Проще было написать cms на каком нибудь фреймворке, и просто использовать структуру бд и визуалку от dle. Был бы эдакий хамелеон, а не франкенштейн. xD

Что касается данного хака:
1. Требование "IonCube Loader: v.5.0 и выше" - Говорит о том что код был зашифрован, дабы злые любители свободного кода, не начали распространять его бесплатно. Одновременно с этим, автор лишает Вас возможности оптимизации и правки кода который Вы КУПИЛИ.
2. Чтобы использовать if, elif, else в любом шаблоне, нужно изменить класс шаблонизатора (engine/classes/templates.class.php). Т. е. расширить его возможности. Расширить обработчик, добавить функции,...
Пример такого расширения - http://prowebber.ru/dle/hacks/3437-dobavlenie-usloviya-if-else-v-shablon.html
3. Подобное наращивание функционала, неизбежно увеличит сложность обработки шаблона. А значит количество затрачиваемых ресурсов, и время на его обработку!
4. В отличии от все тех же Smarty и Twig. Шаблонизатор dle, это не работающее под управлением cms web приложение, это плотно интегрированный class этой cms. А значит любая доп. нагрузка на него, неизбежно скажется на работе всего сайта.
5. Т. к. все эти if`ы придется рыскать во время выполнения load_template() и sub_load_template(), вы автоматом получаете увеличение нагрузки, пропорциональное увеличению количества шаблонов вложенных друг в друга. Например родной {speedbar}. Независимо от того используете вы его или нет, его шаблон обрабатывается.
Минимум 1 раз, если Вы его не используете. И минимум 3 раза, если вы его используете. Тоже касается {login}, {catmenu}, и т.д. И во время их обработки, будет работать и данный хак. Мало того, решили вы использовать отдельный .tpl для какого либо куска html, и вуаля, жирный плюс ко времени его обработки. :) Smarty и Twig устроены иначе.
6. Для того чтобы компенсировать затраты ресурсов на обработку этих операторов, нужно удалить другие, смысл в которых утрачивается: category и not-category, group и not-group, и т.д. и т.п.
А дальше это неизбежно приведет к ситуации как в анекдоте: У тебя есть 2 путя. 1. Полное изменение шаблонизатора. 2. Интеграция стороннего шаблонизатора.

Вывод:
Вещь конечно интересная, и возможно даже полезная. Но денег своих не стоит. 600 руб, за хак с закрытым исходным кодом, при цене самой cms в 3990. Это как то не скромно. Учитывая, что имеются вполне себе бесплатные альтернативы.
Хотя я понимаю за что именно автор просит денег, и если смотреть с его точки зрения сумма обоснованна. Но с пользовательской.. Кот в мешке. Хотя учитывая закрытый исходник, кот в мешке и сейфе.

Gameer
233

1150 | 399

Gameer - 27 января 2017 09:58 - Юзер

ZK413,
1. А еще Ioncube немного увеличивает производительность благодаря обсуфикации кода.
2. Не нужно ничего расширять.Откуда вам знать как работает хак, не купив его? Все работает предельно просто.
3. Ничего подобного, вы проводили тесты с производительностью этого хака? Давайте мне пруфы.
4. Опять ваше рассуждения приводится к тому, что вы пытаетесь показать всем какой вы все знающий, но это не так. У вас ошибка на ошибке.
5. Ошибочное мнение. Вы ничего не знаете, не нужно прыгать выше головы, все равно не сможете.
6. Я уже не знаю, какая это нелепость...
7. Цена составляет 360 рублей. Вам бы зайти на сайт, да посмотреть стоимость хака. Альтернатив хаку нету, есть возможные аналогы но со скудным функционалом. У них нету оператора elif и нету поддержки логических операторов && и ||. Вы опять же не понимаете за что я прошу денег, вы даже не смогли вникнуть и сопоставить с другими похожими хаками. А то что вы наплели выше, ставит вас в неловкое положение.

ZK413
13

ZK413 - 27 января 2017 12:20 - Юзер

Куча отмазок, и нелепая попытка перейти на личности... Ioncube Вы использовали с одной целью, шифрование исходников. Кстати, да будет Вам известно, их не так уж и сложно получить в расшифрованном виде. :)
1. Ага, конечно. А замок облегчает открытие двери... IonCube Encoder кодирует, IonCube Loader декодирует. И ни слова о компиляции, оптимизации, ускорении, сжатии. Только сокрытие кода, от "посторонних" глаз. :)
2. Обработка всех тегов шаблона, происходит ровно в двух местах.
1. Шаблонизатор.
2. Доп. теги, в модуле, который непосредственно связан с конкретным шаблоном.
Второй вариант, явно не подходит, т.к. это будет работать например только в main.tpl. В описании НЕТ указания на то, что хак работает только в одном-двух шаблонах. Значит, он работает везде. А если он работает везде, то это расширение возможностей класса engine/classes/templates.class.php. Другого не дано.
3. Я логически рассуждаю. Давайте попробуем вместе. :)
Плюс даже одна лишняя функция, это более сложное вычисление? Логичный ответ - да. Более сложные вычисления, дают больше нагрузки? :) Логичный ответ - да. А если больше больше нагрузка, за счет большего количества или сложности вычислений, то это увеличивает время на их обработку. Логичный ответ - да.
Все логично? Нечего не смутило в цепочке? :) Может есть возражения? :)
4. Для начала - https://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80 Остальное поможет найти гугл, запрос "Что такое шаблонизатор php". :)
5. Очень похоже на "Вы всеее вреете!!!". xD Чего конкретно я не знаю? Как именно работает Ваш хак? Так из описания и возможностей движка, а также по работе уже имеющихся тегов, делаются выводы. Они приведены выше.
6. Это называется - Оптимизация. Нелепость, это простите ваше сообщение.
7. Прокрутите данную страницу выше, там в описании есть пункт - "Цена : 10$".
Курс ЦБ:
27.01.2017 *59.6355 +0.4866
26.01.2017 59.1489 −0.0679
25.01.2017 59.2168 −0.2866
24.01.2017 59.5034 −0.1663
10*59,50=595 - Округлил до 600, чтоб получилась ровная сумма. Плюс/минус 5 рублей, это не великая разница. :)
Касательно "альтернатив нету", полная глупость. А elseif можно легко прикрутить даже к тому примеру, что я скинул. :)

Gameer
233

1150 | 399

Gameer - 27 января 2017 12:30 - Юзер

ZK413, 1. Почитайте о возможностях ioncube. И да, если ВЫ не заметили я написал "А еще", что означает что я не отрицал что использую в связи с защитой кода.
2. Другое дано, вы просто не можете себе этого представить, видимо из-за скудных знаний.
3. Вы не пишите мне логическое составляющее. Вы дайте мне факты касающегося данного хака.
4. Вы написали что доп нагрузка на шаблонизатор, но шаблонизатор не используется в моем хаке, абсолютно.
5. Опять таки, мой хак не взаимодействует с шаблонизатором DLE.
6. Посмотрите как формируются эти теги, и подумайте делают ли они уже такую БОЛЬШУЮ нагрузку как вы написали. То что вы начитались хабра, это конечно замечательно, но это не делает вас умным.
7. Зайдите на официальный сайт и посмотрите цену в 6$. 6 * 59,63 = 357,78 рублей.

Касательно альтернатив, не полная глупость, нету с тем же функционалом, как я писал выше. Так что обдумайте, то что вы знаете еще раз ;)

ZK413
13

ZK413 - 27 января 2017 13:43 - Юзер

Прям "посрамил" xD Так сказать блеснул "умом". xD
1. Да, и за счет чего тоже не забыли указать - "увеличивает производительность благодаря обсуфикации кода". Есть вариант ускорить код, если не шифровать его. Так что к ускорению, Ioncube, не имеет не какого отношения. :)
2. Естественно скудных, я могу судить о коде только по описанию и работе самой cms. Хотя, что то мне подсказывает, что это очередная, неуклюжая попытка, показать на сколько вы "умнее". :)
3. Факты берутся из тестов. А автору данного хака (т.е. Вам) было лень сделать тесты, чистая cms vs чистая cms + хак. Так что могу оперировать только логическими выводами. Которые Вы кстати, почему то не смогли оспорить. Наверное на столько умны..
4. Даже "$tpl->set ( '{new-teg}', ' <div class="div100500">Text</div>' );" увеличит нагрузку при обработке. Нужно быть идиотом, чтоб этого не понимать. if, elif, else, должны обрабатывать php`шные if elseif else. А значит теги "[if *условия*] [elif *условия*] [/elif][/if]" и их условия, нужно получить из tpl, обработать, и послать результат в обработку dle_template. Т.е. перехватить раньше templates.class, и выдать ему обработанный результат. То есть просчитать шаблон дважды. И опять же, остается вопрос, о работе этих тегов во всех шаблонах. Мега копипаст? :) Учитывая их вложенность, лучше уж "раздуть" templates.class. Это менее ресурсоемко.
Но - "Вы написали что доп нагрузка на шаблонизатор, но шаблонизатор не используется в моем хаке, абсолютно.", а раз он "не используется", то шаблон обрабатывается дважди. xD Это конечно же "не повышает" нагрузки...
5. Либо вы вводите в заблуждение, либо собрали такой велосипед.... Честно говоря, уже становится страшно за тех кто его использует.
6. Такую уж большую нагрузку, как вы выразились. Создает не едино разовое формирование тега, а их обработка. Чем сложнее запросы, и больше их количество, тем выше нагрузка. У templates.class есть такая же особенность, как и у всех шаблонизаторов. Чтобы обработать тег из tpl, его нужно загрузить и просмотреть. Т.е.:
$tpl->load_template ( 'main.tpl' ); - Загрузил и обработал, например
if (strpos ( $this->template, "[tags=" ) !== false) {
$this->template = preg_replace_callback ( "#\\[(tags)=(.+?)\\](.*?)\\[/tags\\]#is", array( &$this, 'check_tag'), $this->template );
}
Во время обработки, срабатывает не самая "легкая" функция check_tag.
Далее заменил всю статику, пример:
$tpl->set ( '{new-teg}', ' $params' ); -
Отдал:
$tpl->compile ( 'main' );
Закончил работу:
$tpl->clear ();

Ваши if, elif, else, по идее должны обрабатываться в load_template(). Это позволит использовать их везде, без копипастов во все модули. Но вы уходите от ответа, можно их использовать везде, или только в конкретном шаблоне? В описании об этом ни слова.
И возвращаясь к пункту 5. В каком именно месте, ваш хак не взаимодействует с шаблонизатором?
До load_template ();, после, или после. Или ваш хак, по новой перелопачивает шаблон, после того как с ним закончил templates.class? :) Конечно же не увеличивая тем самым время на обработку шаблона. И как в таком случае быть с кешем? :) держать 2 варианта, до хака и после? :)
7. Первое, вы выложили его здесь, и по цене 10$. Второе, зашел, посмотрел на идиотское:
Доступ закрыт
Требуется оплатить 3.00$.
Для оплаты Вам необходимо зарегистрироваться либо войти на сайт под своим именем.
и ушел. xD

А об альтернативах, можно долго спорить... Но как я уже писал, можно легко допилить скинутый мной пример, до написанного вами функционала. И судя по вашем же ответам, получить более шуструю вещь xD

Gameer
233

1150 | 399

Gameer - 27 января 2017 13:51 - Юзер

ZK413, ооо, с вами все ясно. У вас все по идеи, по сути ваши веселящие сообщения не имеют никаких фактов. У вас рассуждения на основе ваших же данных, которые являются не верными. Вы придрались к шаблонизатору DLE, который в хаке не взаимодействует. В кэш записывается уже обработанный код. С вами обсудить невозможно, вы уперлись в свою правоту с бредовыми рассуждениями.

ZK413
13

ZK413 - 27 января 2017 14:02 - Юзер

Конечно со мной все ясно. Но где ответ, хотя бы на один заданный мной вопрос?! Я не придираюсь, а пытаюсь выяснить, хороший ли это код? Что в этом такого страшного? Ваш код скрыт даже после покупки, а если там "гиря на шею сервера" вместо удобной фитчи?
Вы не разу не ответив, все время пытаетесь выставить себя мега гением, до которого докопался тролль. Любой вопрос, любое логическое размышление, пытаетесь свести к тому, что я просто нечего не понимаю, а вы мега знаток. И чем больше конкретики я спрашиваю, тем больше вы делаете вид, что вопросов вам не задавали.
И в конце концов, ваш последний ответ, можно уместить в одну строчку:
Ой, все! Иди в *опу!
Такое поведение простительно девочке подростку, а не разработчику, который хочет денег за свой код!

nowheremany
193

1731 | 1308

nowheremany - 27 января 2017 16:54 - Эксперт

По поводу инкуба - он выполняется быстрее, потому что выполнение идет на си, а не на php, т. е. нет необходимости интерпретировать php код. По поводу защиты - что вам не нравится? Человек тратил время и сделал модуль платный, вы же хотите, что бы вам открыли исходный код, причем по переписке большая вероятность его увидеть в паблике, вот автор и не хочет вам его показывать.
Да и что вы хотите там увидеть? Я на 99% уверен, что там используется чтение данных потом eval('if ... ') да и все. Скорость работы этого скрипта, можно не учитывать, т .к. в любом случае preg_ будет в разы дольше, чем выполнение кода.

Благодарность принимаю тут Связь

Gameer
233

1150 | 399

Gameer - 28 января 2017 03:12 - Юзер

nowheremany, eval там не используется. Там код по другому принципу работает.

ZK413
13

ZK413 - 28 января 2017 20:04 - Юзер

nowheremany, давайте сразу уточним. Мне абсолютно плевать на дальнейшую судьбу хака. Мне все равно закрыт исходник или нет (ибо получить исходник после инкуба, максимум час времени). Мне непонятно почему ПЛАТНЫЙ модуль, имеет защиту кода. Почему человек, который просит денег за свой код, отвечает подобным образом:
Цитата: Gameer
Ничего подобного, вы проводили тесты с производительностью этого хака? Давайте мне пруфы.

Это кто то должен проводить тесты, и скидывать автору результаты? Что за бред?
Цитата: nowheremany
По поводу защиты - что вам не нравится?

Для начала:
Непонятно работает модуль везде или только в определенных шаблонах.
Непонятно будет ли он работать со сторонними модулями имеющим свои шаблоны.
Неясный механизм работы.
Отсутствие тестов производительности.
Нет гарантии отсутствия бекдоров.
Нет гарантии дальнейшей поддержки модуля.
Принуждение к установке ненужных мне модулей php.
Цитата: nowheremany
Человек тратил время

Человек за это получает (или хочет получить) деньги. Тратил время и старался, относится только к тем, кто выкладывает код бесплатно. Не зависимо от того защищен он или нет. Автор же:
Цитата: nowheremany
сделал модуль платный

Т.е. его время и труды будут оплачены. И далеко не ссылочкой или словом "спасибо" в комментариях. Почему покупая например одежду или технику, вы не исходите из логики, что производитель старался и тратил время? Неужели из за того, что вы за это платите? :)
Джинсы прошиты так, что строчка дважды оборачивает ногу, но
Цитата: nowheremany
Человек тратил время

Уже не так оправдывает? :)
Цитата: nowheremany
вы же хотите, что бы вам открыли исходный код

После ПОКУПКИ, а не в комментариях.
Цитата: nowheremany
причем по переписке большая вероятность его увидеть в паблике, вот автор и не хочет вам его показывать.

Это вот с чего взято?
Цитата: nowheremany
Да и что вы хотите там увидеть?

Принцип обработки шаблона.
Цитата: nowheremany
Скорость работы этого скрипта, можно не учитывать, т .к. в любом случае preg_ будет в разы дольше, чем выполнение кода.

Чем выполнения какого именно кода? Вычисление if elseif else, получение их из шаблона, или всего хака? И с откуда такая уверенность?

nowheremany
193

1731 | 1308

nowheremany - 28 января 2017 23:11 - Эксперт

Цитата: ZK413
Мне непонятно почему ПЛАТНЫЙ модуль, имеет защиту кода

Слишком много покупателей, которые выкидывают хаки/модули в паблик. В том числе, если, так называемая покупка в складчину, по этому авторам требуется защита от этого.

Цитата: ZK413
Чем выполнения какого именно кода? Вычисление if elseif else, получение их из шаблона, или всего хака? И с откуда такая уверенность?

конструкции preg_replace и preg_replace_callback слишком прожорливы, по этому в любом случае их выполнение дольше.

В целом зачем разводить холивар? Не хотите брать - не берите или сделайте аналог.

Благодарность принимаю тут Связь

ZK413
13

ZK413 - 29 января 2017 00:35 - Юзер

Цитата: nowheremany
Слишком много покупателей, которые выкидывают хаки/модули в паблик. В том числе, если, так называемая покупка в складчину, по этому авторам требуется защита от этого.
Я умудрялся даже админов uCoz заставить блокировать сайты/удалять материал. Паранойя, это не повод харкать в покупателя. Боишься, сиди дома. К слову, сама cms после покупки полностью доступна к редактированию. Или вы считаете, что на нее затратили меньше сил и времени?
Цитата: nowheremany
конструкции preg_replace и preg_replace_callback слишком прожорливы, по этому в любом случае их выполнение дольше.
preg_replace или preg_replace_callback конечно не самые быстрые. Но функция сравнения, для которой нужны данные, которые в свою очередь прежде нужно получить из кеша или бд, тоже не "ракета". Плюс ко всему, автор явно дал понять, что его код интерпретирует теги до или после шаблонизатора, а значит шаблон прогоняется дважды.
Цитата: nowheremany
В целом зачем разводить холивар?
Эты вы вместе с Sander пришли как армия спасения на помощь автору. С криками "Да ты просто дурак, и нечего не понимаешь". А не я, что то начал высказывать вам. Спор с автором по сути был закончен. Не на один вопрос он не ответил. И как девочка подросток, с криками "Ой все", "убежал в кусты". Зачем было что-то начинать по новой, известно только вам.
Цитата: nowheremany
Не хотите брать - не берите или сделайте аналог.
Железная логика. А главное, очень "правильная"...

Sander
1155

1663 | 1212

Sander - 28 января 2017 14:53 - Эксперт

2. Обработка всех тегов шаблона, происходит ровно в двух местах.
1. Шаблонизатор.
2. Доп. теги, в модуле, который непосредственно связан с конкретным шаблоном.
Второй вариант, явно не подходит, т.к. это будет работать например только в main.tpl. В описании НЕТ указания на то, что хак работает только в одном-двух шаблонах. Значит, он работает везде. А если он работает везде, то это расширение возможностей класса engine/classes/templates.class.php. Другого не дано.

Ваш вывод явно показывает вашу некомпетентность. Именно вариант 1 и не подходит.
Шаблонизатор работает только с теми данными, которые ему переданы. Однако туда передаются не все данные, а только те, что нужны для вывода в шаблоне и причем некоторые уже в сформированном html виде (тег {rating} и др.)

3. Я логически рассуждаю. Давайте попробуем вместе. :)
Плюс даже одна лишняя функция, это более сложное вычисление? Логичный ответ - да. Более сложные вычисления, дают больше нагрузки? :) Логичный ответ - да. А если больше больше нагрузка, за счет большего количества или сложности вычислений, то это увеличивает время на их обработку. Логичный ответ - да.
Все логично? Нечего не смутило в цепочке? :) Может есть возражения? :)

Не хочу обидеть, но это просто клинический идиотизм, а не здравое рассуждение.
На счет логичности не поспоришь, но разумным назвать подобное никак нельзя. Приведу пример более наглядный и понятный всем.
Есть автомобиль, у него расход 10л на 100км. Если погрузить на него 500кг груза, то ему будет тяжелее ехать и следовательно расход увеличиться. "Логически" рассуждая, каждый лишний килограмм увеличит расход. Получается что даже лишняя тряпочка, отвертка или гаечный ключ увеличит расход топлива. Все логично? Есть возражения?

Насчет smarty. Нельзя сказать однозначно что он плох или что он невероятно хорош. Он создан для своих целей. Все равно что сравнивать зил 3х тонник и белаз 40 тонн. Если нужно перевезти только мешок картошки, то даже использование зилка будет не целесообразным, чего уж говорить о белазе. А вот если нужно перевозить по 500тонн щебня ежедневно, то разумнее использовать белаз.

И вот еще.
Размер шаблонизатора DLE - 27 Кб.
Размер smarty - 1117 Кб
Следуя вашей извращенной логике, получается, что он в 40 раз медленнее шаблонизатора DLE ?

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

ZK413
13

ZK413 - 28 января 2017 20:29 - Юзер

Sander, хотелось написать что то едкое, и возможно даже оскорбительное. Но не буду. Ибо понимаю, что вы это написали потому, что не поняли смысла написанного.
Цитата: Sander
Ваш вывод явно показывает вашу некомпетентность. Именно вариант 1 и не подходит.
Шаблонизатор работает только с теми данными, которые ему переданы. Однако туда передаются не все данные, а только те, что нужны для вывода в шаблоне и причем некоторые уже в сформированном html виде (тег {rating} и др.)
Мою некомпетентность говорите.. xD И каким образом тег {rating} будет выведен в шаблоне hz4to.tpl, который является частью шаблона offline.tpl? Тег {rating} является глобальным?
Вариант 2 не приемлем как раз из за того, что тег не будет глобальным, а значит и обрабатываться где угодно, не будет.
Цитата: Sander
Не хочу обидеть, но это просто клинический идиотизм, а не здравое рассуждение.
На счет логичности не поспоришь, но разумным назвать подобное никак нельзя. Приведу пример более наглядный и понятный всем.
Есть автомобиль, у него расход 10л на 100км. Если погрузить на него 500кг груза, то ему будет тяжелее ехать и следовательно расход увеличиться. "Логически" рассуждая, каждый лишний килограмм увеличит расход. Получается что даже лишняя тряпочка, отвертка или гаечный ключ увеличит расход топлива. Все логично? Есть возражения?
Легко. В вашем т.с. это возможно и не важно, а вот в проф.т.с. важен каждый грамм. Самый яркий пример болиды формулы 1.
Если хотите и дальше метафор с cms и авто, то:
Конечно можно строить ваз 2106, и ремонтировать его при помощи синий изоленты, проволоки, молотка, и такой то матери. А можно строить спорт кары или люкс авто. Каждый выбирает для себя сам.

Цитата: Sander
Насчет smarty. Нельзя сказать однозначно что он плох или что он невероятно хорош. Он создан для своих целей. Все равно что сравнивать зил 3х тонник и белаз 40 тонн. Если нужно перевезти только мешок картошки, то даже использование зилка будет не целесообразным, чего уж говорить о белазе. А вот если нужно перевозить по 500тонн щебня ежедневно, то разумнее использовать белаз.
Да, и еще раз, да. Но если сравнивать его работу с шаблонизатором dle, это небо и земля.
Но мне все равно больше нравится twig. :)

Цитата: Sander
И вот еще.
Размер шаблонизатора DLE - 27 Кб.
Размер smarty - 1117 Кб
Следуя вашей извращенной логике, получается, что он в 40 раз медленнее шаблонизатора DLE ?
Это имеет такое же отношение к моей логике, что и вы к обаме. :)

Sander
1155

1663 | 1212

Sander - 29 января 2017 02:41 - Эксперт

Дело в том, что вы достаточно поверхностно знаете как устроен DLE и его шаблонизатор в частности.
Тот метод о котором говорите вы - универсален, но в настоящий момент времени будет очень ограничен и неполноценен.
DLE, в первую очередь, это новостной сайт. И все в нем ориентировано именно на работу с публикациями. Следовательно и if else в первую очередь будет необходим именно в новостях. Если писать ifelse в шаблонизаторе, то мы получим абсолютно бесполезную поддержку тегов во всех файлах шаблона и потеряем более половины функционала в самих новостях, куда в первую очередь этот хак и нужен.
Если делать хак в самом шаблонизаторе, чтобы он действовал на все файлы шаблона, то данные он сможет получить только из конструкции $tpl->set(); Но ведь в этой конструкции прописываются далеко не все данные, которые хранит движок.
Для примера allow_comm, allow_main, approve, fixed. Все эти данные хранятся и обрабатываются движком, но непосредственно в шаблонизаторе они никак не задействованы и не упомянуты.
Или же мне нужно скрывать блок пока рейтинг меньше 10 или голосов менее 10. В шаблонизатор идут теги {rating} и {vote-num}. Однако первый представляет собой целый блок html верстки из div и ul, а второй обернут в span. Т.е. шаблонизатор получает не числа, а грубо говоря простой текст.
Я уж молчу о том, что в 11 версии DLE доп.поля вообще не передавались в шаблон, а в самом php файле заменялись через str_replace. Да и сейчас, если доп.поле - это год выпуска и включены "перекрестные" ссылки, то вместо числа в шаблонизатор идет текст (с html тегами).

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

Вот в том-то и дело, что они должны подключаться и быть задействован только там, где они необходимы.

И насчет быстродействия. Не знаю как у gameer-а, но сделал замеры на своем хаке в полной новости. Используются разные if, elseif, else и с разной вложенностью. В общей сложности 31 тег if.
Среднее время обработки - 0.002 с
Время компиляции самой полной новости - 0.055с
Время затраченное на компиляцию шаблонов 0.069 секунд

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

ZK413
13

ZK413 - 29 января 2017 08:21 - Юзер

Цитата: Sander
Дело в том, что вы достаточно поверхностно знаете как устроен DLE и его шаблонизатор в частности.
Тот метод о котором говорите вы - универсален, но в настоящий момент времени будет очень ограничен и неполноценен.
DLE, в первую очередь, это новостной сайт. И все в нем ориентировано именно на работу с публикациями. Следовательно и if else в первую очередь будет необходим именно в новостях. Если писать ifelse в шаблонизаторе, то мы получим абсолютно бесполезную поддержку тегов во всех файлах шаблона и потеряем более половины функционала в самих новостях, куда в первую очередь этот хак и нужен.
Если делать хак в самом шаблонизаторе, чтобы он действовал на все файлы шаблона, то данные он сможет получить только из конструкции $tpl->set(); Но ведь в этой конструкции прописываются далеко не все данные, которые хранит движок.
Для примера allow_comm, allow_main, approve, fixed. Все эти данные хранятся и обрабатываются движком, но непосредственно в шаблонизаторе они никак не задействованы и не упомянуты.
Или же мне нужно скрывать блок пока рейтинг меньше 10 или голосов менее 10. В шаблонизатор идут теги {rating} и {vote-num}. Однако первый представляет собой целый блок html верстки из div и ul, а второй обернут в span. Т.е. шаблонизатор получает не числа, а грубо говоря простой текст.
Я уж молчу о том, что в 11 версии DLE доп.поля вообще не передавались в шаблон, а в самом php файле заменялись через str_replace. Да и сейчас, если доп.поле - это год выпуска и включены "перекрестные" ссылки, то вместо числа в шаблонизатор идет текст (с html тегами).

Бла бла бла, я пыьаюсь оправдаться... Даже читать не хочу.
О том что в первую очередь из себя представляет dle, и как он получает данные из шаблонов, нужно было думать сразу. А не теперь.
Вы вступились за автора хака, практически не вдумываясь в мои сообщения. И теперь это всего лишь отмазка. И не более того. Прежде чем писать ответ, прочтите ВДУМЧИВО, что было написано. И как было сказано, не нужно разводить холивар.

Дело как раз в том, что они должны подключаться и быть задействован только там, где они необходимы. Это есть в описании? Нет.
Я об этом спрашивал не один раз. Ответа не было. Автор уходит от ответов.
Цитата: Sander
И насчет быстродействия. Не знаю как у gameer-а, но сделал замеры на своем хаке в полной новости. Используются разные if, elseif, else и с разной вложенностью. В общей сложности 31 тег if.
Среднее время обработки - 0.002 с
Время компиляции самой полной новости - 0.055с
Время затраченное на компиляцию шаблонов 0.069 секунд
Это замеры с данным хаком? Нет. Тогда вашему старанию грош цена.

Простите за эмоциональность, но я тот кто переписывал этот движок для хохмы. Я знаю как он работает. И могу на нем (без преувеличений) вытворить что угодно. Я делал online мониторинг серверов hlds на движке uCoz, в 2009г. За счет js и браузера юзверя.Я нагибал их админов, что по идее не возможно. И делал это качественно, и доступно. Так чтобы другие смогли повторить.
Поймите, меня просто выбивает из равновесия, когда сначала ты говоришь автору, что он несколько не прав, а потом за него вступается пара человек. И с уверенностью барана начинает тебя троллить. По тому, что они так хотят. Ребят, вы не привели даже крохи, даже 1% правоты автора. Просто пытаетесь его оправдать. Оправдать человека, который сбежал в кусты. Если я в чем то не прав, в своих высказываниях, разберите это по пунктам. И отпишитесь.
А кричать, ты не прав по тому что. Не по тому что это так то и так то. А просто потому что. Это бред.
Вы сами не можете со мной спорить, просто оправдания, это не спор. Так зачем вы защищаете автора?
Как и просил или просила nowheremany, выложу аналог в бесплатной форме, с открытым исходником. Пара дней на размышления, как оно будет лучше.
Я держу свое слово, в отличии от автора, который полгода назад сказал что будет обновление, а сейчас он просто болеет.
В общем подождите пару дней. И тогда будет хотя бы площадка для обсуждения. А комментарии к платному модулю, код которого закрыт, еще автор девочка подросток. Это простите не серьезно.

Gameer
233

1150 | 399

Gameer - 29 января 2017 08:52 - Юзер


ZK413, хак работает в краткой, полной и custom.
Цитата: ZK413
Я держу свое слово, в отличии от автора, который полгода назад сказал что будет обновление, а сейчас он просто болеет.

Кто болеет? Я? Вы у меня спрашивали как у меня здоровье?
Цитата: ZK413
А комментарии к платному модулю, код которого закрыт, еще автор девочка подросток.

Оскорбления, это вы подтверждаете свою некомпетентность, и то что вы очень ранимы. Моралфагам очень сложно в интернете.
Цитата: ZK413
Поймите, меня просто выбивает из равновесия, когда сначала ты говоришь автору, что он несколько не прав, а потом за него вступается пара человек.

Где вы писали что я не прав? Где вы привели хоть одно свое утверждение с фактами?
Цитата: ZK413
Если я в чем то не прав, в своих высказываниях, разберите это по пунктам.

Это в обще-то сделали все.
Цитата: ZK413
Как и просил или просила nowheremany, выложу аналог в бесплатной форме, с открытым исходником.

Очень ждем и надеемся. Уверен, ничего не будет.

Прикрепил скриншот обработки условий с хаком на главной в кратких новостях. 30 if в общем, 10 в одной новости.

ZK413
13

ZK413 - 30 января 2017 08:50 - Юзер

Нашел подозрительно похожий вариант MWS Smart Xfield v1.3 - by MaRZoCHi (https://dle.net.tr/dle-modul/929-smart-xfield.html).
Он работает через VQMod, думаю должен быть достаточно быстрым. Думаю на его основе, можно сделать полный аналог.

Gameer
233

1150 | 399

Gameer - 30 января 2017 09:05 - Юзер

ZK413, вы даже сами код написать не в состоянии, берете основу и пилите на нем. О чем в обще речь может быть? Зашквар века ;) Код могу автору MaRZoCHi показать, и там отнюдь будет не тот же что там.

Gameer
233

1150 | 399

Gameer - 30 января 2017 09:11 - Юзер

ZK413, он не работает через VQMod, он устанавливается посредством впила в файлы движка... Вы даже этого не видите... Полнейший зашквар с вашей стороны...

ZK413
13

ZK413 - 30 января 2017 10:49 - Юзер

Зачем писать с ноля, то что уже есть? 0о
Проще подогнать под себя имеющийся.
По поводу как именно он интегрируется и выполняться, не смотрел еще. Только описание прочел. xD

Gameer
233

1150 | 399

Gameer - 30 января 2017 10:52 - Юзер

ZK413, но нужно сразу орать об этом. И с какого времени код быстрее выполняется за счет VQMod ? Он для впила кода в файлы служит на сколько мне известно, что бы юзер руками в файлы не лез, через заданный конфиг в xml. Бред на бреде. Вы же вон
Цитата: ZK413
И могу на нем (без преувеличений) вытворить что угодно. Я делал online мониторинг серверов hlds на движке uCoz, в 2009г. За счет js и браузера юзверя.Я нагибал их админов, что по идее не возможно. И делал это качественно, и доступно.

что написать с нуля не позволяет? Умение? Знание? Религия?

ZK413
13

ZK413 - 30 января 2017 11:04 - Юзер

Цитата: Gameer
что написать с нуля не позволяет? Умение? Знание? Религия?
Проблемы с русским?
Цитата: ZK413
Зачем писать с ноля, то что уже есть? 0о


Цитата: Gameer
Бред на бреде.
Не знаю, я его не скачивал, еще не успел. Несколько занят.

Gameer
233

1150 | 399

Gameer - 30 января 2017 11:05 - Юзер

ZK413, проблем нету, просто знаний не хватает вам.

redissx
1

70 | 22

redissx - 30 января 2017 12:57 - Юзер

ZK413, извиняюсь, что влажу в ваш спор, но уж сильно интересно с стороны.
Зачем писать с ноля, то что уже есть? 0о
Проще подогнать под себя имеющийся.

1й раз встречаю человека, который работает с кодом, и говорит, что ему проще чужой пилить, чем свой написать)

ZK413
13

ZK413 - 31 января 2017 08:25 - Юзер

Да собственно все очень просто.
Вы же в курсе, что большая часть сайтов, основаны на фреймворках или же готовых цмс.
Делается это, как рас исходя из логики "Зачем 10 раз переписывать то, что уже хорошо работает".
Если уже имеется какая та база, почему не использовать ее?
Ну а что касается спора, тема встроить в шаблонизатор dle обработку if else elseif, не нова. Уже есть достаточно все возможных "костылей" для dle. Есть схожая обработка в тех же twig и smarty. Так зачем я буду делать это по новой, еще и не посмотрев как это реализовано у других?

У автора реализованы его теги в show.custom, show.full, show.short. Т.е. использовать их например в профиле пользователя или информере, или например внутри стороннего модуля уже нельзя.
Судя по тому, что я уже успел посмотреть, вполне можно подправить templates.class.php, сильно не потеряв в производительности. И получить глобальные теги, которые будут работать везде.
Ну а за основу (т.к. лучше подходит) можно взять Smarty Internal Plugin CompileBase, а вернее наследуемый класс Smarty Internal Plugin Compile If.
Собственно над этим сейчас и ломаю голову. Т.к. использование VQMod не впечатлило. Он меняет данные на лету, и забивает на кеш. А это не есть хорошо.

ПафНутиЙ
1073

3424 | 2437

ПафНутиЙ - 31 января 2017 08:32 - Админ

Посмотрите в сторону fenom, в нём в принципе есть всё, что нужно для DLE и он полегче smarty и twig

Каков вопрос - таков и ответ. Просто помните об этом.

Gameer
233

1150 | 399

Gameer - 31 января 2017 10:08 - Юзер

ZK413, вы не знаете как устроенный dle. Что ж, удачи Вам.

Gameer
233

1150 | 399

Gameer - 31 января 2017 14:34 - Юзер

Большое обновление хака, прочесть все можете здесь - http://gameer.name/blog/118

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