¿Cómo importar programáticamente un bloque a una vista existente?

Aug 17 2020

Necesito importar mediante programación un bloque a la vista existente con su configuración .

Sé cómo exportar la vista completa e importarla mediante programación. Pero no quiero exportar la vista completa y luego importar la vista completa. En mi opinión, hay 25 bloques, por lo que me da 4000 líneas de código para importar. Puedo copiar el código de exportación solo de mi nuevo bloque. Pero, ¿cómo importar solo esta parte del código a la vista existente ? ¿Es eso posible? No puedo encontrar ninguna solución.

Respuestas

1 ShawnConn Aug 18 2020 at 04:42

El "bloque" indicado que señala en la interfaz de usuario se denomina internamente "pantalla". Las visualizaciones se almacenan dentro del objeto de vista en la displaypropiedad (p. ej $view->display., ).

Si observa el código de exportación de vistas, debería ver el patrón de bloques exportados (p. ej /* Display: Block 1 */., /* Display: Block 2 */, etc.) que representa el views::export()método.

Para cada bloque (es decir, pantalla), debería ver $handler = $view->new_display(...)seguido de muchas $handler->display...líneas que agregan los campos/filtros relevantes para esa pantalla.

Para importar mediante programación una sola pantalla, haría algo como lo siguiente:

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