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

Я знаю, как экспортировать весь вид и программно импортировать его. Но я не хочу экспортировать весь вид, а затем импортировать его целиком. На мой взгляд, есть 25 блоков, поэтому мне нужно импортировать 4000 строк кода. Я могу скопировать код экспорта только своего нового блока. Но как импортировать только эту часть кода в существующее представление ? Это возможно? Я не могу найти никаких решений.
Ответы
Указанный «блок», который вы указываете в пользовательском интерфейсе, внутренне называется «дисплеем». Дисплеи хранятся внутри объекта просмотра в 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();