Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Как сделать вывод {image-1} и {comments-num} в {customcomments order="date" limit="5"}?

Как сделать вывод {image-1} и {comments-num} в {customcomments order="date" limit="5"}?


     11.03.2019    Все вопросы » Хаки    758

вопрос
Как сделать обработку {image-1} и {comments-num} в шаблоне {customcomments order="date" limit="5"}? То есть, чтобы при выводе последних комментариев отображалось изображение из новости и количество комментариев.

Ответа пока нет


6 комментариев

finik
Юзер

finik - 11 марта 2019 09:20 -

Забыл уточнить - DLE 12.1

OuteerMan
Юзер

OuteerMan - 11 марта 2019 16:32 -

Ручками. Скопировать функционал из любого модуля где используется обработка этих тегов и добавить всё это в comments.class.php в функцию compile_comment.

Предварительно добавив в sql запрос получение данных из полей short_story,full_story ну и у меня еще и от сюда картинки тянет, если нету в новостях xfields.

finik
Юзер

finik - 12 марта 2019 10:17 -

Функцию, отвечающую за {image-1} нашел и добавил, но сейчас вместо картинки заглушка no_image. Понимаю, что надо добавить запрос к БД, но вот с этим не получается. Подскажите запрос или примерное направление, где "копать"?

OuteerMan
Юзер

OuteerMan - 12 марта 2019 11:00 -

А вы не забыли убрать слэши в переменных которые содержат текст новостей ? Перед тем как в модуле находят {image-N}
$row['short_story'] = stripslashes($row['short_story']);

А только потом регулярно выражение нормально находит картинки.

Никакие другие запросы не нужны, всё есть в файле functions.php в функции вывода комментов (custom_comments). Там и запрос и всё остальное.

finik
Юзер

finik - 12 марта 2019 11:18 -

В файле comments.class.php добавил данный код:
$row['short_story'] = stripslashes($row['short_story']);
		
		if (stripos ( $tpl->copy_template, "{image-" ) !== false) {

			$images = array();
			preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $row['short_story'].$row['xfields'], $media);
			$data=preg_replace('/(img|src)("|\'|="|=\')(.*)/i',"$3",$media[0]);
	
			foreach($data as $url) {
				$info = pathinfo($url);
				if (isset($info['extension'])) {
					if ($info['filename'] == "spoiler-plus" OR $info['filename'] == "spoiler-minus" OR strpos($info['dirname'], 'engine/data/emoticons') !== false) continue;
					$info['extension'] = strtolower($info['extension']);
					if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url);
				}
			}
	
			if ( count($images) ) {
				$i_count=0;
				foreach($images as $url) {
					$i_count++;
					$tpl->copy_template = str_replace( '{image-'.$i_count.'}', $url, $tpl->copy_template );
					$tpl->copy_template = str_replace( '[image-'.$i_count.']', "", $tpl->copy_template );
					$tpl->copy_template = str_replace( '[/image-'.$i_count.']', "", $tpl->copy_template );
				}
	
			}
	
			$tpl->copy_template = preg_replace( "#\[image-(.+?)\](.+?)\[/image-(.+?)\]#is", "", $tpl->copy_template );
			$tpl->copy_template = preg_replace( "#\\{image-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
	
		}

но выводится только заглушка.

OuteerMan
Юзер

OuteerMan - 12 марта 2019 11:29 -

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

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

Похожие вопросы

наверх