Un problème réglé avec SarkaSpip

, par  Alain Laponche --- ---

A annuler ou à reprendre, l’anomalie étant réglée.
Mais des informations sur les outils de debug SPIP

Version SarkaSpip Reloaded 4.5

Problème

Sur l’affichage d’un article orphelin dans une rubrique, alors que l’on a choisi dans SarkaSpip de "Court-circuiter les page de rubriques qui n’ont qu’un article (en affichant l’article sur l’url de la rubrique)", affichage en haut de page du message
"Strict Standards : Only variables should be passed by reference in /var/www/alternc/o/orb29/orbi/plugins/auto/sarkaspipr/v4.5.10/inc/sarkaspip_filtres.php on line 98"

Mais ce problème disparait si on choisit le paramètre suivant
"Court-circuiter les page de rubriques qui n’ont qu’un article (par redirection vers l’article"

Donc réglé
J’ai néanmoins gardé cette page pour expliquer le principe du debugage Spip

Examen du 1er squelette

Exemple : rubrique 19
plugins/auto/sarkaspipr/v4.5.10/rubrique.html

#SET{redirection,#ID_RUBRIQUE|sarkaspip_test_si_redirection_article_solitaire}
<BOUCLE_principale_rubrique(RUBRIQUES){id_rubrique}>
	<BOUCLE_art_orphelin(ARTICLES){id_article=#GET{redirection}}{si #CONFIG{sarkaspip/rubrique/court_circuit,0}|=={2}}{si #AGENDA|non}>
		<INCLURE{fond=article,id_article,env} />
	</BOUCLE_art_orphelin>
		[(#GET{redirection}|non|sinon_interdire_acces{#URL_ARTICLE{#GET{redirection}}})]
		<INCLURE{fond=structure,env,id_secteur=#ID_SECTEUR,type-page=rubrique,composition=#ENV{referencer}|=={oui}|?{referencer,#AGENDA|?{agenda,#COMPOSITION}}} />
	<//B_art_orphelin>
</BOUCLE_principale_rubrique>

Analyse avec outil debug

Pour chaque boucle, on a d’abord le contenu de la balise #ENV
Ici pour la rubrique 19, au démarrage
(squelette plugins/auto/sarkaspipr/v4.5.10/rubrique.html)
on a :
id_rubrique  : 19
type-page  : rubrique
Ensuite pour chaque boucle terminée, une ligne avec :

  • boucle (donne accès au code SPIP de la boucle)
  • resultat (donne accès à la requête SQL générée)
  • code (donne accès au code php généré)
  • calcul
  • le nom de la boucle
  • le type d’éléments traités (articles, rubriques, ...)
  • le rappel des critères de sélection

Recherche ici du bug

La 1ere commande est une balise #SET avec un filtre élaboré par SarkaSPIP. Ce filtre est "sarkaspip_test_si_redirection_article_solitaire" et on le trouve dans :
orbi/plugins/auto/sarkaspipr/v4.5.10/inc/sarkaspip_filtres.php
La ligne 98 se trouve semble-t-il dans les toutes dernières lignes de la function, lors de l’émission du return.
Mais on est alors dans une partie précédée du commentaire suivant :
// si une sous-rubrique publie, pas de redirection
// il faut passer par une boucle compilateur pour avoir les conditions de statut publie