Comment importer par programme un bloc dans une vue existante ?

Aug 17 2020

J'ai besoin d' importer par programme un bloc dans une vue existante avec ses paramètres .

Je sais comment exporter la vue entière et l'importer par programme. Mais je ne veux pas exporter la vue entière, puis importer la vue entière. À mon avis, il y a 25 blocs, donc cela me donne 4000 lignes de code à importer. Je ne peux copier que le code d'exportation de mon nouveau bloc. Mais comment importer uniquement cette partie de code dans la vue existante ? Est-ce possible? Je ne trouve aucune solution.

Réponses

1 ShawnConn Aug 18 2020 at 04:42

Le "bloc" indiqué que vous pointez dans l'interface utilisateur est appelé en interne un "affichage". Les affichages sont stockés à l'intérieur de l'objet de vue dans la displaypropriété (par exemple $view->display).

Si vous regardez le code d'exportation des vues, vous devriez voir le modèle de blocs exportés (par exemple /* Display: Block 1 */, , /* Display: Block 2 */, etc.) rendu par la views::export()méthode.

Pour chaque bloc (c'est-à-dire l'affichage), vous devriez voir le $handler = $view->new_display(...)suivi de plusieurs $handler->display...lignes qui ajoutent les champs/filtres pertinents pour cet affichage.

Pour importer par programmation un seul affichage, procédez comme suit :

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