Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Вопросы КЭПу » Dle 13.1 доп поле + php ?

Dle 13.1 доп поле + php ?


     22.10.2018    dle, php, дополнительные поля    Вопросы КЭПу    614

вопрос
Почему-то в дле 13 версии доп поля не работают в php скриптах.
Например так:
<?php
$text0 = file_get_contents("[xfvalue_fname]");
?>

и так:
<?php
curl_setopt($ch, CURLOPT_URL, "[xfvalue_fname]");
?>

В 12 версии работало нормально.
Кто знает в связи с чем это связано и как исправить?

Ответил: КЭП


Dle 13.1 доп поле + php ?

— Тогда мы идём к вам!

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

dj-avtosh
Эксперт

dj-avtosh - 22 октября 2018 14:12 -

Что это вообще за дичь?

telegram: @blob42 (https://t.me/blob42)

Bashmak
Юзер

Bashmak - 22 октября 2018 14:19 -

В целом это: php скрипт вставленный в шаблон fullstory.tpl
Внутри скрипта вставлено доп поле.
[xfvalue_x] Значение дополнительного поля "x", где "x" название дополнительного поля

Только чтобы php работал в tpl шаблонах нужно сделать это - https://dle-news.ru/tips/33-ispolzovanie_ljubykh_php_vstavok_v_shablonakh.html

Ну так вот в 12 версии доп поля нормально работали внутри php, а в 13 версии не работают.

В моём случае в доп поле занесена ссылка.
Примерно уже нашел предполагаемую причину.
Если я добавляю доп поле например в js скрипт, то он выводит ссылку вот так:
http&#58://сайт.ru/...

Почему-то после http вместо двоеточие стоит:
&#58

Видимо из за
&#58
скрипт php и не хочет воспринимать такую ссылку.

dj-avtosh
Эксперт

dj-avtosh - 22 октября 2018 14:30 -

Это вправду дичь, но может сработать так так:

$text0 = file_get_contents(html_entity_decode("[xfvalue_fname]"));

telegram: @blob42 (https://t.me/blob42)

Bashmak
Юзер

Bashmak - 22 октября 2018 15:18 -


Не помогло.
Интересно почему в 13 версии ссылки так заносятся в базу.
После обновления с 12 на 13 версию, дле сконвертировал базу из utf-8 в utf8mb4.
Причина может быть в этом?

lutskboy
Юзер

lutskboy - 22 октября 2018 15:43 -

подключайте как модуль в шаблоне
{include file='mymod.php?url=[xfvalue_url]'}

Bashmak
Юзер

Bashmak - 22 октября 2018 15:52 -

Вот так чтоли? =)

<?php
$text0 = file_get_contents("{include file='mymod.php?url=[xfvalue_url]'}");
?>

<?php
curl_setopt($ch, CURLOPT_URL, "{include file='mymod.php?url=[xfvalue_url]'}");
?>

А что должно быть в файле mymod.php?

lutskboy
Юзер

lutskboy - 22 октября 2018 16:03 -

в сам шаблон тпл
а уже в самом mymod.php

<?php
$text0 = file_get_contents($url);
?>

Flash
Юзер

Flash - 22 октября 2018 18:18 -

Попробуйте так
$text0 = file_get_contents(str_replace('&#58;', ':', "[xfvalue_fname]"));

Bashmak
Юзер

Bashmak - 22 октября 2018 19:57 -


В общем, кароче я нашел причину =)
Всё дело было в этом пункте(скрин), убрал галочку и теперь нормально в базу данных как положено ссылка заносится.
Это точно глюк 13 версии, в 12 у меня эта галочка стояла всегда и норм было.
Видимо теперь по мнению разрабов двоеточие (:) считается html тегом =)

Flash
Юзер

Flash - 22 октября 2018 20:04 -

Сомневаюсь, смотрел в коде, между 12 и 13 версиями никакой разницы в обработке именно этого символа в подобном случае нет.

PunPun
Эксперт

PunPun - 22 октября 2018 21:31 -

Flash, плохо смотрел.

Мой блог: PunPun.name

Flash
Юзер

Flash - 22 октября 2018 21:36 -

PunPun,
Ты внимательно прочел, что я написал и где пруфы? Так любой может запостить.

PunPun
Эксперт

PunPun - 22 октября 2018 21:55 -


Мой блог: PunPun.name

Flash
Юзер

Flash - 22 октября 2018 22:24 -

Цитата: PunPun
:

Боже мой, о великий гуру, ты невнимательно прочел мое сообщение, я написал что разницы нет в коде, найди по
&#58;
файлы в 12 и в 13 версии и сравни. В "xfields.php" вообще разницы нет в строках с этим символом, есть небольшая разница в "parse.class.php", но она не имеет отношение к данной проблеме. Вот что я имел в виду, дошло теперь?) И тем более у ТС доп.поле не "file", а "строка".

PunPun
Эксперт

PunPun - 22 октября 2018 23:55 -


Flash, 13.1, есть строки которые делают реплейс для полей которые: Перекрестные ссылки, Не использовать HTML / JS, Тип список, Тип загружаемое изображение, Тип галерея или Тип файл.
$newpostedxfields[$value[0]] = str_replace( array("{", "[", ":"), array("&#123;", "&#91;", "&#58;"), $newpostedxfields[$value[0]] );

В 12.1 таких строк нет. Так что прежде чем выставлять себя умнее кого-то убедись что ты прав в этом. И да, я гуру а ты нет.

Мой блог: PunPun.name

Flash
Юзер

Flash - 23 октября 2018 00:25 -

Я тебе писал про 13 версию, так как просто не заметил, что в заголовке вопроса ТС указал именно 13.1.
Так и я тебе могу посоветовать, что если пишешь кому-то опровержение - указывай пруф, а не голословно пиши. Так везде принято. Корону поправь гуру, будь попроще, это ты себя выставляешь умнее других.

dj-avtosh
Эксперт

dj-avtosh - 23 октября 2018 12:13 -

не надо переходить на личности.

telegram: @blob42 (https://t.me/blob42)

Flash
Юзер

Flash - 23 октября 2018 12:21 -

Согласен, но когда тебе пишут "ноунейм" - не очень приятно, так? Так что надеюсь, что ты призывал не только меня, но и великого гуру)

dj-avtosh
Эксперт

dj-avtosh - 23 октября 2018 12:24 -

Безусловно.

telegram: @blob42 (https://t.me/blob42)

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

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

наверх