Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как вывести текст с поддержкой html разметки?

Как вывести текст с поддержкой html разметки?


     27.01.2021    Общие вопросы по PHP, Модули, MySQL    220

вопрос
Доброго времени суток!
Собственно использую фотогалерею Марк 1.10 которую купил еще в 2015-м, на данный момент поддержка уже умерла, а у меня возникла задача которую я не могу решить. В данном модуле у каждого альбома есть возможность выводить описание, в данном случае это правила альбома. Но весь текст выводиться одной строкой и не воспринимается никакая html разметка. Есть ли возможность приучить данное поле к html разметке?

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


33 комментария

леший
Эксперт

леший - 27 января 2021 14:48 -

Цитата: galloko

Есть ли возможность приучить данное поле к html разметке?

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

galloko
Юзер

galloko - 27 января 2021 15:03 -

Да он чуть ли не единственный что был для DLE ) думал люди его и так знают. А что мне нужно показать или сделать? Вы скажите, я скину

dj-avtosh
PHP-developer

dj-avtosh - 27 января 2021 18:20 -

А что пробовали делать?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 27 января 2021 18:43 -


Проверял варианты вывода в разных местах, полез даже в бд чтобы проверить в каком виде хранятся данные в ячейке и за одно глянул в каком виде хранит их сама DLE, собственно и там и там было text. Пробовал выводить данные через доп поле, но если его вставлять через это поле "Правила" оно выводится так же просто текстом. Если вставлять доп.поле напрямую, то оно вообще не отрабатывает и не выводит информацию. Может что-то не так делаю. Документации по модулю 0 даже понятия не имею куда можно смотреть

dj-avtosh
PHP-developer

dj-avtosh - 27 января 2021 18:45 -

если вам нужно не в одну строку текст то нужно это делать в css для класса, который оборачивает этот текст. При чем тут админка? Или вы хотите сделать переносы абзацами?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 27 января 2021 18:53 -

Дело в том что текст может быть (и должен быть форматирован)
b i br p и тд, в данном же случае абзацы даже если они есть, убираются и весь текст идет одной строкой, не важно есть там обертка или нет. Дивом мы только задаем размер блока, остальное сделать невозможно. И может вы меня не поняли, но все теги не обрабатываются в данном блоке, они выводятся просто как текст

dj-avtosh
PHP-developer

dj-avtosh - 27 января 2021 21:16 -

вероятно там используется функция strip_tags.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 27 января 2021 22:08 -

Окей, осталось теперь понять где это выводится и как это исправить. Я нашел код, но не уверен что это то что нужно.


И нашел этот кусок

dj-avtosh
PHP-developer

dj-avtosh - 27 января 2021 22:10 -

на моменте сохранения статьи, в коде в админке. Явно не тут

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 27 января 2021 22:16 -

Может оно? Я если честно не улавливаю логику в структуре файлов
$config['charset'] = ($lang['charset'] != '') ? $lang['charset'] : $config['charset'];

include_once ENGINE_DIR . '/modules/sitelogin.php';

if (!$is_logged) $member_id['user_group'] = 5;

if ( !$user_group[$member_id['user_group']]['allow_html'] ) {

	$config['allow_site_wysiwyg'] = "no";
	$_POST['short_story'] = strip_tags ($_POST['short_story']);
	$_POST['full_story'] = strip_tags ($_POST['full_story']);

}

// --- --- ---

define( 'PHTN_DIR', ROOT_DIR.'/engine/photo/photo_nucleus' );

dj-avtosh
PHP-developer

dj-avtosh - 27 января 2021 22:18 -

если это файл от модуля, то избавьтесь от strip_tags. Но нужно доделать код, да бы не возможно было произвести xss-атаку в дальнейшем.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 27 января 2021 22:23 -

Я даже близко не программист

dj-avtosh
PHP-developer

dj-avtosh - 27 января 2021 22:19 -

но тут по всей видимости из админки просто берется настройка "разрешать html" или что-то подобное, которая и на данный модуль распространяется.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 27 января 2021 22:22 -

Это я нашел в файле add.php в в папке модуля

dj-avtosh
PHP-developer

dj-avtosh - 27 января 2021 22:28 -

используйте настройку

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 27 января 2021 22:43 -


Если про это речь, то все активно

dj-avtosh
PHP-developer

dj-avtosh - 27 января 2021 22:50 -

