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

Как получить значения дополнительных полей?


     30.10.2025    Общие вопросы, Общие вопросы по PHP    285

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

if (!is_string($top_field))

$top_field = "price";
$top_field1 = "price1";

$price = "";
$price1 = "";

if ($top_field)
{
$xfieldsdata = xfieldsdataload($row['xfields']);
$price = str_replace('\"', '', $xfieldsdata[$top_field]);
$price1 = str_replace('\"', '', $xfieldsdata[$top_field1]);
}


после обновления на 19 версию, перестала работать код, выдаёт ошибку "xfieldsdataload"

Как можно её исправить? Заранее спасибо.

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


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

TeraMoune
Эксперт

TeraMoune - 30 октября 2025 12:23 -

Не решение, а информация.

Вся логика работы доп. полей теперь перешла в отдельный класс engine/classes/xfields.class.php. Чтение и присвоение тегов из данных полей осуществляется в функции Compile в классе работы с доп. полями.

Принимаю оплату только на карту Мир. Крипту в качестве оплаты меньше трёхзначного значения не принимаю.

Yutube
Юзер

Yutube - 30 октября 2025 13:40 -

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

web102
Юзер

web102 - 30 октября 2025 16:58 -

попробуйте $xfieldsdata = DLEXFields::xfieldsdataload($row['xfields']);

Yutube
Юзер

Yutube - 30 октября 2025 17:18 -

Большой спасибо, действительно это сработало, вчера 5 часов без остановки перепробовал всё возможное, помню что даже код который вы подсказали, но не как не мог получить результат, но сейчас это сработала, видимо всё таки в какой-то части кода не то делал, ещё раз огромное спасибо

Андрей79
Юзер

Андрей79 - 30 октября 2025 18:32 -

В шаблонах используем стандартные теги:

{xfvalue_field} для доп. полей новости,

[xcvalue_field] / [xcgiven_field]…[/xcgiven_field] для полей категорий.
dle-news.com
+1

В PHP (когда нужно читать поле программно) — через класс XFields:

// $row['xfields'] — строка из БД (news/users)
$xf = DLEXFields::xfieldsdataload( $row['xfields'] );
$value = isset($xf['myfield']) ? $xf['myfield'] : '';


Это «правильный» способ на актуальных DLE, потому что парсинг и привязка тегов теперь в engine/classes/xfields.class.php.
dle-faq.ru

Безопасность и совместимость

Не выводим «сырые» значения из XFields — пропускаем через штатный парсер DLE, если там BBCode/HTML:

$parse = new ParseFilter();
$parse->safe_mode = true;
$html = $parse->BB_Parse( $parse->process($value) );


Для атрибутов HTML — htmlspecialchars($value, ENT_QUOTES, 'UTF-8').

Мы уже не трогаем сериализацию XFields напрямую в плагине; в AJAX-эндпойнтах (preview/save) используем ParseFilter и штатные API — это сохранит совместимость c DLE 19+.

Yutube
Юзер

Yutube - 30 октября 2025 18:47 -

Андрей79,
Спасибо за развёрнутый ответ

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

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

наверх