Query Path

Query Path (http://querypath.org/) est une librairie PHP permettant de récupérer, sélectionner et manipuler un contenu HTML comme le fait la librairie javascript jQuery. Ce plugin permet d’utiliser cette librairie dans SPIP.

Ce plugin permet d’utiliser dans SPIP la librairie QueryPath dans le code PHP d’un plugin. Cette librairie est entre autre un portage en PHP des sélecteurs et des manipulateurs de document de jQuery. Cela dit QueryPath permet bien d’autres choses également.

Pour l’utiliser, il faut charger inc/querypath.php :

include_spip('inc/querypath');

Une fois le fichier chargé, vous avez à disposition les fonctions prévues par la librairie :

Ce plugin requiert une version de PHP >= 5.3

Manipuler du HTML

J’ai été confronté à différents problèmes lors de mon utilisation avec pour source un morceau de page HTML issu d’un pipeline de SPIP. Aussi, pour faciliter l’utilisation, une fonction apportée par ce plugin est aussi disponible avec les mêmes paramètres que les fonctions d’origine :

  • spip_query_path()

La fonction retourne pareillement un objet QueryPath, mais le chargement modifie certaines propriétés (lire inc/querypath.php pour plus de détails) pour que le fonctionnement soit le plus simple et transparent pour les développeurs.

Je n’ai pas encore tout le recul nécessaire pour savoir si cela fonctionne à tous les coups, mais vos tests le diront certainement :)

Exemple d’utilisation

Dans le plugin Groupes de mots arborescents, j’utilise ce plugin pour ajouter du code HTML sous le formulaire d’édition d’un groupe après le titre, et pour enlever une partie du HTML également lorsque nous sommes dans un groupe enfant d’un autre. Cela se fait (le jour de l’écriture) de la sorte :

function gma_formulaire_fond($flux) {
	// sur le formulaire d'édition de groupe de mot
	if ($flux['args']['form'] == 'editer_groupe_mot') {

		$html = $flux['data'];
		$env = $flux['args']['contexte'];
		
		// charger QueryPath
		include_spip('inc/querypath');
		$qp = spip_query_path($html, 'body');

		// la parenté sur tous
		// on récupère le sélecteur et on l'ajoute après le titre...
		$selecteur_parent = recuperer_fond('formulaires/selecteur_groupe_parent', $env);
		$qp->top('body')->find('li.editer_titre')->after($selecteur_parent);

		// les paramètres techniques sont uniquement sur les groupes racine
		if ($env['id_parent']) {
			$qp->top('body')->find('li.fieldset_config')->remove();
		}

		// retourner le HTML modifie
		$flux['data'] = $qp->top('body>div')->xhtml();
	}
	return $flux;
}

Manipulez du HTML5

6 mai 2020
Avec la dernière version du plugin Querypath V2.0.0 avec la librairie https://github.com/technosophos/querypath
$qp = html5qp("path/to/file.html");
Voici un exemple dans une fonction pour insérer du html avant le tag $class

function inserer_du_html($html, $class, $a_inserer) {	
	if(isset($html) AND isset($a_inserer) AND isset($class)){
		include_spip('lib/querypath-3.0.4/vendor/autoload');

		if (function_exists("html5qp")){
			$qp = html5qp($html);	
			$qp->find($class)->before($a_inserer);
			return $qp->html5();
		} 

	} else {
		return $html;
	}
}

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom