CMS Automne

Forum de la communauté du CMS Automne
Nous sommes actuellement le Jeu Nov 14, 2024 7:30 am

Le fuseau horaire est UTC [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 17 messages ]  Aller vers la page 1, 2  Suivant
Auteur Message
MessagePublié: Jeu Juil 09, 2009 4:16 pm 
Hors-ligne

Inscrit(e) le : Jeu Fév 19, 2009 11:50 am
Message(s) : 80
Bonjour,

Sur un Automne qui gère plusieurs sites, je voudrais savoir s'il est possible de "rattacher" des objets de module indexés à un site particulier.
Par exemple, j'ai un site en français et l'équivalent anglais sur un autre site. Ces deux sites sont gérés avec Automne grâce à la fonction "Gestion des sites". Je crée des actualités avec le module Actualités en français et en anglais mais la recherche sur le site français me renvoie également les actualités en anglais et inversement.
Est-il possible de réaliser cela ?

Merci pour votre aide


Dernière édition par dbanon le Mer Août 26, 2009 10:00 am, édité 1 fois.

Haut
 Profil  
 
MessagePublié: Jeu Juil 09, 2009 4:32 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Oui c'est possible !
Dans le fichier qui sert à créer l'affichage de la recherche (par défaut /automne/templates/mod_ase_search.php), il y a une section qui dit un truc du genre :

Code :
//////////////////////////////////////////////////////////////////
//          Here declare all filters for each modules           //
//////////////////////////////////////////////////////////////////


Dessous il faut ajouter des codes du type :
Code :
//set language filter on module interface
if ($moduleInterface = CMS_ase_interface_catalog::getModuleInterface(MODULE_CODENAME)) {
   $moduleInterface->addFilter(ID_CHAMP_LANGUE, CODE_LANGUE);
   $search->setModuleInterface(MODULE_CODENAME, $moduleInterface);
}

En remplaçant :
MODULE_CODENAME : le codename du module concerné
ID_CHAMP_LANGUE : l'identifiant du champ de langue de l'objet indexé dans le module
CODE_LANGUE : le code de langue à afficher (ex : 'fr')

Bien entendu il faut que tes actualités aient un champ de type "langage".

Autre solution, ta rangée est déclarée de cette façon (normalement) :
Code :
<block module="ase" type="search" language="fr"></block>


Donc dans ce cas, si tu veux filtrer sur les actus dont la langue est fournie en paramètre de ta déclaration de rangée, il te faut ajouter ça plutôt :
Code :
//set language filter on module interface
if ($moduleInterface = CMS_ase_interface_catalog::getModuleInterface(MODULE_CODENAME)) {
   $moduleInterface->addFilter(ID_CHAMP_LANGUE, $defaultSearchLanguage);
   $search->setModuleInterface(MODULE_CODENAME, $moduleInterface);
}


Seb


Haut
 Profil  
 
MessagePublié: Jeu Juil 09, 2009 5:07 pm 
Hors-ligne

Inscrit(e) le : Jeu Fév 19, 2009 11:50 am
Message(s) : 80
Merci pour ces informations.