в настройке нужной группы

Разрешить использование HTML при добавлении новостей c сайта

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 27 января 2021 23:16 -

Поскольку я это делаю с под админа, там это и так включено

dj-avtosh
PHP-developer

dj-avtosh - 27 января 2021 23:17 -

ну значит в стол заказов

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 27 января 2021 22:08 -

Окей, осталось теперь понять где это выводится и как это исправить. Я нашел код, но не уверен что это то что нужно.


И нашел этот кусок

TeraMoune
Эксперт

TeraMoune - 28 января 2021 01:04 -

А настройки смотрели прежде чем писать сюда ? Там есть 3 варианта фильтрации описаний.

galloko
Юзер

galloko - 28 января 2021 07:32 -


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

galloko
Юзер

galloko - 28 января 2021 07:36 -


И да, теги не удаляются или заменяются. Они игнорируются как таковые

dj-avtosh
PHP-developer

dj-avtosh - 28 января 2021 10:31 -

Если это не скрин исходного кода и вы видите прямо теги - то ищите htmlspecialchars

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

galloko
Юзер

galloko - 28 января 2021 12:50 -

function clearText( $Text ){
	global $N;
	return str_replace( $N,'', trim( htmlspecialchars( addslashes( strip_tags( $Text ) ) , ENT_COMPAT, 'cp1251') ) );
}

function clearTextTwo( $Text ){
	$rep = array(
		',' => ' ',
		'.' => ' ',
		':' => ' ',
		'?' => ' ',
		'!' => ' ',
		'/' => ' ',
		'\'' => ' ',
		';' => ' ',
		'#' => ' ',
		'*' => ' ',
		'-' => ' ',
		'&' => ' ',
		')' => ' ',
		'(' => ' ',
		'_' => ' '
	);
	return strtr( $Text, $rep );
}

dj-avtosh
PHP-developer

dj-avtosh - 28 января 2021 16:21 -

Вам выше привели пример верный.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

TeraMoune
Эксперт

TeraMoune - 28 января 2021 18:01 -

dj-avtosh, Действительно, вот умеют люди скрины делать от которых только вопросы дополнительные появляются. Не понимаю чего норм скриншот не сделать (

galloko, я просмотрел все файлы где нашлось использование описаний как альбома так и картинок. Нигде дополнительной обработки текста нету. Любое описание и правила, проходят функцию фильтрации которую я показал выше.

Назревают вопросы, что за описания где и какими тегами выводится, да в каких шаблонах применяются эти теги? В каком виде находится описание в базе ?

galloko
Юзер

galloko - 28 января 2021 19:10 -


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

[rules]<div class="albom-rules">{rules}</div>
[/rules]

galloko
Юзер

galloko - 28 января 2021 19:10 -


Вот само поле в базе

TeraMoune
Эксперт

TeraMoune - 28 января 2021 19:20 -

Ну вот зачем Вы мне пустые поля показываете ?) Где текст в них, покажите данные альбома с заполненным полем в базе данных, и на странице редактирования. Как всё это выглядит на примере уже созданной категории с прописанным описанием ?

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

В каком tpl файле применяются данные теги ?

galloko
Юзер

galloko - 28 января 2021 19:44 -

Цитата: TeraMoune
В каком tpl файле применяются данные теги ?

в данном шаблоне модуля /templates/Default/photo/main.tpl
Цитата: TeraMoune
Где текст в них покажите данные категории с заполненным поле в базе данных, на странице редактирования. Как всё это выглядит ?

да обычный текст, любой, даже если <br> и <b> Они выводятся и хранятся просто как текст, и в базе и на сайте

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

TeraMoune
Эксперт

TeraMoune - 28 января 2021 20:18 -

да обычный текст, любой, даже если <br> и <b> Они выводятся и хранятся просто как текст, и в базе и на сайте

Это понятно, но текст бывает разный.

Бывает такой

<a href='test'>Test</a>

А бывает и такой

<a href='test'>Test</a>


Так вот когда я спрашивал в каком виде, я имел ввиду именно вид, а не тип данных.

Ну разобрались и то хорошо ) хоть как-то

dj-avtosh
PHP-developer

dj-avtosh - 28 января 2021 10:34 -

ему нужен ни 1 и ни 0. Но ТС так и будет стоять на своем))

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

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

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

наверх