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

Как сделать массив в качестве значения по умолчанию доп.поля ?


     25.12.2019    Общие вопросы по PHP, Модули, Хаки    869

вопрос
Доброго времени суток, зная что авторы модулей читают DLE-FAQ сразу сказу спасибо двум разработчикам:
https://sandev.pro/web/146-multivybor-v-doppolyah-dlya-dle-13.html
https://lazydev.pro/fcode/34-multi-select-plugin.html

Мне бы очень хотелось чтобы для определенного поля (списка) значения по умолчанию подсасывались из ранее сформированного мой массива, конструкция простая:
if(названия моего доп-поля) $значение поля по умолчанию = $мой массив;

Подскажите в каком файле её писать, а возможно название массива в котором лежат значения полей по умолчанию?

И возможно уже есть решение, чтобы выбранные значения из списка обернуть в HTML?
Если я выбираю из списка:
один
два
три
А на выходе получу

<ul class="mycalss">
<li><img src="один"> один</li>
<li><img src="два"> два</li>
<li><img src="три"> три</li>


Спасибо!

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


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

UsurpatorVaticana
Юзер

UsurpatorVaticana - 25 декабря 2019 14:04 -

Для будущих поколений

if($value[0] == "teams_list") { 
              	$postedxfields[$value[0]][] = "<li>" . $valuexf1[0] . "</li>";
} else { //закрылся If доп поле teams_list
              	$postedxfields[$value[0]][] = $valuexf1[0];	
}


А как свой массив всунуть, пока ещё актуально.

dj-avtosh
PHP-developer

dj-avtosh - 26 декабря 2019 10:17 -

я не очень понимаю откуда взялась $valuexf1? Покажите массив, который вы описываете в цикле.

По заказам пишем сюда: @Rud00y

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

dj-avtosh
PHP-developer

dj-avtosh - 25 декабря 2019 16:35 -

Ничего непонятно из вопроса...

По заказам пишем сюда: @Rud00y

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

UsurpatorVaticana
Юзер

UsurpatorVaticana - 25 декабря 2019 18:45 -

dj-avtosh, есть массив на 20 строк, он часто обновляется, добавляются и удаляются строки
Я хочу чтобы у доп. поля типа список, по умолчанию были не значения которые я могу задать по умолчанию из админки, а текущие данные из моего массива

ТeraМoune
Юзер

ТeraМoune - 26 декабря 2019 14:17 -

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

Формирование этого всего находиться в файле inc/xfields.php
примерный код в оригинале

        foreach (explode("\r\n", htmlspecialchars($value[4], ENT_QUOTES, $config['charset'] )) as $index1 => $value1) {

		  $value1 = explode("|", $value1);
		  if( count($value1) < 2) $value1[1] = $value1[0];
          $select .= "<option value=\"$index1\"" . (in_array($value1[0], $fieldvalue) ? ' selected' : '') . ">{$value1[1]}</option>\r\n";
        }

тут разбивается переменная $value[4] которая хранит значения поля, вот тут в цикле и подставлять свой массив
но код этот точно будет отличаться в виду модификаций упомянутых плагинов.

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

Код начинается примерно так
Тут разбивает значения по знаку, и дальше в цикле собираются li элементы

if($value[3] == "imagegalery" AND $xfieldsdata[$value[0]] AND stripos ( $tpl2->copy_template, "[xfvalue_{$value[0]}" ) !== false) {
								
$fieldvalue_arr = explode(',', $xfieldsdata[$value[0]]);

и после помещаете это всё в ul

$xfieldsdata[$value[0]] = "<ul class=\"xfieldimagegallery {$value[0]}\">".implode($gallery_image)."</ul>";


P.S. Но так же нужно еще править код который принимает значения при сохранении, ведь там есть функция in_array которая будет сверять значения переданные с значением поля и если переданного значения не будет то оно не попадёт.

UsurpatorVaticana
Юзер

UsurpatorVaticana - 27 декабря 2019 11:50 -


ТeraМoune, действительно годный ответ, спасибо за подробную роспись
Я вкрутил планиг мультивыбора списка от LazyDev и уже в нём модифицирую, сам список сформировал не заходя в show.full, если работает стоит ли переделывать? (см скрин)

Из скрина уже понятно
$options = explode("\r\n", $value[4]);

Что options или value4 это то, что мне нужно подменить своим массивом, далее дело техники

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

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

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

наверх