Перейти к публикации

webair

Клиенты
  • Публикации

    855
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    62

Сообщения, опубликованные пользователем webair

  1. Возможность добавления комментариев с любой датой из админ панели от имени любого пользователя или создав нового пользователя.

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

    Архив с модулем содержит php файл для админпанели и xml файл плагина активации модуля в админке (sql запрос добавления модуля в админку, для DLE 13, если у вас DLE ниже 13, выполните sql запрос из файла вручную в phpMyAdmin)

     

    P.S. Модуль предоставляется "как есть". Не несу никакой ответственности за результат использования вами. При необходимости можете обращаться за доработками.

     

    Скачать

     

    ee287c62d1da.jpg

     

     

     

    К примеру, что реализовано у меня:

    20bf790e9f9d.jpg       06bebf1b6fc2.jpg

    bff3b34ad582.jpg

     

    fbef014fefcd.jpg

     

     

    • Нравится 2
  2. 3 часа назад, celsoft сказал:

    Для еmail? Нет не поддерживаются. Какие символы из списка допустимы в e-mail? Перепроверю еще раз.

    Возможно вы и правы, я просто на практике еще ни разу не сталкивался с такой ситуацией. Можно подумать над этим.

    https://habr.com/post/224623/

    Но мне без разницы на RFC. Тему не из-за этого создавал.

  3. 18 минут назад, celsoft сказал:

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

    Вы не поняли мысль.

    Человек, допустим, пытается ввести при авторизации тот же некорректный email, который вводил при регистрации. В случае регистрации, вы вырезаете символы из $_POST, а при авторизации не вырезаете, в итоге пользователь не может войти.

     

    Ок, вы ссылаетесь на RFC. Посмотрите, чуть ли не все символы, которые вы вырезаете, поддерживаются RFC. Но я не из-за этого написал сюда.

    Тему продолжать не буду)

  4. {customcomments template="maincomment" available="main" from="0" limit="5" order="date"}

     

    Выведет комментарии на самом деле по ID, а не по дате добавления. Хотя, ничто не мешало сделать сортировку по дате, MySQL ведь это позволяет.

    В итоге, я столкнулся с ситуацией - разработал модуль добавления комментариев через админку(надо), конечно же при добавлении комментария присваивается ID инкрементируя последний ID, а дату я присвоил сам (не обязательно текущую дату).

     

    Полагаю, то же самое и с customnews? Хотя, в DLE присутствует возможность при редактировании новости поменять дату, но в customnews эта дата не будет учитываться, а будет так и выводиться по ID, хотя задано выводить по дате?

     

    Да, сортировать по дате в таком формате может быть более ресурсоемко, но поэтому я и просил вас ранее использовать unixtime (можно оперировать как с числами, по убыванию и по возрастанию), но вы, @celsoft, сослались на то, что вы используете разные форматы в зависимости от удобства для конкретных ситуаций.

  5. Писал модуль (для админ части), где требуется в том числе регистрация пользователя.

    Обнаружил, что у DLE нет готовой функции регистрации пользователя?!

    Посмотрел, как написана регистрация в api, inc/editusers.php, modules/register.php

    И обнаружил, что они немного различаются, а главное...

     

    Если логин содержит недопустимые символы, то выводим ошибку

    if( preg_match( "/[\||\'|\<|\>|\[|\]|\%|\"|\!|\?|\$|\@|\#|\/|\\\|\&\~\*\{\}\+]/", $name ) ) $stop .= $lang['reg_err_4'];

    А если email содержит недопустимые символы, то вырезаем их и продолжаем дальше?

    $not_allow_symbol = array ("\x22", "\x60", "\t", '\n', '\r', "\n", "\r", '\\', ",", "/", "#", ";", ":", "~", "[", "]", "{", "}", ")", "(", "*", "^", "%", "$", "<", ">", "?", "!", '"', "'", " ", "&" );
    	$email = $db->safesql(trim( str_replace( $not_allow_symbol, '', strip_tags( stripslashes( $_POST['email'] ) ) ) ) );

     

    Немного не понятна разница, почему в одинаковой ситуации принимаются разные решения?

    Смоделируем ситуацию: Вход на сайте по email. Пользователь при регистрации вводит email, вырезаются недопустимые символы, пользователь не может зайти из-за того, что он не в курсе, что его email изменили и вводит ровно тот же email, что и при регистрации.

     

    В таком случае, нужно и в sitelogin.php сделать замену недопустимых символов в email, если оно в качестве логина, чего сейчас не сделано.

     

    И нет проверки, содержит ли email хотя бы @ и . или использовать FILTER_VALIDATE_EMAIL

     

    P.S. Всё описанное мной лишь мое мнение и не претендует на истину. @celsoft, а ведь всё таки был прав @Gameer на счет того, что копипастить плохо и нужно создавать функцию, хотя с некоторыми другими его суждениями и не согласен.

     

    UPD:

     

    trim() удаляет пробел, табуляцию, символ возврата каретки и переноса строки из начала и конца строки, что уже перечислено в массиве заменяемых данных для str_replace(), а значит, trim() тут не нужен. Ну, можно дополнить массив "\x0B" и "\0", которые удаляет trim(). Кажется, с таким внушительным массивом символов, можно и от safesql() избавиться.

     

  6. 11 часов назад, lovep сказал:

    1. модуль будет устанавливаться "из коробки" и можно будет масштабировать на множество сайтов?

     

    2. С открытым исходным кодом? (это важно)

     

    Этот функционал можно было бы отключить в настройках, если не нужен.

    Не на множество сайтов, лицензия на 1 домен.

    Да, код открыт, т.к. xml файл не зашифровать.

     

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

    • Поддерживаю 1
  7. 53 минуты назад, alex32 сказал:

    открывать консоль и смотреть ошибки при отправке. для начала.

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

  8. В 17.08.2018 в 19:34, blizfix сказал:

    Как всегда, не прошу все сделать за меня, нужна лишь подсказка.

    getimagesize()

     

    if-else

     

    Если больше, то уже будет как будто сделать за вас.

  9. 4 часа назад, lovep сказал:

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

     

    Пример:

    Site.com/123-news.html - на англ. 

    Site.com/ru/123-news.html - на русском

    Site.com/es/123-news.html - на испанском. 

     

    Очень хочется видеть подобный функционал «из коробки», так как код платного модуля зашифрован.

    У меня есть идея, как реализовать (с правкой DLE), но опять таки, это не бесплатно и с привязкой к домену.

    А реализовать это из коробки - большинству сайтов это не нужно, но даже если было бы - увеличивает код DLE и нагрузку.

    • Поддерживаю 1
  10. 3 часа назад, Gameer сказал:

    И самое забавное что в папке classes лежат frontend файлы. А что сообщество неготово? Правки движка потрутся? Никто ж не заставляет обновляться. К тому же тут многие ставят просто голую dle и все. Для людей нужно делать как можно лучше. По этому другие разработчики не хотят связываться с dle. MVC может быть реализован в парадигме ооп.

    Табуляцию в редакторах можно настроить что бы при нажатии на таб ставились 4 пробела. 

    Я о том, что в сообществе DLE крайне мало людей, которые разбираются в ООП. Более того, они выбрали DLE именно потому что у него простой код. Признаюсь, я сам по той же причине его выбрал лет 10 назад, когда перешел с ucoz на DLE, это мой путь прогресса. Я давно уже должен был перейти на какой нибудь фреймворк, но что то меня тут держит. На DLE я могу сделать всё что угодно, даже не сложный интернет магазин (для посложнее, лучше Opencart с mvc), а если совсем что то нестандартное, то пишу с 0. За что то может и стыдно, но меня всё устраивает :) У меня аллергия на wp и joomla, почему то. А для фреймворков и других яп у меня есть люди ))

     

    Интересно, почему вы выбрали DLE и почему держитесь за него?

     

    Извиняюсь за оффтоп перед другими пользователями )

    • Нравится 1
  11. 3 часа назад, Gameer сказал:

    1. Нормальный код (OOP).

    2. PSR.

    3. API.

     

    Спасибо.

    По первому пункту, применительно к DLE, правильнее будет MVC, а как именно он будет реализован, не очень то важно. Но сообщество DLE пока не готово к этому. Для начала, нужно до конца отделить view. Сейчас, много html вперемешку с php.

    С остальным согласен, но в PSR меня бесят 4 пробела вместо табуляции.

  12. 25 минут назад, adios сказал:

    Здравствуйте. Возникла ситуация, в которой, к примеру, новость А была добавлена в 18:35:01 и получила id 999, а новость Б добавлена в 18:35:20 и имеет id 998. Подскажите, id присваивается в момент отправки/добавления новости или как-то иначе?

    // Отрывок из engine/inc/addnews.php
    
    
    // Генерация даты
    if( $newdate ) {
    		
    		if( (($newsdate = strtotime( $newdate )) === - 1) OR !$newsdate ) {
    			msg( "error", array('javascript:history.go(-1)' => $lang['addnews'], '' => $lang['addnews_error'] ), $lang['addnews_erdate'], "javascript:history.go(-1)" );
    		} else {
    			$thistime = date( "Y-m-d H:i:s", $newsdate );
    		}
    		
    		if( ! intval( $config['no_date'] ) and $newsdate > $added_time ) {
    			$thistime = date( "Y-m-d H:i:s", $added_time );
    		}
    	
    	} else $thistime = date( "Y-m-d H:i:s", $added_time );
    
    // Добавление в БД
    
    $db->query( "INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, descr, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_br, symbol, tags, metatitle) values ('$thistime', '{$author}', '$short_story', '$full_story', '$filecontents', '$title', '{$metatags['description']}', '{$metatags['keywords']}', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_br', '$catalog_url', '{$_POST['tags']}', '{$metatags['title']}')" );
    	
    $id = $db->insert_id();
    
    $db->query( "INSERT INTO " . PREFIX . "_post_extras (news_id, allow_rate, votes, disable_index, access, user_id, disable_search, need_pass) VALUES('{$id}', '{$allow_rating}', '{$add_vote}', '{$disable_index}', '{$group_regel}', '{$userid}', '{$disable_search}', '{$need_pass}')" );
    	

     

  13. 7 минут назад, temius сказал:

    Главное преимущество удобство написания статей. Вы пробовали со смарта 5.5 дюйма постить новости? Судя по вашей отрицательной реакции , НЕТ. Очень неудобно. Я часто в дороге бываю, планшет и ноут неудобно бывает достать, или внезапно идея посетила (А это повсеместно случается и у каждого админа), взял смарт и записал, и тут же опубликовал. Вы зря выбрасываете приложение для смарта из поля зрения, во всем мире признают это направление огромнейшим рынком (да что признают это уже факт). Впрочем дело, конечно, Ваше.

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

     

    Кстати, приложения можно даже на php писать уже :)

  14. Мой выбор:

    Для мелких проектов шаред хостинг Timeweb.

    Для серьёзных проектов DigitalOcean.

    Если серьёзный проект, но нужно чтобы персональные данные хранились в РФ, vscale.io (селектел)

  15. 4 часа назад, vzboltay сказал:

     

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

    Я то как раз всё понимаю.

    "Тип сортировки для подгрузки при скролле" – надо начать с того, что в dle нет функционала ajax подгрузки новостей (не важно, на какое событие оно завязано, на скролле или клик по "показать ещё").

    Второй момент - в dle есть сортировка новостей. Пользователь может либо сам выбирать в каком порядке ему выводить новости, либо в настройках dle. И в таком порядке они будут подгружаться как при ajax подгрузка, так и при листании страниц.

     

    "Реализация через css стили" - вы точно про ajax подгрузку новостей? Не видел такого бреда на форуме. Делается на js.

     

    На счёт удаления элементов из DOM. Если вы "бесконечно" подгружаете новости, то чтобы удалять ненужные элементы, следует использовать detach(), а не remove(). Эти методы одинаковы в том, что удаляют DOM, но detach() сохраняет данные и можно вернуть элементы обратно со всем содержимым, например, если будете листать обратно вверх.

     

    Но я уверен, что в ваших проектах не надо настолько заморачиваться))

     

    Не профессиональный ответ? Ну ладно. Иногда, я не считаю нужным давать развёрнутый ответ, так как оно того не стоит.

  16. 1 час назад, vzboltay сказал:

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

     

    Для категории, поиска – показывать от выбранного типа сортировки.

     

    Для полных новостей – добавить новую опцию в админке «Тип сортировки для подгрузки при скролле», а в нем параметры: новые, похожие. При этом блок похожи новостей убрать не нужно, его можно просто сдвигать вниз по верстке.

     

    Очень жалко, что уже столько обновлений DLE вышло, а столь банальной, но крайне полезной штуки, которая увеличивает время пользователя на сайте нету.

     

    P.S.: я читал темы на форуме, реализация там через CSS-стили, что совсем не то и может сказаться на SEO сайта.

     

    И взял из хабра коммент по теме:

    «Если проблема заключается в том что разрастается DOM (предположительно). можно попробовать для уменьшения страницы инкапсулировать данные уже запрошенные с сервера в объект, или массив JS, по мере загрузки нового контента удалять старые данные из DOM, но оставлять данные в массиве. что позволит нам быстро обращаться к предыдущим данным, в случае необходимости, и вставлять их в DOM, но при этом мы избежим разрастания страницы.»

    Всё уже придумано https://yandex.ru/search/smart/?text=ajax+подгрузка+новостей+dle

    Больше похоже на предложения для новых версий DLE, для этого есть отдельная тема. Если вы хотели найти готовое решение, то вы опять таки промахнулись – есть подраздел Готовые модули.

  17. Переход по ссылке внутри HTML-части не должен приводить к каким-либо изменениям состояния приложения (подписке, отписке, отмене заказа и т.п.) без дополнительного подтверждения пользователем на странице, т.к. некоторые системы контент-фильтрации могут самостоятельно проверять безопасность такого перехода, запрашивая страницу по ссылке; почтовое приложение может показывать превью страницы по ссылке при наведении мыши, а современные браузеры могут подгружать страницу до того, как пользователь щелкнул по ссылке, чтобы сократить время загрузки (в веб-приложении вообще не рекомендуется делать любые модифицирующие действия по GET-запросу, все модифицирующие запросы должны идти через POST или PUT).
    Переход по ссылке в заголовке List-Unsubscribe, наоборот, не должен требовать от пользователя каких-либо дополнительных действий, т.к. за пользователя отписку по этому заголовку обычно делает почтовая программа.

     

    Источник: https://m.habr.com/company/mailru/blog/419591/ (блог Mail.ru на Хабрахабр)

     

    Что мы имеем в DLE?

    Моментальная отписка по переходу по ссылке и отсутствие заголовка List-Unsubscribe (генерацию заголовка добавил себе сам)

     

     

  18. 16 минут назад, Илья2 сказал:

    Как добавить НЕСТАТИЧЕСКУЮ страницу? Например, страницу main2.tpl  с некоторыми правками по шаблонами? a href="main2.tpl" выдает ошибку Not Found

    http://gadgetpage.ru/

    То есть, вы хотите вывести страницу, в генерации которой DLE не принимала участие?

     

    Например, создайте в корневой директории файл test.html с содержимым "Hello World" и перейдите по адресу http://gadgetpage.ru/test.html, вы получите белую страницу с текстом Hello World.

     

    Если хотите всё же на DLE, то при создании статической страницы в поле "Использовать шаблон" впишите название вашего tpl файла, то есть main2

    • Поддерживаю 1
  19. 46 минут назад, MyaniAnime сказал:

    Как здесь прописать чтобы в данном блоке мне выводилась новость которая нужна (по категориям не получилось) 

    Что значит "Понедельник", "Вторник",...?

     Я не понимаю вашу задачу, что вам требуется?

     

    Делайте доп поле day, где будете писать день недели.

    Выводите через custom раздельно по каждому дню недели(условие фильтрации по доп полю).

     

    Но такой вариант не подходит, если у вас динамически должно всё меняться постоянно. Зачем вообще делать дни недели? Выводите по датам.

     

    И вообще, я бы модуль написал, чтобы на 7 предстоящих дней выводились новости, где в доп поле задана дата релиза.

     

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

  20. 8 минут назад, MyaniAnime сказал:

    Здравствуйте, возникла проблема при создании календаря релизов, не получается вывести нужные новости в определённый блок (понедельник, вторник и т.д) они просто дублируются. Нужно что бы было как на 3 скриншоте. Сайт: https://myanianime.ru/kalendar-relizov.html

    Обратитесь к разработчику модуля. На сколько я понимаю, это сделано средствами стороннего модуля.

  21. 28 минут назад, Gameer сказал:

    Переназначить конфиг перед вызовом функции. Костыли - это то чем живет DataLife Engine.

    Спасибо за подсказку :)

    Это так... Послание для будущих поколений:D

    if ($my_cache_time>0){                          // Если в моем модуле задано время жизни кеша > 0
    	$cache_original = $config['clear_cache']; // Сохраняем оригинальное
    	$config['clear_cache'] = $my_cache_time;  // Заменяем на свое
    	$cache = dle_cache("mymodulename",$mydata);
    	$config['clear_cache'] = $cache_original; // Меняем обратно
    } else {                                         // Иначе, используем время из конфига
    	$cache = dle_cache("mymodulename",$mydata);
    }

     

  22. Пишу модуль, подключаемый через include в tpl.

     

    При подключении модуля подхватываются все функции DLE, поэтому нет смысла изобретать свои велосипеды для кеширования и подключать api dle.

    Но dle_cache() не содержит времени жизни кеша, это ошибка? Ведь в API DLE есть этот параметр. И вообще, некоторые функции dle и dle api отличаются и по названию и по содержанию. Кажется, api давно не актуализирован.

     

    Но что делать с периодом жизни кеша отдельного модуля, если не устраивает период заданный по умолчанию для всего DLE?

    • Нравится 1
  23. Скопировать на свой компьютер все файлы. С помощью phpMyAdmin сделать экспорт вашей базы данных.

    Загрузить файлы на ваш сервер. С помощью phpMyAdmin сделать импорт базы данных.

    В файле /engine/data/config.php поменять адрес сайта (если меняете домен тоже).

    В файле /engine/data/dbconfig.php поменять данные подключения к базе данных.

    В панели управления DLE сделать поиск и замену названия домена (если меняете домен).

    Очистить кеш в панели управления DLE.

     

    Кажется, ничего не забыл.

    • Нравится 1
×
×
  • Создать...