Astuce: suppression des éléments Seblod

13311 vues
05 novembre 2014
Cyril
seblodbyoctopoosinline

 

Dans nos formations SEBLOD nous voyons comment gérer un workflow efficace et professionnel en utilisant le CCK SEBLOD pour son site Joomla.

Je m'explique : imaginons que votre site permette aux utilisateurs de publier des annonces. Vous proposez aussi aux autres utilisateurs de pouvoir mettre ces annonces en favori : ce n'est pas bien compliqué à faire gràce à SEBLOD. (vous créez un type de contenu 'favori' qui stocke l'id de l'annonce et l'id user) Maintenant, problème, vous donnez la possibilité au créateur de l'annonce de pouvoir la supprimer.

MAIS s'il la supprime, les favoris qui pointent sur cette annonce vont afficher une page 404.... la solution est toute simple : il faut créer un état 'suppression'.  Pourquoi ne pas utiliser l'état 'dépublié' ou 'trashed' ? Parcequ'il faut les laisser pour l'utilisation normale de ces état (l'utilisateur peut vouloir juste dépublier sans forcément supprimer, ou même archiver ses contenus - quant au trashed il peut être utile si certains autres type de contenu l'utilisent, ca nous servira de tri spécifique pour les annonces)

Sur votre type de contenu 'annonce', dans la vue site, overidez le champ 'art_state' et créez en un qui s'appelle 'annonce_state' vous le faites stocker dans le même stockage que 'art_state' (c'est à dire dans le champ 'state' de la table 'content') La vous recréez les statut du champ originial 'art_state' ET vous rajoutez l'état 'suppression = 9'

AINSI lorsqu' on éditera l'annonce pour la supprimer, elle restera dans notre base et sera encore accessible aux autres utilisateurs... pensez juste à filtrer les listes 'liste de mes annonces' pour afficher les état 1,0 et 2 pour ne plus jamais afficher les éléments supprimés. Il sera utile de faire un champ code dans la vue contenu de 'annonce'  pour afficher une phrase du genre 'ce contenu a été supprimé' et cacher les possibles champ d'action de ce contenu ('entrer en relation', 'mettre en favori' etc...) UNIQUEMENT si le $fields['art_state'] == 9

pas plus compliqué !

 

mon compte google +        https://plus.google.com/u/0/111173509958661808617