Как программно импортировать блок в существующее представление?

Aug 17 2020

Мне нужно программно импортировать блок в существующее представление с его настройками .

Я знаю, как экспортировать весь вид и программно импортировать его. Но я не хочу экспортировать весь вид, а затем импортировать его целиком. На мой взгляд, есть 25 блоков, поэтому мне нужно импортировать 4000 строк кода. Я могу скопировать код экспорта только своего нового блока. Но как импортировать только эту часть кода в существующее представление ? Это возможно? Я не могу найти никаких решений.

Ответы

1 ShawnConn Aug 18 2020 at 04:42

Указанный «блок», который вы указываете в пользовательском интерфейсе, внутренне называется «дисплеем». Дисплеи хранятся внутри объекта просмотра в displayсвойстве (например $view->display).

Если вы посмотрите на код экспорта представлений, вы должны увидеть образец экспортируемых блоков (например /* Display: Block 1 */, /* Display: Block 2 */и т. Д.), Который визуализируется views::export()методом.

Для каждого блока (т. Е. Отображения) вы должны увидеть следующие за $handler = $view->new_display(...)ним несколько $handler->display...строк, которые добавляют соответствующие поля / фильтры для этого отображения.

Чтобы программно импортировать один дисплей, вы должны сделать что-то вроде следующего:

$view = views_get_view('my_existing_view'); // @TODO: Add my new display handler code $view->save();