En fait j'ai également le cas d'un module partagé entre deux sites (utilisation de la fonction multi sites d'Automne). Les informations du module sont séparées entre les deux sites par une catégorie différente. Peut-on avoir dans la recherche les actualités d'une catégorie pour un site et de l'autre catégorie pour l'autre site ?

Merci !


Haut
 Profil  
 
MessagePublié: Jeu Juil 09, 2009 5:09 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Oui, même topo mais avec l'id du champ catégorie et l'id de la catégorie à avoir :
Code :
//set category filter on module interface
if ($moduleInterface = CMS_ase_interface_catalog::getModuleInterface(MODULE_CODENAME)) {
   $moduleInterface->addFilter(ID_CHAMP_CATEGORIE, ID_CATEGORIE);
   $search->setModuleInterface(MODULE_CODENAME, $moduleInterface);
}


Haut
 Profil  
 
MessagePublié: Lun Août 24, 2009 12:21 pm 
Hors-ligne

Inscrit(e) le : Jeu Fév 19, 2009 11:50 am
Message(s) : 80
Bonjour (désolé pour le retard),

Je ne comprends pas bien. Puisqu'il s'agit d'un multi-site avec des filtres différents selon le site, est-ce que je dois faire quelque chose du type :
Code :
if ($_SERVER['SERVER_NAME'] == "site1") // Filtres pour le site 1
else if ($_SERVER['SERVER_NAME'] == "site2") // Filtres pour le site 2


Merci !


Haut
 Profil  
 
MessagePublié: Lun Août 24, 2009 12:55 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Je ne comprends pas, il s'agit d'une rangée commune pour les deux sites ?
Quoi qu'il en soit l'identifiant de la page lui diffèrera (tu peux l'avoir grace à {{pageID}} ), donc en fonction de la page, tu peux connaitre le site (méthode getWebsite de l'objet CMS_page) et donc appliquer le traitement spécifique à chaque site.

Seb


Haut
 Profil  
 
MessagePublié: Lun Août 24, 2009 3:28 pm 
Hors-ligne

Inscrit(e) le : Jeu Fév 19, 2009 11:50 am
Message(s) : 80
Oui, j'utilise la même rangée pour les deux sites.
La rangée se contente d'afficher :
Code :
<row>
   <block module="ase" type="search" language="fr"></block>
</row>


et affiche le contenu de mod_ase_search.php.

Vu que j'utilise le même code pour les deux sites, j'imagine qu'à un endroit il faut que je spécifie que pour tel site j'utilise tels filtres, et que pour tel site j'utilise tels autres filtres.
Je peux utiliser des tags du type {{pageID}} directement dans le fichier "mod_ase_search.php" ? Dans ce cas, je vais effectivement pouvoir spécifier les filtres pour chaque site avec getWebsite.


Haut
 Profil  
 
MessagePublié: Lun Août 24, 2009 3:35 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
A vérifier mais normalement oui le {{pageID}} fonctionnera.

Ceci dit tu peux aussi ajouter des attributs à ta rangée et faire ton test dessus. Exemple :
Rangée pour le Site N°1 :
Code :
<row>
   <block module="ase" type="search" language="fr" site="site-1"></block>
</row>

Rangée pour le Site N°2 :
Code :
<row>
   <block module="ase" type="search" language="fr" site="site-2"></block>
</row>


Et dans le mod_ase_search.php tu aura la valeur de cet attribut "site" dans la variable $mod_ase["site"]

Ou bien encore tu peux dupliquer ton fichier mod_ase_search.php et les nommer par exemple mod_ase_search_site1.php et mod_ase_search_site2.php. Ces fichiers étant ensuite accessible via les rangées :
Code :
<row>
   <block module="ase" type="search_site1" language="fr"></block>
</row>

et :
Code :
<row>
   <block module="ase" type="search_site2" language="fr"></block>
</row>


Bref, tu as l'embarras du choix.


Haut
 Profil  
 
MessagePublié: Lun Août 24, 2009 3:40 pm 
Hors-ligne

Inscrit(e) le : Jeu Fév 19, 2009 11:50 am
Message(s) : 80
Ah oui c'est pas mal comme ça aussi !
Bon je vais essayer tout ça, merci.


Haut
 Profil  
 
MessagePublié: Lun Août 31, 2009 4:01 pm 
Hors-ligne

Inscrit(e) le : Jeu Fév 19, 2009 11:50 am
Message(s) : 80
Juste une dernière petite question. Je ne parviens pas à définir l'ordre de tri dans les résultats de recherche (là c'est par pertinence), comment est-ce que je pourrais trier les résultats par date par exemple ?


Haut
 Profil  
 
MessagePublié: Lun Août 31, 2009 4:26 pm 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Ven Mars 23, 2007 9:07 am
Message(s) : 57
Bonjour,

La possibilité de trier par date n'est pas prévue aujourd'hui, le moteur de recherche affine sa recherche par pertinence exclusivement.
Cela fait partie du noyau du moteur Xapian, utilisé par le module "Moteur de recherche" d'Automne (ASE : Automne Search Engine).

