Catalog > Publication et Prévisualisation

Développement d'extensions tierces
Avatar de l’utilisateur
F2lt
Membre
Messages : 164
Inscription : 26 Mai 2011 09:24
Localisation : L'Isle sur Sorgue - Vaucluse (84)

Catalog > Publication et Prévisualisation

Messagepar F2lt » 11 Avr 2013 17:52

Bonjour,

Lors de ma collaboration fructueuse avec Yann (iankoOol) sur le site du Professeur Cyclope j'ai été amené à travailler sur la publication et la prévisualisation des éléments de contenu de Catalog :

1. Le bouton de publication/dépublication d'un élément : BUG

On peut associer un des champs défini comme Champ Publié : Contenu principal > Nom, table et page de redirection > Champs publié et utiliser le bouton standard de publication dans la liste des éléments de ce contenu. Mais hélas un petit bug empêche le fonctionnement correct du tout : http://www.contao-forge.org/issues/2578
Il se corrige rapidement en changeant dans :

Code : Tout sélectionner

system/modules/catalog/Catalog.php
1122 if($this->Input->get('tid'))
1123  {
1124     // Update database
1125     $this->Database->prepare('UPDATE '.$objCatalog->tableName.' SET ' . $this->publishField . '=? WHERE id=?')
1126                 ->execute($this->Input->get('state')=='1'?'1':'', $this->Input->get('tid'));
 1127    exit;
 1128  }

le $this->Input->post('tid') par $this->Input->get('tid') à la ligne 1126. C'est logique et cohérent avec le test de la ligne 1122 :wink:

2. La prévisualisation des éléments de Catalog non publié

La définition de notre champ ne suffit pas, car dans les différentes requêtes SQL de Catalog le champ est utilisé directement (publie = 1) et Catalog ne prévoit pas de "liaison" avec le mode de prévisualisation.

Pour permettre aux utilisateurs de visualiser sans publication "réelle", le publie = 1 est remplacé par un insertag {{kiCatalogYL::isPublished}} qui va tenir compte du fait que l'on se trouve ou non en prévisualisation avec les élements non publiés masquer/afficher :
- si l'on est en Eléments non publiés : afficher , il est remplacé par : (publie=0 OR publie=1)
- dans le cas contraire par : publie=0

Il suffit d'utiliser/remplacer publie=1 par {{kiCatalogYL::isPublished}} dans les requêtes Catalog pour utiliser Éléments non publiés: afficher/masquer en prévisualisation pour les éléments de Catalog. 8)

Voici la méthode et le code pour définir cet insertag :

1. créer un dossier dans system/module, on l'appelle monModule

2. créer dans monModule un dossier config[/b] avec un fichier config.php

3. ajouter la ligne à config.php :

Code : Tout sélectionner

system/module/monModule/config.php
<?php
$GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('KiHooksFrontend', 'kiReplaceInsertTags');
?>

pour définir notre hook replaceInsertTags

4. créer dans monModule le fichier de la classe KiHooksFrontend : KiHooksFrontend.php contenant :

Code : Tout sélectionner

system/module/monModule/KiHooksFrontend.php :
class KiHooksFrontend Extends Frontend
{
public function kiReplaceInsertTags($strTag) {
      switch ($strTag) {
      case 'kiCatalogYL::isPublished': // {{kiCatalogYL::isPublished}}
            if ($this->Input->cookie('FE_PREVIEW')) {
              return '(publie=0 OR publie=1)';
            }
            else {
              return ' publie=1';
            }
     default:
       return false;
      }
 }
}

:idea: Contao utilise l'existance d'un cookie FE_PREVIEW pour déterminer si l'on est en mode preview avec Eléments masqués : afficher (/contao/switch.php ligne 108).

J'espère n'avoir pas été trop long.
F2lt :)
Je soutiens Mira Europe qui éduque et remet gratuitement des chiens guides d'aveugles aux enfants aveugles : http://www.miraeurope.org/

Avatar de l’utilisateur
ST WebDesign
Membre
Messages : 291
Inscription : 29 Avr 2009 20:57
Localisation : Vendée
Contact :

Re: Catalog > Publication et Prévisualisation

Messagepar ST WebDesign » 24 Mai 2013 14:36

Salut,

Merci pour ce tuto :wink:
Je bug à la 1ère étape... lol
J'ai bien modifié le code, pour ça pas de problème.
Mais que dois-je faire ensuite ? je n'ai pas de champs visible dans le déroulant "Champs publié"

Il y a surement une manip à effectuer, mais je ne trouve pas la solution !
As-tu une piste pour moi ?

Merci d'avance,
Sam
www.igweb.fr

Avatar de l’utilisateur
F2lt
Membre
Messages : 164
Inscription : 26 Mai 2011 09:24
Localisation : L'Isle sur Sorgue - Vaucluse (84)

Re: Catalog > Publication et Prévisualisation

Messagepar F2lt » 24 Mai 2013 15:02

Bonjour,

Curieux en principe, il te propose la liste des champs de type case à cocher [checkbox] que tu as créés dont naturellement le champ qui va te servir de champ de publication. :roll:

F2lt
Je soutiens Mira Europe qui éduque et remet gratuitement des chiens guides d'aveugles aux enfants aveugles : http://www.miraeurope.org/

Avatar de l’utilisateur
ST WebDesign
Membre
Messages : 291
Inscription : 29 Avr 2009 20:57
Localisation : Vendée
Contact :

Re: Catalog > Publication et Prévisualisation

Messagepar ST WebDesign » 24 Mai 2013 15:21

F2lt a écrit :Bonjour,

Curieux en principe, il te propose la liste des champs de type case à cocher [checkbox] que tu as créés dont naturellement le champ qui va te servir de champ de publication. :roll:

F2lt


Oups, j'ai pas créé de champs case à cocher... lol Ahahaha :oops:
www.igweb.fr

Avatar de l’utilisateur
MIMATA
Membre
Messages : 453
Inscription : 23 Avr 2008 08:29
Localisation : France
Contact :

Re: Catalog > Publication et Prévisualisation

Messagepar MIMATA » 15 Sep 2014 16:22

Bonjour à tous,

Je suis confronté à un autre bug particulièrement bizarre.

J'ai monté un catalogue contenant un champs nommé au départ "missions" mais j'ai du changer le nom de ce champs car il a fallu le traduire, il est donc devenu "mission_fr" et un autre champs "mission_en" a été créé.

Tout semble aller bien, j'ai bien mon champs missions_fr dans la base de donnée et dans la configuration de mon catalogue je vois bien que le champs s'appelle mission_fr.

Le problème c'est que dans mon modèle j'appelle $entry['data']['mission_fr']['value'] mais rien ne s'affiche et quand je fais afficher le contenu du tableau $entry['data'] j'ai :

Code : Tout sélectionner

[missions] => Array
        (
            [label] => missions
            [type] =>
            [raw] =>
            [value] =>
            [items] => Array
                (
                )
            [values] => Array
                (
                )
        )

mais aucune trace ni de mission_fr ni de mission_en !

Quand je fais une recherche sur "missions" dans la base de donnée (dans phpmyadmin), j'ai 4 résultats dans la table tl_module mais impossible de les afficher, la requête est trop longue soit disant...

Donc je suis coincé et en plus j'ai la trouille de faire des manips et de tout perdre !

Je suis sous Contao v2.10.3 et catalog v2.0.0 beta2 révision 74 et le système me dit que cette version est à jour.

Quelqu'un aurait une solution ?
MIMATA - Votre Site Pro : http://www.votresitepro.com - Planète Astronomie : http://www.planete-astronomie.eu (NEW) et http://www.planete-astronomie.com - Forum de Planète Astronomie : http://forum.planete-astronomie.com - Jeu de questions Planète Astronomie : http://astroquiz.planete-astronomie.com - Vidéos de Planète Astronomie : http://videos.planete-astronomie.com

Avatar de l’utilisateur
F2lt
Membre
Messages : 164
Inscription : 26 Mai 2011 09:24
Localisation : L'Isle sur Sorgue - Vaucluse (84)

Re: Catalog > Publication et Prévisualisation

Messagepar F2lt » 15 Sep 2014 17:34

Bonjour,

Est-ce que ton champ est bien "mission_fr" dans les modules "Liste de" ou "Lecteur de" qui te génèrent ton $entry['data'] car il semble que Catalog "cherche" toujours le champ "missions". Ce qui voudrait dire que le renommage d'un champ du Catalog n'est pas automatiquement impacté sur les "modules d'affichage".

Est-ce que je me trompe ? :wink:

Contaoment
F2lt
Je soutiens Mira Europe qui éduque et remet gratuitement des chiens guides d'aveugles aux enfants aveugles : http://www.miraeurope.org/

Avatar de l’utilisateur
MIMATA
Membre
Messages : 453
Inscription : 23 Avr 2008 08:29
Localisation : France
Contact :

Re: Catalog > Publication et Prévisualisation

Messagepar MIMATA » 15 Sep 2014 20:33

Bon sang mais c'est bien sûr !!! Evidemment, je n'avais pas coché les nouveaux champs dans le module de liste... :mrgreen:

Le bug, c'est moi !

Merci
MIMATA - Votre Site Pro : http://www.votresitepro.com - Planète Astronomie : http://www.planete-astronomie.eu (NEW) et http://www.planete-astronomie.com - Forum de Planète Astronomie : http://forum.planete-astronomie.com - Jeu de questions Planète Astronomie : http://astroquiz.planete-astronomie.com - Vidéos de Planète Astronomie : http://videos.planete-astronomie.com


Revenir vers « Développement d'extensions »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 11 invités