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

Как вывести первое значения доп поля?


     17.01.2021    вывод первого значения доп поля    Общие вопросы, Общие вопросы по PHP    1156

вопрос
На сайте есть подобный вопрос, но ответа на него нет.

Нужно вывести первое значение определенного доп поля, например country выводит значения списком через запятую США, Канада
Нужно чтобы через функцию вывода осталось только первое значение: США

знаю что нужно написать на php условие и подсчет количества значений через функцию explode(',' и всё это вставить в файл show.full.php(для полной новости) или show.short.php(короткой новости) только знаний в php для этого не достаточно.

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

Ответил: TeraMoune


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

alekscloud
Юзер

alekscloud - 17 января 2021 21:58 -

@TeraMoune, спасибо огромное! всё работает как нужно, единственное в хаке/плагине условие: $matches[2]) !== false
которое как понял выводит информацию только если в доп поле 2 значения

не знаю на сколько правильно, пока что сделал так:
$matches[1]) !== true

TeraMoune
Эксперт

TeraMoune - 17 января 2021 22:37 -

stripos($xfieldsdata[$value[0]], $matches[2]) !== false

в условии проверяет наличие знака разделителя в доп. поле по которому происходит explode функция, и если его не находит то тег ничего не выводит.

Строку можно удалить в принципе, тогда оно просто будет проверять наличие доп поля

alekscloud
Юзер

alekscloud - 18 января 2021 01:40 -

в исходном виде если в доп поле одно значение то ничего не выводит, выводит только если в доп поле 2 значения.
например имеем:
Значение1, Значение2
Выводит: Значение1
Если имеем
Значение1
Выводит: пусто

подозреваю этот код проверяет количество значений: $matches[2]) !== false
пока что обошелся так: $matches[1]) !== true тогда выводит и при одном значении

в любом случае спасибо, вы очень помогли! и еще смотрю у вас там еще всякие полезности, буду изучать)

TeraMoune
Эксперт

TeraMoune - 18 января 2021 02:35 -

подозреваю этот код проверяет количество значений:

Каким же образом он проверяет количество ?)

Я объясню еще раз, условие срабатывает по умолчанию при наличие разделителя. Чтобы это убрать нужно удалить строку о которой идёт речь. Она проверяет наличие explode символа в доп поле.

TeraMoune
Эксперт

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

На вот, почитай чтобы в будущем за зря не пытался отвечать за то в чем не разбираешься.
http://www.php.su/strpos Тут написано что делает функция и там ничего не написано про подсчёт

И в третий раз пишу, удали строку.

stripos($xfieldsdata[$value[0]], $matches[2]) !== false

Оно не считает, оно проверяет позицию explode в доп поле. И требует чтобы знак explode был в строке.

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

alekscloud
Юзер

alekscloud - 19 января 2021 02:32 -

Спасибо, разобрался) уже давно хочу изучить язык php, теперь желания прибавилось еще больше)

montiorko
Юзер

montiorko - 19 января 2021 15:38 -

А можно сохранять html теги? Интересуют перекрестные ссылки, выводится как текст.

montiorko
Юзер

montiorko - 19 января 2021 16:17 -

Как понимаю, без проверки условий ЧПУ и перекрестных ссылок, код будет такой:

$xfieldsdata_tmp[($matches[1] - 1)] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" .$value[0]."/". rawurlencode( $xfieldsdata_tmp[($matches[1] - 1)] ) . "/\">" . $xfieldsdata_tmp[($matches[1] - 1)] . "</a>";

TeraMoune
Эксперт

TeraMoune - 19 января 2021 16:36 -

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

montiorko
Юзер

montiorko - 19 января 2021 16:38 -

Понял, спасибо большое за модуль. Он отличный и гибкий.

TeraMoune
Эксперт

TeraMoune - 19 января 2021 23:08 -

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

hunters
Юзер

hunters - 23 марта 2023 09:25 -

А если поле имеет вид "слово_слово", то как можно переписать
#\[xfvalue_{$preg_safe_name}_(d+) explode=['"](.+?)['"]\]#i
чтобы выводило? С одним словом выводит без проблем

TeraMoune
Эксперт

TeraMoune - 23 марта 2023 12:23 -

Ничего не понял...

hunters
Юзер

hunters - 23 марта 2023 22:27 -

Например поле shikimori_season с нижним подчеркиванием

TeraMoune
Эксперт

TeraMoune - 24 марта 2023 00:44 -

У меня никаких проблем нету, хоть 3 слова, хоть 5. Работает как положено.

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

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

наверх