Néanmoins on pourrait éventuellement envisager de trier les n premiers résultats retournés par le moteur de recherche.
Cette opération induit pour chaque type d'objet référencé par le module ASE de posséder un champ "date" pour trier les objets par ce champ. Ce tri doit être développé à la main puisqu'il n'existe pas aujourd'hui.
Pour cela il faudrait modifier le modèle d'affichage des résultats : /automne/templates/mod_ase_search.php.

Dans l'idée il faudrait :
- récupérer les ressources retournées par le moteur ASE
- pour chaque type d'objet récupérer le champ date
- trier l'ensemble des résultats
- ré-afficher les résultats

C'est une opération lourde et qui nécessiterait d'écrire une partie du code dans le fichier mod_ase_search.php, qui fait partie du noyau du module.
Pour toute mise à jour il faudrait donc revoir le code.

A mon avis, aujourd'hui il vaut mieux s'en tenir aux résultats triés par pertinence. D'autant plus que le tri par date peut être effectué facilement sur chaque module créé avec le générateur de modules Polymod. Avec une simple recherche Polymod (voir l'aide du module).

Jérémie


Haut
 Profil  
 
MessagePublié: Lun Août 31, 2009 4:38 pm 
Hors-ligne

Inscrit(e) le : Jeu Fév 19, 2009 11:50 am
Message(s) : 80
Merci pour cette réponse, je vais donc rester avec un tri par pertinence pour le moment.


Haut
 Profil  
 
MessagePublié: Lun Août 31, 2009 4:43 pm 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Ven Mars 23, 2007 9:07 am
Message(s) : 57
Oui, ce tri convient dans la plupart des situations par sa pertinence.
Maintenant, en fonction du besoin il est possible de réfléchir à une solution intermédiaire.
Peut-être que d'autres utilisateurs sont également en attente d'une solution de tri différente :wink:


Haut
 Profil  
 
MessagePublié: Mer Sep 09, 2009 8:54 am 
Hors-ligne

Inscrit(e) le : Jeu Fév 19, 2009 11:50 am
Message(s) : 80
Bonjour,

Encore une petite question (décidément) : est-il possible d'utiliser la méthode "addFilter" (ou autre) pour faire une règle de type "tout sauf" ? Par exemple : toutes les catégories sauf une particulière.
Merci pour votre aide !


Haut
 Profil  
 
MessagePublié: Lun Sep 14, 2009 8:23 am 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Ven Mars 23, 2007 9:07 am
Message(s) : 57
Il est possible d'utiliser le champ "q", qui permet par défaut d'indiquer des mots clés, pour formuler une requête complexe.
Ceci car le moteur de recherche prend en compte les opérateurs de recherche (AND, NOT, etc...).

Le meilleur exemple est de regarder le fichier /automne/templates/mod_ase_search.php qui traite une recherche standard.

Pour information à la fin de ce fichier est écrit un code permettant d'afficher la requête Xapian qui est exécutée.
Pour la voir il faut que le SYSTEM_DEBUG soit actif et que l'utilisateur soit authentifié en root. Dans ce cas, sur la page de résultats de recherche on peut voir la requête complète. Et notamment comment elle est structurée. Idéal pour les tests.
On y voit par exemple qu'Automne indique par défaut des inclusions ou exclusions de pages (selon les paramètres du module).

Et pour répondre à la question je ne pense pas qu'il soit possible d'ajouter une condition sur une catégorie Automne (inclusion ou exclusion). Du moins pas à ma connaissance.
Par contre il est possible d'effectuer une recherche de type polymod, en php, et d'indiquer au moteur de recherche que seuls ces résultats sont à prendre en compte. On peut ainsi faire une recherche avec une catégorie donnée et ne faire remonter que les résultats de cette recherche. Le traitement est à effectuer en php.


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 17 messages ]  Aller vers la page 1, 2  Suivant

Le fuseau horaire est UTC [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 64 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
Powered by phpBB® Forum Software © phpBB Group
Traduit par Maël Soucaze et Elglobo © phpBB.fr