Utiliser les Insert Record dans un plugin "maison"
De Typo3 CMS / Documentation Typo3 / Support Typo3.
Sommaire |
Introduction
Le type de contenu "Insert Record" permet de gérer un affichage pour un ou des enregistrements sélectionnés par "Picking". Ce contenu peut être très pratique lorsque l'on veut permettre aux webmaster de mettre en avant un type d'enregistrement précis sur un site. Mais comment paramètre-t'on l'affichage d'un type d'enregistrement issu d'un plugin maison ? C'est ce que nous allons voir dans la suite de cet article en procédant par étape. Nous prendrons comme exemple la création d'un plugin qui affiche des publications. L'utilisateur doit pouvoir s'il le souhaite mettre en avant une des publications en la sélectionnant parmi la liste des publications disponibles. Ce fonctionnement correspond tout à fait aux possibilités du 'Insert Record'
Lors de la création du plugin de publication
Lors de la création de la table qui contiendra les enregistrements "publication", il faut cocher la case Allowed in "Insert Records" field in content elements:
Cette case permet d'autoriser l'utilisateur à aller piocher depuis un contenu 'Insert Record' dans les enregistrements de type publication.
Typoscript
Il est nécessaire de faire le lien entre la table des publications créees ci-dessus et la fonction php qui va générer son affichage. Ce lien se fait dans le Typoscript grâce au code suivant :
tt_content.shortcut.20.0 {
tables:=addToList(tx_obladytables_publication)
conf {
tx_obladytables_publication < plugin.tx_obladypublications_pi1
tx_obladytables_publication.insert_records = displaySingle
}
}
Dans le code ci-dessus, il vous sera certainement nécessaire de remplacer les lignes suivantes :
tables:=addToList(tx_obladytables_publication) Cette ligne définie la table utilisée par le "Insert Record"
conf.tx_obladytables_publication < plugin.tx_obladypublications_pi1 Cette ligne définie quelle fonction 'Insert Record' va utiliser pour gérer le rendu d'un enregistrement de la table tx_obladytables_publication.
conf.tx_obladytables_publication.insert_records = displaySingle
Cette ligne me permet de passer un paramètre spécifique au plugin qui va générer le rendu. Ainsi dans mon code php j'ajouterai simplement un test sur la variable 'insert_records'. Si cette variable existe cela signifie que le rendu est appelé depuis un Insert Record et donc je pourrais définir un comportement particulier.
Dans ma fonction class.tx_obladypublications_pi1
Dans la classe qui gère le rendu de mes publications je dispose désormais d'un paramètre dans le $this->conf qui m'indique si le rendu de ma publication est appelée par un Insert Record ou pas. Je suis donc dans la possibilité de lancer une fonction spéciale pour le rendu depuis un 'Insert Record'.
if ($this->conf['insert_records']) return $this->drawInsertRecordPublication();
Dans ma fonction drawInsertRecordPublication je dispose d'un paramètre permettant de récupérer l'uid de la publication actuellement traitée.
$idPublication = $this->cObj->data['uid'];
Les possibilités d'utilisation
Grâce au Typoscript nous pouvons définir des rendus et de lancer des fonctions différentes en fonction du contexte.
'Insert Record' est capable de traiter itérativement chaque enregistrement si plusieurs enregistrement sont pointés dans le Insert Record.
'Insert Record' est capable de traiter des enregistrements différents au sein du même contenu. Il est ainsi possible d'afficher indifféremments tout type d'enregistrement dans n'importe quel ordre et dans un nombre non défini.
