MasterEd 1 Опубликовано: 4 апреля 2016 Рассказать Опубликовано: 4 апреля 2016 Здравствуйте. у меня сразу 2 вопроса, с вашего позволения. 1. Мне нужно снять ограничения на оценки статей. То есть, по умолчанию автор не может ставить оценки на свои статьи, а пользователи могут ставить оценки только один раз. Мне нужно , чтобы люди могли ставить оценки неограниченное количество раз,поскольку сами оценки будут платными (через SMS шлюз), Поискал во многих модулях и файлах, но не нашел как и что менять. Возможно просто очень устал и не вижу того, что лежит перед носом. Ткните, пожалуйста. 2. Еще нужно найти файл, который обрабатывает теги [ media = blablabla ]. Если быть более конкретным, пользователи будут загружать ссылки к ютьюб роликам. Далее эти статьи будут выводится на главном через кастом, с фотографиями проблем нет, а для видео нужно создать тумбунашки, или получать их в реал тайме через http://img.youtube.com/vi/код видео от youtube/mqdefault.jpg Следовательно, нужно узнать, какие файлы участвуют в формировании полноценного плеера в полной версии публикаций, и как можно вызвать оттуда ссылку на изображение, как указано выше. грубо говоря, нужно, чтобы на кастом для вывода коротких ссылок на видео были следующие теги: <h2>{title}</h2> // выводлится стандартным дле тегом тайтл. <img src=''{v-image}" width="250" height="250"> // а вот этот тег {v-image} должен выводить нечто вроде http://img.youtube.com/vi/код видео от youtube/mqdefault.jpg Простите, объясняю несвязанно, бессонница и усталость замучили. )) Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 075 Опубликовано: 4 апреля 2016 Рассказать Опубликовано: 4 апреля 2016 38 минут назад, MasterEd сказал: 1. Мне нужно снять ограничения на оценки статей. То есть, по умолчанию автор не может ставить оценки на свои статьи, а пользователи могут ставить оценки только один раз. Мне нужно , чтобы люди могли ставить оценки неограниченное количество раз,поскольку сами оценки будут платными (через SMS шлюз), Поискал во многих модулях и файлах, но не нашел как и что менять. Возможно просто очень устал и не вижу того, что лежит перед носом. Ткните, пожалуйста. engine/ajax/rating.php и engine/ajax/ratingcomments.php для новостей и комментариев соответственно. 40 минут назад, MasterEd сказал: Еще нужно найти файл, который обрабатывает теги [ media = blablabla ]. engine/classes/parse.class.php Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 5 апреля 2016 Рассказать Опубликовано: 5 апреля 2016 Автор Спасибо, ограничения на повышение рейтинга статей снял, заккомментировав следующую строку в файле engine/ajax/rating.php (возможно еще кому-то понадобится, поэтому с вашего позволения, делюсь):128 //$row = $db->super_query( "SELECT news_id, rating FROM " . PREFIX . "_logs WHERE news_id ='{$news_id}' AND {$where}" ); 128 - это номер строки из оригинального файла utf версии скрипта. Попробую теперь разобраться с видео... Если вы не против, обращусь при возникновении вопросов, или отпишусь о результатах. Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 6 апреля 2016 Рассказать Опубликовано: 6 апреля 2016 Автор Вдогонку по первому вопросу. Для снятия ограничения на оценки своих статей, в том же файле engine/ajax/rating.php закомментировал: 134 /*if( $allrate['user_id'] == $member_id['user_id'] ) { 135 136 $db->close(); 137 138 echo "{\"error\":true, \"errorinfo\":\"{$lang['rating_error1']}\"}"; 139 die(); 140 }*/ Нумерация строк согласно версии файла engine/ajax/rating.php из комплекта dle11utf. Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 6 апреля 2016 Рассказать Опубликовано: 6 апреля 2016 (изменено) Автор Еще вопрос по кнопке рейтинг статьи. Речь идет о рейтинге 2-го типа "Нравится". Если можно, укажите, где можно поменять вид кнопки (html, css, js) и главное, как сделать так, чтобы сразу после выставления рейтинга страница автоматически обновлялась? Дело в том, что предполагается использование платных рейтингов через SMS шлюз, сама кнопка будет скрыта через специальный тег, типа {oplata} button {/oplata}. Теоретически в самом шаблоне можно через JS отловить нажатие кнопки через onclick и сделать обновление (refresh) страницы, но хотелось бы это сделать на стороне сервера, чтобы исключить фрод. Второй вопрос по той же теме. ставлю такую конструкцию:Эта статья набрала всего: {rating} [declination={rating}]голос||а|ов[/declination] илиЭта статья набрала всего: {rating} [declination={vote-num}]голос||а|ов[/declination] не работает, везде выводится "голосов" Вместо тегов {rating} или {vote-num} ставлю любую цифру, например:Эта статья набрала всего: {rating} [declination=25]голос||а|ов[/declination] все замечательно работает. С чем это может быть связано? P.S. Кстати, заметил, что {comments-num}, тоже нормально склоняется. что за "шум" создают {rating} и {vote-num}, что declination дает такие ошибки? Ведь они вне этого тега выводят нормальные цифры. Буду премного благодарен за разъяснения. Изменено 6 апреля 2016 пользователем MasterEd Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 075 Опубликовано: 6 апреля 2016 Рассказать Опубликовано: 6 апреля 2016 10 минут назад, MasterEd сказал: Если можно, укажите, где можно поменять вид кнопки (html, css, js) В шаблонах где у вас стоят эти рейтинги, в шаблонах краткой и полной новости (shortstory.tpl и fullstory.tpl) 12 минуты назад, MasterEd сказал: и главное, как сделать так, чтобы сразу после выставления рейтинга страница автоматически обновлялась? Они итак автоматически обновляются сразу. Если вы не включили кеширование в настройках скрипта, если включили, то в карткой новости будет обновлятся по мере обновления кеша. 13 минуты назад, MasterEd сказал: Эта статья набрала всего: {rating} [declination={rating}]голос||а|ов[/declination] илиЭта статья набрала всего: {rating} [declination={vote-num}]голос||а|ов[/declination] не работает, везде выводится "голосов" и не будет работать, тег declination работает только с числом, а тег {rating} выводит не число, а HTML код. Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 7 апреля 2016 Рассказать Опубликовано: 7 апреля 2016 Автор Ясно, спасибо, вопрос с видом кнопки и обновлением решил самостоятельно. Но ваша подсказка убедила меня, что копал в правильном направлении. )) Пока от склонения чисел рейтинга отказался, позже сделаю хак, сейчас это не принципиально. Я пользуюсь DLE уже много лет, и мне очень нравится эта юркая, надежная система. Можно лепить из нее что угодно. Одно плохо, забываю документировать все те изменения, которые делаю в исходном коде, и после обновления приходится долго искать, что и где было изменено, чтобы внести аналогичные изменения в обновленных файлах. Но это не ваша проблема, а проблема пользователей. Спасибо за ваш продукт. Пойду дальше ковыряться. Вопрос с тумбнашками для видео еще открыт и требует срочного решения. Может есть какие то готовые модули и хаки? Поиск не дал результатов.. Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 7 апреля 2016 Рассказать Опубликовано: 7 апреля 2016 6 часов назад, MasterEd сказал: . Вопрос с тумбнашками для видео еще открыт и требует срочного решения. ну можно в modules/addnews.php перехватить значение поля fullstory, проверить его на наличие ссылки с ютуба, допустим https://www.youtube.com/watch?v=9OC_Fr1pQTM , есть есть, разобрать ссылку, что бы получить идентификатор видео 9OC_Fr1pQTM и приклеить к запросу в shortstory <img src="http://img.youtube.com/vi/9OC_Fr1pQTM/0.jpg /> я бы так сделал Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 7 апреля 2016 Рассказать Опубликовано: 7 апреля 2016 Автор Отлично 7 минут назад, alex32 сказал: ну можно в modules/addnews.php перехватить значение поля fullstory, проверить его на наличие ссылки с ютуба, допустим https://www.youtube.com/watch?v=9OC_Fr1pQTM , есть есть, разобрать ссылку, что бы получить идентификатор видео 9OC_Fr1pQTM и приклеить к запросу в shortstory <img src="http://img.youtube.com/vi/9OC_Fr1pQTM/0.jpg /> я бы так сделал Спасибо Алекс. Сейчас попробую. Идея замечательная, только я беру инфу не с полной новости, а с короткой (скрипт переделан так, что клиенты могут вводить только короткую новость, да и то, всего лишь заголовок, короткий текст, загрузку изображений на сервер, ссылку на видео, смайлики и пару ВВ тегов: жирный, наклонный), но это не столь важно. Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 8 апреля 2016 Рассказать Опубликовано: 8 апреля 2016 Автор Господа, товарищи, кто нибудь сталкивался с такой проблемой? Не передаются параметры с шаблонов в инклюденные модули. Приведу простой отвлеченный пример. есть темплейт в котором подключаю тестовый модуль: {include file="/engine/modules/test.php?foo=bar"} сам файл модуля прост до безобразия: <? echo $_GET['foo']; ?> По идее, в том месте где в шаблоне есть обращение к модулю. должно выводится значение переменной foo, а именно bar. Но ничего не выводится. Хотя в документации четко указано, что можно таким образом передавать в скрипты собственных модулей любые параметры и получать ответные значения. В чем может быть причина? Речь идет о DLE11. В ранних версиях вроде как работало. 8) Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 075 Опубликовано: 8 апреля 2016 Рассказать Опубликовано: 8 апреля 2016 3 минуты назад, MasterEd сказал: В ранних версиях вроде как работало. С чего бы это работало? Нет конечно. Что такое переменная $_GET? Это переменная содержащая параметры строки браузера. {include file="/engine/modules/test.php?foo=bar"} это строка браузера? Нет. Переменные подобным образом указывать можно, только вот они доступны также под своими именами, т.е. $foo и в модуле нужно выводить именно: <? echo $foo; ?> О чем кстати написано в документации http://dle-news.ru/extras/online/index.html?modules_include.html Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 8 апреля 2016 Рассказать Опубликовано: 8 апреля 2016 (изменено) Автор 20 минут назад, celsoft сказал: С чего бы это работало? Нет конечно. Что такое переменная $_GET? Это переменная содержащая параметры строки браузера. {include file="/engine/modules/test.php?foo=bar"} это строка браузера? Нет. Переменные подобным образом указывать можно, только вот они доступны также под своими именами, т.е. $foo и в модуле нужно выводить именно: <? echo $foo; ?> О чем кстати написано в документации http://dle-news.ru/extras/online/index.html?modules_include.html Хорошо, сделал как в Вашем примере, возвращается массив, хотя я передал простейшее значение. Так и должно быть?Простите, я не профессиональный программист и это для меня скорее хобби. )) Поэтому иногда что-то путаю, что-то недопонимаю. Как же передать какую то переменную, чтобы в дальнейшем его каким то образом обработать и возвращать? Конкретно, хотелось бы реализовать нечто подобное: http://dle-faq.ru/faq/phpquest/1543-vyvod-karinki-prevyu-dlya-video-s-youtube-i-dr-videohostingov.html P.S. Что забавно, когда подключаю скрипт без передачи переменной {include file="/engine/modules/test.php"} <? echo $foo; ?> вновь возвращает Array... Изменено 8 апреля 2016 пользователем MasterEd Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 075 Опубликовано: 8 апреля 2016 Рассказать Опубликовано: 8 апреля 2016 28 минут назад, MasterEd сказал: вновь возвращает Array... Значит эта переменная у вас уже задана и занята, например другим модулем. DLE не обновляет существующие данные в системе. И нужно вам придумать другие имя переменной вместо foo, а содержание массива можно увидеть через print_r(); Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 8 апреля 2016 Рассказать Опубликовано: 8 апреля 2016 Автор Гениально! Как же я не догадался, хотя вроде это очевидно. Спасибо большое. Пойду дальше ковыряться, и если получится что-то работающее, с вашего позволения, поделюсь здесь. Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 8 апреля 2016 Рассказать Опубликовано: 8 апреля 2016 Автор Всем спасибо за подсказки! Задача с видео, также, решена. Опишу по пунктам для тех, кому возможно понадобится аналогичное решение. 1. Создал дополнительное поле для новоей "v_image". 2. В директории модулей создал одноименный файл (engine/modules/v_image.php) следующего содержания: <?php if(!defined('DATALIFEENGINE')){die("Hacking attempt!");} preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $vurl, $vid); echo "<img src='http://img.youtube.com/vi/".$vid[1]."/0.jpg' />"; ?> При желании можно делать условия и для других видеосервисов, но мне нужен только youyube. 3, в директории шаблонов создал специальный шаблон под названием "custom_v", следующего содержания: <div class="shortMini"> <div> [day-news] <span class="dateMini"> {date=d/m/Y H:m} </span> [/day-news] </div> <a href="{full-link}" title="{title}"> <div class="grow pic">{include file="/engine/modules/v_image.php?vurl=[xfvalue_v_image]"}</div> <div class="titleMini">{title}</div> </a> </div> Этот шаблон вызываю в главный шаблон в нужном месте примерно следующей конструкцией: {info} [available=main] <div> <!-- здесь идут остальные блоки, которые убрал из примера --> <h1 class="heading h1"><?=$lang['popular']?></h1> <div> <!-- здесь идут остальные блоки, которые убрал из примера --> {custom template="custom_v" category="10" order="rating|reads|comments" sort="asc" limit="3"} </div><div class="clear"></div> <!-- здесь идут остальные блоки, которые убрал из примера --> </div> [/available] 4. В шаблоне "addnews.tpl": <li class="form-group"> <table style="width:100%"> {xfields} </table> </li> заменил на: <input type="hidden" id="xf_v_image" name="xfield[v_image]" onkeyup="dle-promt-text.value = this.value" /> 5. В файле "engine/classes/js/dle_js.js" в функции: function DLEprompt(a,b,c,d,e){var g={};g[dle_act_lang[3]]=function(){$(this).dialog("close")};g[dle_act_lang[2]]=function(){if(!e&&1>$("#dle-promt-text").val().length)$("#dle-promt-text").addClass("ui-state-error");else{var a=$("#dle-promt-text").val();$(this).dialog("close");$("#dlepopup").remove();d&&d(a)}};$("#dlepopup").remove();$("body").append("<div id='dlepopup' class='dle-promt' title='"+c+"' style='display:none'>"+a+"<br /><br /><input type='text' name='dle-promt-text' id='dle-promt-text' class='ui-widget-content ui-corner-all' style='width:97%; padding: .4em;' value='"+b+ "'/></div>");$("#dlepopup").dialog({autoOpen:!0,width:500,resizable:!1,dialogClass:"modalfixed dle-popup-promt",buttons:g});$(".modalfixed.ui-dialog").css({position:"fixed"});$("#dlepopup").dialog("option","position",["0","0"]);0<b.length?$("#dle-promt-text").select().focus():$("#dle-promt-text").focus()}var dle_user_profile="",dle_user_profile_link=""; сделал следующее изменение: function DLEprompt(a,b,c,d,e){var g={};g[dle_act_lang[3]]=function(){$(this).dialog("close")};g[dle_act_lang[2]]=function(){if(!e&&1>$("#dle-promt-text").val().length)$("#dle-promt-text").addClass("ui-state-error");else{var a=$("#dle-promt-text").val();$(this).dialog("close");$("#dlepopup").remove();d&&d(a)}};$("#dlepopup").remove();$("body").append("<div id='dlepopup' class='dle-promt' title='"+c+"' style='display:none'>"+a+"<br /><br /><input type='text' onkeyup='xf_v_image.value = this.value' name='dle-promt-text' id='dle-promt-text' class='ui-widget-content ui-corner-all' style='width:97%; padding: .4em;' value='"+b+ "'/></div>");$("#dlepopup").dialog({autoOpen:!0,width:500,resizable:!1,dialogClass:"modalfixed dle-popup-promt",buttons:g});$(".modalfixed.ui-dialog").css({position:"fixed"});$("#dlepopup").dialog("option","position",["0","0"]);0<b.length?$("#dle-promt-text").select().focus():$("#dle-promt-text").focus()}var dle_user_profile="",dle_user_profile_link=""; то есть, в input добавил следующий обработчик: ( onkeyup='xf_v_image.value = this.value' ) 6, дополнительно (вы можете применять свои стили) создал стили для оформления "custom_v" и добавил в главную таблицу стилей "{THEME}/css/styles.css" .box {text-align: center; margin-left: auto; margin-right: auto;} .shortMini {position: relative; float: left; margin: 10px; width: 250px; height: 250px; background-color: #eee; text-align: center;} .dateMini {color: #999;} .grow img {position: relative; z-index: 10; top: 5px; height: 150px; width: 150px; -webkit-filter: sepia(75%); filter: sepia(75%); -webkit-transition: all 0.4s ease; -moz-transition: all 0.4s ease; -o-transition: all 0.4s ease; -ms-transition: all 0.4s ease; transition: all 0.4s ease;} .grow img:hover {-webkit-filter: sepia(0%); filter: sepia(0%); top: -20px; width: 248px; height: 248px; border: 1px solid #999;} .titleMini {position: absolute; top: 175px; width: 250px; margin: 5px 0 0 0; text-align: center; color: #069;} .titleMini:hover {text-decoration: underline;} В общем, примерно так. Вроде ничего не упустил. Вкратце, все работает примерно так. При введении в текстовое поле виждета для медиа (который открывается при нажатии на кнопку медиа ВВ редактора) ссылку на видео youtube, она автоматически дублируется на скрытый input и при сохранении заносится в дополнительное поле. Далее это поле считывается с БД и передается специальному модулю, где вырезается ID видео и формируется тег изображения, который и возвращается главному шаблону. Еще раз благодарю за подсказки и содействие! Всем желаю успехов! Тему можно закрыть. Цитата Ссылка на сообщение Поделиться на других сайтах
MasterEd 1 Опубликовано: 9 апреля 2016 Рассказать Опубликовано: 9 апреля 2016 Автор Напоследок, пару советов, для тех, кто попытается повторить вышесказанное, не наступайте на те же грабли, на которые наступал я и потерял много часов. 1. Если обращаетесь к модулю и передаете ему параметры типа {include file="/engine/modules/test.php?foo=bar"}. то внимательно изучите все переменные, доступные модулю. Некоторые имена переменных могут быть уже использованы и заняты, некоторые из них даже глобальны. Поэтому, если переменная не подхватывается модулем, попробуйте поменять название переменной. Спасибо CELSOFT за совет, я читал руководство невнимательно и не обращал на это внимание, в результате потерял несколько часов. Первоначально я использовал переменные "data" и "url". Но оба они оказались заняты. 2. Если создаете дополнительное поле типа {v_image}, как в моем примере, не используйте в названиях тире, можно только буквы, цифры и нижнее подчеркивание. Не знаю почему, но тире не нравится скрипту "engine/classes/js/dle_js.js", и передача дублирующего значения скрытому полю не происходит. Обнаружил косяк случайно, видимо стоит запрет на использование некоторых символов, разбираться на стал, просто переименовал файл и все переменные, которые раньше выглядели как {v-image}, то есть заменил тире на нижнее подчеркивание, и все заработало. На поиски решения убито 2 часа. ))) Успехов! 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.