web-dev-qa-db-fra.com

Personnalisation du versionnage du contenu

Dans le composant du Gestionnaire d’article, juste après avoir enregistré l’article, il est automatiquement défini comme version actuelle de l’article. Je ne trouve pas le code selon lequel les données sont également stockées dans la table ucm_history. Je souhaite y apporter des modifications, car lorsque j'enregistre l'article, il ne devient pas automatiquement la version actuelle. Dans ce cas, je dois accéder à la barre d'outils des versions pour le définir en tant que version actuelle.

De plus, dans la configuration globale des articles de la section Modification de la présentation, l'option Enregistrer l'historique étant définie sur Oui, je souhaite obtenir cette partie du code afin de pouvoir effectuer la personnalisation que j'ai mentionnée plus tôt, mais dans le com_content/models/article. php sur la fonction Save, il n’inclut pas le code permettant de stocker des données dans la table ucm_history.

MISE À JOUR: 16 h 56 https://docs.joomla.org/Using_Content_History_in_your_Component#Add_Rows_to_Content_Types_Table

J'ai téléchargé le fichier à partir de ce lien et après avoir lu le tutoriel, il n'y avait pas de code spécial pour utiliser la table de ucm_history, ils ont seulement ajouté la ligne de code dans une classe de table: pour que le composant puisse utiliser le contrôle de version du contenu:

JObserverMapper :: addObserverClassToClass ('JTableObserverContenthistory', 'JoomprosubsTableSubscription', array ('typeAlias' => 'com_joomprosubs.subscription'));

Mais après avoir installé le composant exemple à partir du lien, cela ne fonctionne toujours pas.

des pensées?

2
Break the Law

Eh bien, Joomla est un mélange d’ancien et de nouveau. Contenthistory n'utilise pas les événements classiques mais le modèle d'observateur. Jetez un coup d'œil à JTableObserverContenthistory (bibliothèques/joomla/table/observateur/contenthistory.php).

Vous pouvez trouver le "hook" dans JTableContent->__construct() (libraries/legacy/table/content.php, ligne 34):

JTableObserverContenthistory :: createObserver ($ this, array ('typeAlias' => 'com_content.article'));

C'est là que l'observateur est créé.

4
Nils Rückmann

J'ai corrigé l'erreur, j'avais juste besoin d'ajouter les paramètres pour sauvegarder l'historique et j'ai ajouté cette ligne dans la méthode de construction:

JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_joomprosubs.subscription'));
1
Break the Law