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

Снятие ограничения с оценки на статью


Рекомендованные сообщения

Здравствуйте.  у меня сразу 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

Простите, объясняю несвязанно, бессонница и усталость замучили. )) 

Ссылка на сообщение
Поделиться на других сайтах
38 минут назад, MasterEd сказал:

1. Мне нужно снять ограничения на оценки статей. То есть, по умолчанию автор не может ставить оценки на свои статьи, а пользователи могут ставить оценки только один раз. Мне нужно , чтобы люди могли ставить оценки неограниченное количество раз,поскольку сами оценки будут платными (через SMS шлюз), Поискал во многих модулях и файлах, но не нашел как и что менять. Возможно просто очень устал и не вижу того, что лежит перед носом. Ткните, пожалуйста. 

engine/ajax/rating.php и engine/ajax/ratingcomments.php для новостей и комментариев соответственно.

 

40 минут назад, MasterEd сказал:

Еще нужно найти файл, который обрабатывает теги [ media = blablabla ].

engine/classes/parse.class.php

Ссылка на сообщение
Поделиться на других сайтах

Спасибо, ограничения на повышение рейтинга статей снял, заккомментировав следующую строку в файле  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 версии скрипта. 
Попробую теперь разобраться с видео... Если вы не против, обращусь при возникновении вопросов, или отпишусь о результатах. ;) 

Ссылка на сообщение
Поделиться на других сайтах

Вдогонку по первому вопросу. Для снятия ограничения на оценки своих статей, в том же файле  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.

Ссылка на сообщение
Поделиться на других сайтах

Еще вопрос по кнопке рейтинг статьи. Речь идет о рейтинге 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 дает такие ошибки?  Ведь они вне этого тега выводят нормальные цифры. 

Буду премного благодарен за разъяснения. 

Изменено пользователем MasterEd
Ссылка на сообщение
Поделиться на других сайтах
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 код.

Ссылка на сообщение
Поделиться на других сайтах

Ясно, спасибо, вопрос с видом кнопки и обновлением решил самостоятельно. Но ваша подсказка убедила меня, что копал в правильном направлении. ))  
Пока от склонения чисел рейтинга отказался, позже сделаю хак, сейчас это не принципиально. Я пользуюсь DLE уже много лет, и мне очень нравится эта юркая, надежная система. Можно лепить из нее что угодно. Одно плохо, забываю документировать все те изменения, которые делаю в исходном коде, и после обновления приходится долго искать, что и где было изменено, чтобы внести аналогичные изменения в обновленных файлах. Но это не ваша проблема, а проблема пользователей. Спасибо за ваш продукт. Пойду дальше ковыряться. Вопрос с тумбнашками для видео еще открыт и требует срочного решения. Может есть какие то готовые модули и хаки? Поиск не дал результатов.. 

Ссылка на сообщение
Поделиться на других сайтах
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 />

я бы так сделал

 

 

Ссылка на сообщение
Поделиться на других сайтах

Отлично

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 />

я бы так сделал

 

 

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

Ссылка на сообщение
Поделиться на других сайтах

Господа, товарищи, кто нибудь сталкивался с такой проблемой? Не передаются параметры с шаблонов в инклюденные модули. Приведу простой отвлеченный пример. 
есть темплейт в котором подключаю тестовый модуль:

{include file="/engine/modules/test.php?foo=bar"}

сам файл модуля прост до безобразия: 

<?
echo $_GET['foo'];
?>

По идее, в том месте где в шаблоне есть обращение к модулю. должно выводится значение переменной foo, а именно bar. Но ничего не выводится. Хотя в документации четко указано, что можно таким образом передавать в скрипты собственных модулей любые параметры и получать ответные значения. В чем может быть причина? Речь идет о DLE11. В ранних версиях вроде как работало. 8)

Ссылка на сообщение
Поделиться на других сайтах
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

Ссылка на сообщение
Поделиться на других сайтах
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...

Изменено пользователем MasterEd
Ссылка на сообщение
Поделиться на других сайтах
28 минут назад, MasterEd сказал:

вновь возвращает Array...

Значит эта переменная у вас уже задана и занята, например другим модулем. DLE не обновляет существующие данные в системе. И нужно вам придумать другие имя переменной вместо foo, а содержание массива можно увидеть через print_r();

Ссылка на сообщение
Поделиться на других сайтах

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

Ссылка на сообщение
Поделиться на других сайтах

Всем спасибо за подсказки! Задача с видео, также, решена. 
Опишу по пунктам для тех, кому возможно понадобится аналогичное решение. 

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 видео и формируется тег изображения, который и возвращается главному шаблону. 

Еще раз благодарю за подсказки и содействие! Всем желаю успехов!

Тему можно закрыть. 

Ссылка на сообщение
Поделиться на других сайтах

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

1. Если обращаетесь к модулю и передаете ему параметры типа  {include file="/engine/modules/test.php?foo=bar"}. то внимательно изучите все переменные, доступные модулю. Некоторые имена переменных могут быть уже использованы и заняты, некоторые из них даже глобальны. Поэтому, если переменная не подхватывается модулем, попробуйте поменять название переменной. Спасибо CELSOFT за совет, я читал руководство невнимательно и не обращал на это внимание, в результате потерял несколько часов. Первоначально я использовал переменные "data" и "url". Но оба они оказались заняты. 

2. Если создаете дополнительное поле типа {v_image}, как в моем примере, не используйте в названиях тире, можно только буквы, цифры и нижнее подчеркивание. Не знаю почему, но тире не нравится скрипту  "engine/classes/js/dle_js.js", и передача дублирующего значения скрытому полю не происходит. Обнаружил косяк случайно, видимо стоит запрет на использование некоторых символов, разбираться на стал, просто переименовал файл и все переменные, которые раньше выглядели как {v-image}, то есть заменил тире на нижнее подчеркивание, и все заработало. На поиски решения убито 2 часа. ))) 

Успехов!

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...