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

#1 11 января 2019 в 23:10
Здравствуйте, уважаемые!
Вывожу поле вверху записи. Пробую удалить его из массива ниже:
  1.  
  2. unset($fields['photo']); // photo - системное имя поля
  3.  
не получается (выводится ещё раз).
Подскажите, пожалуйста, как теперь его удалять.
Заранее благодарен!
#2 11 января 2019 в 23:54
Мне пришлось внутри цикла пропускать поля, которые вывел выше
  1. <?php if ($field['name'] == 'photos' || $field['name'] == 'phone' || $field['name'] == 'price'){ continue; } ?>
#3 12 января 2019 в 00:03
Я тоже условием в цикле пока обошёлся (только весь вывод поля завернул в него). Но не привычно как-то. И менять много где придётся.
Да и просто хотелось бы понять почему unset не работает.
Спасибо!
#4 12 января 2019 в 00:31
Используйте вашу констукцию до вот этого, если речь о шаблоне записи:
  1. $fields_fieldsets = cmsForm::mapFieldsToFieldsets($fields, function($field, $user) use ($item) {
  2. if (!$field['is_in_item'] || $field['is_system']) { return false; }
  3. if ((empty($item[$field['name']]) || empty($field['html'])) && $item[$field['name']] !== '0') { return false; }
  4. if ($field['groups_read'] && !$user->isInGroups($field['groups_read'])) { return false; }
  5. return true;
#5 12 января 2019 в 14:59

Используйте вашу констукцию до вот этого, если речь о шаблоне записи:

RBJ
"Этого" нет в версии 2.11.0
#6 12 января 2019 в 15:11
Fuze проконсультировал по этому поводу.
Кроме варианта, предложенного Evanescence, можно обозначить в базе нужные поля как системные.
Для себя решил остановиться на continue. Когда таких полей несколько, делаю массив с этими полями, а потом уже условие на вывод.
#7 12 января 2019 в 15:24
Олег Васильевич я, ради любопытства сделайте вывод всех массивов, и возможно ваше фото куда более длинное название имеет в записи.
#8 12 января 2019 в 15:26


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

kirkr
Извините, не понял вас.
#9 12 января 2019 в 15:42

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

Олег Васильевич я
Самый простой вариант (Fuze): отключить показ таких полей в записи. И убрать условие на их показ, если оно раньше было выставлено.
Гениальное всегда просто))
#10 12 января 2019 в 16:05
Олег Васильевич я, мне когда понадобилось вывод делать в записях определенных полей была трудность именно с длиной в названии не просто $field а с кучей вложений, т.е. массивы в массивах.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.