Bonjour
Le module de recherche natif de SPIP ne prend pas en compte les chmps de mes tables externes.
Que dois-je faire ou modifier pour que la recherche porte également sur ces tables?
Merci
ADB
On 18/05/2010 19:38, ADB wrote:
Bonjour
Le module de recherche natif de SPIP ne prend pas en compte les chmps de
mes tables externes.
Que dois-je faire ou modifier pour que la recherche porte également sur
ces tables?
Merci
ADB
Hum... soit tu fais tes boucles en prenant toi même des critères de recherche approprié tel que <BOUCLEx(ma_table){description LIKE %#ENV{recherche}%} > mais le temps de trouver la bonne boucle qui ne plante pas ça va être galère...
soit tu déclares ta table à SPIP et à la fonction de recherche... ce qui est dans tous les cas, ennuyant à mettre en place si tu n'es pas habitué au code des plugins.
http://programmer.spip.org/Prendre-en-compte-un-nouveau-champ
http://programmer.spip.org/declarer_tables_principales
http://programmer.spip.org/rechercher_liste_des_champs
S'appuyer par exemple sur l'explication de http://marcimat.magraine.net/Creer-un-nouvel-objet-editorial pour déclarer la table, et ajouter l'utilisation du pipeline rechercher_liste_des_champs au plugin.xml et dans un fichier. Pas la peine de gérer l'installation/désinstallation de la table.
C'est bête que ce soit complexe à réaliser tiens... ça parait simple comme demande pourtant ![]()
--
MM.
Bonsoir
Vu le tuto Chats. Très bien et clair, apparemment, mais trop compliqué pour moi ![]()
En revanhe, dans inc/rechercher.php, est-ce que je ne pourrais pas modifier
// options par defaut
$options = array_merge(array(
'preg_flags' => 'UimsS',
'toutvoir' => false,
'champs' => false,
'score' => false,
'matches' => false,
'jointures' => false
),
$options
);
en mettant true ?
Merci
ADB
Le 18/05/2010 21:24, Matthieu Marcillaud a écrit :
On 18/05/2010 19:38, ADB wrote:
Bonjour
Le module de recherche natif de SPIP ne prend pas en compte les chmps de
mes tables externes.
Que dois-je faire ou modifier pour que la recherche porte également sur
ces tables?
Merci
ADBHum... soit tu fais tes boucles en prenant toi même des critères de recherche approprié tel que <BOUCLEx(ma_table){description LIKE %#ENV{recherche}%} > mais le temps de trouver la bonne boucle qui ne plante pas ça va être galère...
soit tu déclares ta table à SPIP et à la fonction de recherche... ce qui est dans tous les cas, ennuyant à mettre en place si tu n'es pas habitué au code des plugins.
http://programmer.spip.org/Prendre-en-compte-un-nouveau-champ
http://programmer.spip.org/declarer_tables_principales
http://programmer.spip.org/rechercher_liste_des_champsS'appuyer par exemple sur l'explication de http://marcimat.magraine.net/Creer-un-nouvel-objet-editorial pour déclarer la table, et ajouter l'utilisation du pipeline rechercher_liste_des_champs au plugin.xml et dans un fichier. Pas la peine de gérer l'installation/désinstallation de la table.
C'est bête que ce soit complexe à réaliser tiens... ça parait simple comme demande pourtant
hum j'avais eu ce problème il y a quelques temps. la solution est simple:
include_spip('inc/presentation');
function encheres_rechercher_liste_des_champs($tables){
//$tables['spip_enchere']['id_enchere'] = 3;
$tables['enchere']['titre'] = 3;
$tables['enchere']['texte'] = 3;
$tables['enchere']['descriptif'] = 3;
///unset($tables['rubrique']['titre']);
return $tables;
}
Mon nouvel objet étant enchere bien entendu et ceci doit se trouver dans "objets"_fonctions.php de ton plugin appelé par
<pipeline>
<nom>rechercher_liste_des_champs</nom>
<inclure>encheres_fonctions.php</inclure>
</pipeline>
Dans ton xml "encheres doit bien entendu être remplacé par ton objet..
(fais gaffe aux pluriel et singulier, c'est important!)
Bernard
ADB a écrit :
Bonsoir
Vu le tuto Chats. Très bien et clair, apparemment, mais trop compliqué pour moiEn revanhe, dans inc/rechercher.php, est-ce que je ne pourrais pas modifier
// options par defaut
$options = array_merge(array(
'preg_flags' => 'UimsS',
'toutvoir' => false,
'champs' => false,
'score' => false,
'matches' => false,
'jointures' => false
),
$options
);en mettant true ?
Merci
ADBLe 18/05/2010 21:24, Matthieu Marcillaud a écrit :
On 18/05/2010 19:38, ADB wrote:
Bonjour
Le module de recherche natif de SPIP ne prend pas en compte les chmps de
mes tables externes.
Que dois-je faire ou modifier pour que la recherche porte également sur
ces tables?
Merci
ADBHum... soit tu fais tes boucles en prenant toi même des critères de recherche approprié tel que <BOUCLEx(ma_table){description LIKE %#ENV{recherche}%} > mais le temps de trouver la bonne boucle qui ne plante pas ça va être galère...
soit tu déclares ta table à SPIP et à la fonction de recherche... ce qui est dans tous les cas, ennuyant à mettre en place si tu n'es pas habitué au code des plugins.
http://programmer.spip.org/Prendre-en-compte-un-nouveau-champ
http://programmer.spip.org/declarer_tables_principales
http://programmer.spip.org/rechercher_liste_des_champsS'appuyer par exemple sur l'explication de http://marcimat.magraine.net/Creer-un-nouvel-objet-editorial pour déclarer la table, et ajouter l'utilisation du pipeline rechercher_liste_des_champs au plugin.xml et dans un fichier. Pas la peine de gérer l'installation/désinstallation de la table.
C'est bête que ce soit complexe à réaliser tiens... ça parait simple comme demande pourtant
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.netInfos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.netDocumentation de SPIP : http://www.spip.net/
Irc : de l'aide à toute heure : http://spip.net/irc
--
Bernard Blazin - Développement Internet Ingénieur ENSAM promo 1978
Bernard Blazin Point Com
9 rue de la Rose
77320 Montolivet
Tel 01 64 20 98 49
http://www.bernardblazin.com
Bonsoir
Si je comprends bien,pour résumer, je dois créer un fichier xml contenant le pipeline, qui lui même ppelle le fichier php.
OK, cedoit être dans mes compétences ![]()
Mais comment appelle-t-on un fichier xml? PAr l'url http://xxxx/fonctions.xml ?
En tout cas merci, je vais essayer.
ADB
Le 18/05/2010 22:57, Bernard Blazin a écrit :
hum j'avais eu ce problème il y a quelques temps. la solution est simple:
include_spip('inc/presentation');
function encheres_rechercher_liste_des_champs($tables){
//$tables['spip_enchere']['id_enchere'] = 3;
$tables['enchere']['titre'] = 3;
$tables['enchere']['texte'] = 3;
$tables['enchere']['descriptif'] = 3;
///unset($tables['rubrique']['titre']);return $tables;
}Mon nouvel objet étant enchere bien entendu et ceci doit se trouver dans "objets"_fonctions.php de ton plugin appelé par
<pipeline>
<nom>rechercher_liste_des_champs</nom>
<inclure>encheres_fonctions.php</inclure>
</pipeline>Dans ton xml "encheres doit bien entendu être remplacé par ton objet..
(fais gaffe aux pluriel et singulier, c'est important!)
Bernard
ADB a écrit :Bonsoir
Vu le tuto Chats. Très bien et clair, apparemment, mais trop compliqué pour moiEn revanhe, dans inc/rechercher.php, est-ce que je ne pourrais pas modifier
// options par defaut
$options = array_merge(array(
'preg_flags' => 'UimsS',
'toutvoir' => false,
'champs' => false,
'score' => false,
'matches' => false,
'jointures' => false
),
$options
);en mettant true ?
Merci
ADBLe 18/05/2010 21:24, Matthieu Marcillaud a écrit :
On 18/05/2010 19:38, ADB wrote:
Bonjour
Le module de recherche natif de SPIP ne prend pas en compte les chmps de
mes tables externes.
Que dois-je faire ou modifier pour que la recherche porte également sur
ces tables?
Merci
ADBHum... soit tu fais tes boucles en prenant toi même des critères de recherche approprié tel que <BOUCLEx(ma_table){description LIKE %#ENV{recherche}%} > mais le temps de trouver la bonne boucle qui ne plante pas ça va être galère...
soit tu déclares ta table à SPIP et à la fonction de recherche... ce qui est dans tous les cas, ennuyant à mettre en place si tu n'es pas habitué au code des plugins.
http://programmer.spip.org/Prendre-en-compte-un-nouveau-champ
http://programmer.spip.org/declarer_tables_principales
http://programmer.spip.org/rechercher_liste_des_champsS'appuyer par exemple sur l'explication de http://marcimat.magraine.net/Creer-un-nouvel-objet-editorial pour déclarer la table, et ajouter l'utilisation du pipeline rechercher_liste_des_champs au plugin.xml et dans un fichier. Pas la peine de gérer l'installation/désinstallation de la table.
C'est bête que ce soit complexe à réaliser tiens... ça parait simple comme demande pourtant
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.netInfos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.netDocumentation de SPIP : http://www.spip.net/
Irc : de l'aide à toute heure : http://spip.net/irc
Euh, le fichier xml permet d’afficher ce plugin dans les autres plugins et de l’activer / désactiver. Ça, spip le fait tout seul à partir de ce dernier. Et non, tu n’as rien à faire. Par contre, si tu utilises un plugin comme fulltext qui utilise le même pipeline, il faut que tu dises à ton plugin qu’il doit être pris en charge avant fulltext pour que fulltext le prenne en compte. C’est à ça que serve utilise id=« prefix_du_plugin_fulltext » / necessite id=« prefix_du_plugin_fulltext » du xml, qui doive être renseigner avec. Sachant que necessite imposera que fulltext soit installé et activé et utilise regarde s’il est installé sans imposer son installation, activation. Dans ton cas, si tu n’utilises pas fulltext, mais que tu souhaites proposer ton plugin, met un utilise id, ainsi il sera compatible avec ceux qui ont fulltext et ceux qui ne l’ont pas (ou par exemple, si un jour tu passes à fulltext, tu n’auras rien à refaire).
mon_prefix_de_plugin
rechercher_liste_des_champs
mon_prefix_de_plugin_pipelines.php
Dans cette exemple, il faudra que le php ait une fonction
function mon_prefix_de_plugin_rechercher_liste_des_champs($tables){
$tables[‹ ma_table_singulier ›] = array(
‹ titre › => 8,
‹ descriptif › => 5,
);
return $tables;
}
Voilà, le mieux, c’est de partir sur le xml d’un plugin simple pour regarder comment il est construit, et… de modifier / adapter pour ton plugin. Le prefix, c’est le nom générique de chaque plugin. Exemple, pour médiathèque, c’est gestdoc.
Bon, peut être ça ne paraît pas ultra intuitif dans un premier temps mais après tout semble bien logique, et ça roule tout seul. Et surtout, ça marche !!!
Le 19 mai 2010 00:29, ADB <a.adupinbe@orange.fr> a écrit :
Bonsoir
Si je comprends bien,pour résumer, je dois créer un fichier xml contenant le pipeline, qui lui même ppelle le fichier php.
OK, cedoit être dans mes compétencesMais comment appelle-t-on un fichier xml? PAr l’url http://xxxx/fonctions.xml ?
En tout cas merci, je vais essayer.
ADBLe 18/05/2010 22:57, Bernard Blazin a écrit :
hum j’avais eu ce problème il y a quelques temps. la solution est simple:
include_spip(‹ inc/presentation ›);
function encheres_rechercher_liste_des_champs($tables){
//$tables[‹ spip_enchere ›][‹ id_enchere ›] = 3;
$tables[‹ enchere ›][‹ titre ›] = 3;
$tables[‹ enchere ›][‹ texte ›] = 3;
$tables[‹ enchere ›][‹ descriptif ›] = 3;
///unset($tables[‹ rubrique ›][‹ titre ›]);return $tables;
}Mon nouvel objet étant enchere bien entendu et ceci doit se trouver dans « objets »_fonctions.php de ton plugin appelé par
rechercher_liste_des_champs encheres_fonctions.phpDans ton xml "encheres doit bien entendu être remplacé par ton objet…
(fais gaffe aux pluriel et singulier, c’est important!)
Bernard
ADB a écrit :Bonsoir
Vu le tuto Chats. Très bien et clair, apparemment, mais trop compliqué pour moiEn revanhe, dans inc/rechercher.php, est-ce que je ne pourrais pas modifier
// options par defaut
$options = array_merge(array(
‹ preg_flags › => ‹ UimsS ›,
‹ toutvoir › => false,
‹ champs › => false,
‹ score › => false,
‹ matches › => false,
‹ jointures › => false
),
$options
);en mettant true ?
Merci
ADBLe 18/05/2010 21:24, Matthieu Marcillaud a écrit :
On 18/05/2010 19:38, ADB wrote:
Bonjour
Le module de recherche natif de SPIP ne prend pas en compte les chmps de
mes tables externes.
Que dois-je faire ou modifier pour que la recherche porte également sur
ces tables?
Merci
ADBHum… soit tu fais tes boucles en prenant toi même des critères de recherche approprié tel que <BOUCLEx(ma_table){description LIKE %#ENV{recherche}%} > mais le temps de trouver la bonne boucle qui ne plante pas ça va être galère…
soit tu déclares ta table à SPIP et à la fonction de recherche… ce qui est dans tous les cas, ennuyant à mettre en place si tu n’es pas habitué au code des plugins.
http://programmer.spip.org/Prendre-en-compte-un-nouveau-champ
http://programmer.spip.org/declarer_tables_principales
http://programmer.spip.org/rechercher_liste_des_champsS’appuyer par exemple sur l’explication de http://marcimat.magraine.net/Creer-un-nouvel-objet-editorial pour déclarer la table, et ajouter l’utilisation du pipeline rechercher_liste_des_champs au plugin.xml et dans un fichier. Pas la peine de gérer l’installation/désinstallation de la table.
C’est bête que ce soit complexe à réaliser tiens… ça parait simple comme demande pourtant
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.netInfos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/Documentation de SPIP : http://www.spip.net/
Irc : de l’aide à toute heure : http://spip.net/irc
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.netInfos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/Documentation de SPIP : http://www.spip.net/
Irc : de l’aide à toute heure : http://spip.net/irc
Le 18/05/2010 21:24, Matthieu Marcillaud a écrit :
Hum... soit tu fais tes boucles en prenant toi même des critères de
recherche approprié tel que <BOUCLEx(ma_table){description LIKE
%#ENV{recherche}%} > mais le temps de trouver la bonne boucle qui ne
plante pas ça va être galère...
Pourquoi une telle boucle devrait elle particulièrement planter ?
Ex de boucle comme ça :
<BOUCLE_voir (data){par #GET{tri_results}}{pagination}
{inverse #GET{tri_inverse}}
{num_lot ?}{id_rubrique ?}{id_data ?}
{id_auteur ?}
{nom ?LIKE %(#ENV{nom})%}
{prenom ?LIKE %(#ENV{prenom})%}
{asso ?LIKE %(#ENV{asso})%}
{cp ?== ^#ENV{cp}}
{statut ?}
{origine IN #GET**{avec_origine}}
>
Quel serait l'intérêt de faire plus compliqué
en passant par les déclaration dans les tables php spip ?
JLuc
On 18/05/2010 22:57, Bernard Blazin wrote:
hum j'avais eu ce problème il y a quelques temps. la solution est simple:
include_spip('inc/presentation');
function encheres_rechercher_liste_des_champs($tables){
//$tables['spip_enchere']['id_enchere'] = 3;
$tables['enchere']['titre'] = 3;
$tables['enchere']['texte'] = 3;
$tables['enchere']['descriptif'] = 3;
///unset($tables['rubrique']['titre']);return $tables;
}Mon nouvel objet étant enchere bien entendu et ceci doit se trouver dans
"objets"_fonctions.php de ton plugin appelé par<pipeline>
<nom>rechercher_liste_des_champs</nom>
<inclure>encheres_fonctions.php</inclure>
</pipeline>Dans ton xml "encheres doit bien entendu être remplacé par ton objet..
(fais gaffe aux pluriel et singulier, c'est important!)
Tu veux dire qu'il n'y a pas besoin de déclarer la table au préalable à SPIP, via tables_principales et tables_interfaces ?
Je n'ai pas testé hein, c'est une question !
--
MM.
On 19/05/2010 10:07, JLuc wrote:
Le 18/05/2010 21:24, Matthieu Marcillaud a écrit :
Hum... soit tu fais tes boucles en prenant toi même des critères de
recherche approprié tel que <BOUCLEx(ma_table){description LIKE
%#ENV{recherche}%} > mais le temps de trouver la bonne boucle qui ne
plante pas ça va être galère...Pourquoi une telle boucle devrait elle particulièrement planter ?
Ex de boucle comme ça :
<BOUCLE_voir (data){par #GET{tri_results}}{pagination}
{inverse #GET{tri_inverse}}
{num_lot ?}{id_rubrique ?}{id_data ?}
{id_auteur ?}
{nom ?LIKE %(#ENV{nom})%}
{prenom ?LIKE %(#ENV{prenom})%}
{asso ?LIKE %(#ENV{asso})%}
{cp ?== ^#ENV{cp}}
{statut ?}
{origine IN #GET**{avec_origine}}
>Quel serait l'intérêt de faire plus compliqué
d'avoir simplement {recherche?} ![]()
le truc avec {nom ?LIKE %(#ENV{nom})%} très pratique, c'est qu'on ne peut pas l'utiliser avec {nom ?LIKE %(#ENV{recherche})%} car il faut que le ENV soit le même que le nom du critère... du coup, ce n'est pas si pratique que cela... Qui s'amuse de nos jours avec des formulaires de recherches qui ont plus d'un champ de saisie ? Ce genre de formulaire est utilisé uniquement pour des recherches «avancées» (c'est utile aussi dans certains cas), mais regarde partiquement partout, tu n'as qu'un champ, ce qui est tout de même plus pratique :
[ ] (rechercher)
--
MM.
Le 19 mai 2010 10:14, Matthieu Marcillaud <marcimat@rezo.net> a écrit :
On 19/05/2010 10:07, JLuc wrote:
Le 18/05/2010 21:24, Matthieu Marcillaud a écrit :
Hum… soit tu fais tes boucles en prenant toi même des critères de
recherche approprié tel que <BOUCLEx(ma_table){description LIKE
%#ENV{recherche}%} > mais le temps de trouver la bonne boucle qui ne
plante pas ça va être galère…Pourquoi une telle boucle devrait elle particulièrement planter ?
Ex de boucle comme ça :
<BOUCLE_voir (data){par #GET{tri_results}}{pagination}
{inverse #GET{tri_inverse}}
{num_lot ?}{id_rubrique ?}{id_data ?}
{id_auteur ?}
{nom ?LIKE %(#ENV{nom})%}
{prenom ?LIKE %(#ENV{prenom})%}
{asso ?LIKE %(#ENV{asso})%}
{cp ?== ^#ENV{cp}}
{statut ?}
{origine IN #GET**{avec_origine}}Quel serait l’intérêt de faire plus compliqué
d’avoir simplement {recherche?}
le truc avec {nom ?LIKE %(#ENV{nom})%} très pratique, c’est qu’on ne peut pas l’utiliser avec {nom ?LIKE %(#ENV{recherche})%} car il faut que le ENV soit le même que le nom du critère… du coup, ce n’est pas si pratique que cela… Qui s’amuse de nos jours avec des formulaires de recherches qui ont plus d’un champ de saisie ? Ce genre de formulaire est utilisé uniquement pour des recherches «avancées» (c’est utile aussi dans certains cas), mais regarde partiquement partout, tu n’as qu’un champ, ce qui est tout de même plus pratique :(rechercher)
MM.
Pas que « d’avoir simplement {recherche?} ». Si on veut utiliser fulltext pour la recherche, ça devient nécessaire il me semble. Et puis, les pipelines sont là -pour se simplifier la vie-, autant les utilisés non ?
Par contre au niveau des conventions d’écritures, c’est mieux d’écrire :
$tables[‹ spip_enchere ›][‹ id_enchere ›] = 3;
$tables[‹ enchere ›][‹ titre ›] = 3;
$tables[‹ enchere ›][‹ texte ›] = 3;
$tables[‹ enchere ›][‹ descriptif ›] = 3;
ou on a encore le droit d’utiliser un :
$tables[‹ enchere ›] = array(
‹ titre › => 3,
‹ descriptif › => 3,
‹ texte › => 3,
‹ id_enchere › => 3
);
Désolé pour ce HS.
On 19/05/2010 12:56, Guy Cesaro wrote:
Par contre au niveau des conventions d’écritures, c’est mieux d’écrire :
$tables[‹ spip_enchere ›][‹ id_enchere ›] = 3;
$tables[‹ enchere ›][‹ titre ›] = 3;
$tables[‹ enchere ›][‹ texte ›] = 3;
$tables[‹ enchere ›][‹ descriptif ›] = 3;ou on a encore le droit d’utiliser un :
$tables[‹ enchere ›] = array(
‹ titre › => 3,
‹ descriptif › => 3,
‹ texte › => 3,
‹ id_enchere › => 3
);
Désolé pour ce HS.
Tu écris comme tu veux ! Tant que ça donne le même résultat ![]()
On n’a pas de convention d’écriture pour ça… Pour 4 champs, ce n’est pas très génant… pour 18, le array me semble plus indiqué.
Le 19/05/2010 10:14, Matthieu Marcillaud a écrit :
d'avoir simplement {recherche?}
le truc avec {nom ?LIKE %(#ENV{nom})%} très pratique, c'est qu'on ne
peut pas l'utiliser avec {nom ?LIKE %(#ENV{recherche})%} car il faut que
le ENV soit le même que le nom du critère... du coup, ce n'est pas si
pratique que cela... Qui s'amuse de nos jours avec des formulaires de
recherches qui ont plus d'un champ de saisie ? Ce genre de formulaire
est utilisé uniquement pour des recherches «avancées» (c'est utile aussi
dans certains cas), mais regarde partiquement partout, tu n'as qu'un
champ, ce qui est tout de même plus pratique :
Effectivement Matthieu, c'est plus pratique.
JL