
Recherche avancée
Autres articles (103)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...) -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir
Sur d’autres sites (5965)
-
Anomalie #3894 : Jointures (erronées ?) avec les boucles documents et leurs critères
27 janvier 2017, par marcimat ☺☮☯♫Jointure avec Documents / id_mot¶
Par ailleurs pour les mots la jointure que montre tcharles est correcte justement. Cependant, là il cherche les mots clés présents sur les documents, ce qui contredit ce que je disais en 2012 là http://marcimat.magraine.net/SPIP-3-Documents-Mots :
Ce que SPIP va décider lorsqu’il y a ambiguïté, c’est à dire comme ici
(DOCUMENTS){id_mot}
alors qu’il existe les 2 tables spip_documents_liens et spip_mots_liens, c’est qu’il va préférer interpréter cela comme une liaison sur la table de lien de la boucle en cours, c’est à dire sur spip_documents_liens, ce qui signifie donc que ça va retourner « les documents attachés à un mot clé »Donc, pour ce point, quelque part à un moment donné il y a eu un changement.
Autres test.¶
Je viens de remarquer que le problème survient dès lors qu’il y a plusieurs critères optionnels sur la boucle. De telle sorte les boucles suivantes ont une seule jointure sur spip_documents_liens :
-
-
-(+ 1 jointure sur spip_mots_liens)
C’est dès lors qu’on utilise plusieurs critères optionnels que les problèmes surviennent :
-Si on appelle
page=test&id_breve=1
(1er critère) on aura 1 seule jointure :SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = ’publie’) AND (documents.mode IN (’image’,’document’)) AND (documents.taille > 0 OR documents.distant=’oui’) AND (L1.id_objet = 1) AND (L1.objet = ’breve’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Si on appelle
page=test&id_article=1
(2è critère) on aura 2 jointures :SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L2 ON ( L2.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = ’publie’) AND (documents.mode IN (’image’,’document’)) AND (documents.taille > 0 OR documents.distant=’oui’) AND (L2.id_objet = 1) AND (L2.objet = ’article’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Si on appelle
page=test&id_rubrique=1
(3è critère) on aura 2 jointures (le L s’incrémente à L3) :SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L3 ON ( L3.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.statut = ’publie’) AND (documents.mode IN (’image’,’document’)) AND (documents.taille > 0 OR documents.distant=’oui’) AND (L3.id_objet = 1) AND (L3.objet = ’rubrique’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Autrement dit, je pense que SPIP crée une jointure pour la possibilité d’avoir id_breve dans l’URL (L1), pareil pour id_article (L2), etc pour les suivantes.
Le champ "vu" utilise la première jointure possible (toujours L1 du coup ici). Ensuite SPIP nettoie les jointures inutiles en fonction des paramètres d’environnement reçus, mais il ne peut enlever L1 car le champ "vu" l’utilise (alors qu’il faudrait qu’il utilise une autre jointure, L3 par exemple si id_rubrique dans l’env, et enlever L1). -
Anomalie #3894 : Jointures (erronées ?) avec les boucles documents et leurs critères
26 janvier 2017, par tcharlss (*´_ゝ`)J’ai testé avec divers objets que j’avais sous la main pour voir, on reprenant le même procédé :
- un document attaché à 2 objets, vu=oui pour le N°1, et vu=non pour le N°2
id_patate=1
dans l’URL{id_patate?}{vu=non}
dans la boucle
Ça n’a fait la bonne jointure que pour 1 seul objet, donc c’est plutôt une exception on dirait.
Rigolo : le nom de la jointure superflue s’incrémente entre chaque test, j’ai fini à L8 ! (L5 je l’ai enlevé, c’était sur les auteurs, donc même ambiguïté que pour les mots clés)Album [OK] :¶
SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.taille > 0 OR documents.distant=’oui’) AND (L1.id_objet = 1) AND (L1.objet = ’album’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Brève [PAS OK] :¶
SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L2 ON ( L2.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.taille > 0 OR documents.distant=’oui’) AND (L2.id_objet = 1) AND (L2.objet = ’breve’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Forum [PAS OK] :¶
SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L3 ON ( L3.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.taille > 0 OR documents.distant=’oui’) AND (L3.id_objet = 1) AND (L3.objet = ’forum’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Mot [PAS OK] (là c’est un peu spécial car il y a une ambiguïté avec mots_liens) :¶
SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_mots_liens AS L4 ON ( L4.id_objet = documents.id_document AND L4.objet=’document’) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.taille > 0 OR documents.distant=’oui’) AND (L4.id_mot = 1) AND (L1.vu = ’non’) GROUP BY documents.id_document
Abonnement [PAS OK] :¶
SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L6 ON ( L6.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.taille > 0 OR documents.distant=’oui’) AND (L6.id_objet = 1) AND (L6.objet = ’abonnement’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Ticket [PAS OK] :¶
SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L7 ON ( L7.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.taille > 0 OR documents.distant=’oui’) AND (L7.id_objet = 1) AND (L7.objet = ’ticket’) AND (L1.vu = ’non’) GROUP BY documents.id_document
Adresse [PAS OK] :¶
SELECT documents.fichier FROM spip_documents AS `documents` INNER JOIN spip_documents_liens AS L8 ON ( L8.id_document = documents.id_document ) INNER JOIN spip_documents_liens AS L1 ON ( L1.id_document = documents.id_document ) WHERE (documents.taille > 0 OR documents.distant=’oui’) AND (L8.id_objet = 1) AND (L8.objet = ’adresse’) AND (L1.vu = ’non’) GROUP BY documents.id_document
-
Anomalie #4012 : pipeline post_insertion n’affiche pas toutes les valeurs insérées
9 octobre 2017, par Peet duok ok !
Donc lors de la création d’une nouvelle instance d’un objet, SPIP fait les choses en deux temps.
1er temps¶
objet_inserer() va ’préparer’ la nouvelle instance et tenter, si les champs existent dans l’objet, d’enregistrer les valeurs de :
[’id_rubrique’] [’id_secteur’] [’lang’] [’langue_choisie’] [’statut’] [’date’]
Donc au mieux le pipeline post_insertion renvoi un tableau contenant l’id de l’objet + le tableau des champs ci-dessus et leurs valeurs.
2e temps¶
si objet_inserer() renvoie bien un id_objet, objet_modifier() va lui enregistrer le reste, c’est à dire les valeurs correspondants aux champs déclarés comme editables dans plugins/base/mon_objet.php
Il faut donc utiliser le pipeline post_edition si on veut pouvoir lire une des valeurs dites "editables".
Donc pas d’anomalie, juste une incompréhension de la doc.
On peut fermer le ticket
ps : merci marcimat et jluc