SPIP-Contrib - commentaires Champ Extra sur les articles d'une rubrique et de ses sous-rubriques. (Mise à jour) 2006-01-22T13:30:10Z https://files.spip.org/Champ-Extra-sur-les-articles-d-une#comment385224 2006-01-22T13:30:10Z <p>J'oubliais qu'il fallait aussi modifier ecrire/rubriques_edit.php3, en remplaçant :<br class="manualbr">extra_saisie($extra, 'rubriques', $id_secteur)<small class="fine d-inline"> </small>;<br class="manualbr">par<br class="manualbr">extra_saisie($extra, 'rubriques', $id_rubrique)<small class="fine d-inline"> </small>;</p> Champ Extra sur les articles d'une rubrique et de ses sous-rubriques. (Mise à jour) 2006-01-16T21:33:02Z https://files.spip.org/Champ-Extra-sur-les-articles-d-une#comment385121 2006-01-16T21:33:02Z <p>Pour que ceci fonctionne bien en 1.8.x, voici quelques modifications à apporter au hack :</p> <p>Dans <strong>ecrire/inc_extra.php3</strong></p> <p>// recherche rubrique parente éventuelle sur lequel s'applique des extras<br class="autobr"> function rub_extra($type, $id_rub='') <i><br class="autobr"> if($id_rub) <i><br class="autobr"> $query="SELECT id_parent FROM spip_rubriques WHERE id_rubrique='$id_rub'"<small class="fine d-inline"> </small>;<br class="autobr"> $result=spip_query($query) or die($query)<small class="fine d-inline"> </small>;<br class="autobr"> list($id_rubparent)=spip_fetch_array($result)<small class="fine d-inline"> </small>;<br class="autobr"> if( $id_rubparent && isset($GLOBALS['champs_extra_proposes'][$type][$id_rubparent]) ) <i><br class="autobr"> return $id_rubparent<small class="fine d-inline"> </small>; <br class="autobr"> </i> else <i><br class="autobr"> return rub_extra($type, $id_rubparent)<small class="fine d-inline"> </small>;<br class="autobr"> </i><br class="autobr"> </i> else <i><br class="autobr"> return 0<small class="fine d-inline"> </small>;<br class="autobr"> </i><br class="autobr"> </i></p> <p>// a partir de la liste des champs, generer la liste des input<br class="autobr"> function extra_saisie($extra, $type, $ensemble='') <i><br class="autobr"> $extra = unserialize($extra)<small class="fine d-inline"> </small>;</i></p> <p> // quels sont les extras de ce type d'objet<br class="autobr"> if (!$champs = $GLOBALS['champs_extra'][$type])<br class="autobr"> $champs = Array()<small class="fine d-inline"> </small>;</p> <p> // prendre en compte, eventuellement, les champs presents dans la base<br class="autobr"> // mais oublies dans mes_options.<br class="autobr"> if (is_array($extra))<br class="autobr"> while (list($key,) = each($extra))<br class="autobr"> if (!$champs[$key])<br class="autobr"> $champs[$key] = "masque||($key<small class="fine d-inline"> </small>?)"<small class="fine d-inline"> </small>;</p> <p> // quels sont les extras proposes...</p> <p> // pas d'extra pour cette ensemble, on va chercher un extra en remontant les niveaux<br class="autobr"> if ( $ensemble &&<small class="fine d-inline"> </small>!isset($GLOBALS['champs_extra_proposes'][$type][$ensemble]) ) <i><br class="autobr"> $ensemble = rub_extra($type, $ensemble)<small class="fine d-inline"> </small>; // on recherche si pour une rubrique de plus haut niveau, existe des extras <br class="autobr"> </i></p> <p> // ... si l'ensemble est connu<br class="autobr"> if ($ensemble && isset($GLOBALS['champs_extra_proposes'][$type][$ensemble]))<br class="autobr"> $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type][$ensemble])<small class="fine d-inline"> </small>;<br class="autobr"> // ... sinon, les champs proposes par defaut<br class="autobr"> else if (isset($GLOBALS['champs_extra_proposes'][$type]['tous'])) <i><br class="autobr"> $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type]['tous'])<small class="fine d-inline"> </small>;<br class="autobr"> </i></p> <p> // sinon tous les champs extra du type<br class="autobr"> else <i><br class="autobr"> $champs_proposes = Array()<small class="fine d-inline"> </small>;<br class="autobr"> reset($champs)<small class="fine d-inline"> </small>;<br class="autobr"> while (list($ch, ) = each($champs)) $champs_proposes[] = $ch<small class="fine d-inline"> </small>;<br class="autobr"> </i><br class="autobr"> ...</p> <p>Ainsi ceci marchera avec les rubriques, sous-rubriques et articles</p> > Champ Extra sur les articles d'une rubrique et de ses sous-rubriques. (Mise à jour) 2005-07-14T15:17:00Z https://files.spip.org/Champ-Extra-sur-les-articles-d-une#comment382159 2005-07-14T15:17:00Z <p>Bonjour,</p> <p>très belle contribution, utile pour les utilisateue 1.7 mais ne fonctionne pas sur 1.8. :( Est-ce que quelqu'un pourrais l'adapter, cela serait très utile</p> <p>merci</p> <p>Alain</p>