Fork me on GitHub




(1) 2 »


Module Profile et Multimenu: comment afficher toutes les fiches
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Bonjour !

Je viens d'installer multimenu (module wonderful) et je souhaiterais créer un lien qui affiche directement la liste de toutes les personnes inscrites.

Jusqu'à ce jour, pour obtenir cette liste il fallait utiliser la fonction "rechercher" du module "profile" dans xoops 2.2.5, et dans le formulaire de recherche mettre "contenant @" dans email (puisque pour s'inscrire il faut donner un mail je suis sûr d'avoir tout le monde. Je n'ai pas trouvé d'autre solution).

J'aimerais maintenant créer un lien qui affiche ce résultat directement sans passer par le formulaire de recherche, mais je ne sais pas comment procéder !

(Question subsidiaire: y a t'il un moyen plus simple d'obtenir la liste de tous les inscrits ? Si je laisse le formulaire vierge aucune réponse n'est trouvée.)

Posté le : 06/02/2007 07:18

Edité par lionhell sur 09/02/2007 12:59:44

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
salut,
je n'utilise pas la 2.2.5 et encore moins le module 'profile'.
par contre, d'expérience avec xoops 2.0.X et le module 'xoopsmembers', c'est assez simple à faire.

par défaut, xoopsmembers affiche aussi un formulaire de recherche.
mais en modifiant 2 lignes, on peut changer ça, et lui faire afficher directement la liste des membres.
il suffit alors de créer un lien dans multimenu, qui pointe vers ce module.

la première question pour toi, est donc : est-il possible d'afficher directement la liste des membres avec le module 'profile' ?

lorsque tu auras cette réponse, tu connaîtras forcément le lien qui te permettra d'afficher cette liste, et il ne te restera plus qu'à l'utiliser dans multimenu.

tu peux donner un lien vers la version de "profile" que tu utilises ?

Posté le : 06/02/2007 08:18
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
C'était exactement le sens de ma question, en effet !

Mon site est malheureusement un peu ancien, et trop avancé pour que je le reprenne en 2.0.16. Mais peut-être est-ce possible de modifier légèrement le module "profile" qui accompagne ma version de xoops, comme le module "xoopsmembers"

Je ne comprends pas bien le sens de ta dernière phrase, à tout hasard voici son URL:

http://equipe1ouest.jexiste.fr/modules/profile/

Posté le : 06/02/2007 09:21

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
je voulais dire un lien vers le module utilisé, afin que je le télécharge facilement et que je jette un coup d'oeil rapide.

tu as un gros souci avec : http://equipe1ouest.jexiste.fr/modules/profile/register.php
je n'ai que du code affiché !

Posté le : 06/02/2007 09:24
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Je vois ça !!!

voici un autre site dans la même version, mais qui fonctionne:

http://www.apemelinamercouri.asso.fr/modules/profile/register.php

Posté le : 06/02/2007 09:30

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
ok
mais je voudrais le module à télécharger. (lien vers la page de téléchargement)

Posté le : 06/02/2007 09:33
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
j'ai récupéré extended profile + smartobject pour tester.
premier blocage de mon côté, il fallait du php5.
mais il existe une version de ce module, modifiée pour fonctionner avec php4.
je me suis donc basé sur le fichier search.php (un peu comme je te le disais pour xoopsmembers).
j'ai contrôlé, le fichier search est le même dans les 2 cas.
j'ai donc copié ce fichier, et renommé en liste.php

j'ai commencé par changer cette ligne :
$op = isset($_REQUEST['op']) ? $_REQUEST['op'] : "search";

en :
$op = isset($_REQUEST['op']) ? $_REQUEST['op'] : "results";


de cette façon, c'est la page de résultats qui s'affichait au lieu de la page de recherche.
juste avec cette modif, on n'obtient bien entendu, aucun résultat, vu qu'aucune variable de recherche n'est transmise.

pour tester si ce système va fonctionner chez toi, j'ai allégé un peu le fichier (100 lignes de code au lieu de 400).
je te laisser créer un fichier liste.php qui contiendra le code suivant :
<?php
// $Id: search.php,v 1.2 2006/12/07 20:42:29 mithyt2 Exp $
//  ------------------------------------------------------------------------ //
//                XOOPS - PHP Content Management System                      //
//                    Copyright (c) 2000 XOOPS.org                           //
//                       <http://www.xoops.org/>   ... nbsp;   //
//  ------------------------------------------------------------------------ //
//  This program is free software; you can redistribute it and/or modify     //
//  it under the terms of the GNU General Public License as published by     //
//  the Free Software Foundation; either version 2 of the License, or        //
//  (at your option) any later version.                                      //
//                                                                           //
//  You may not change or alter any portion of this comment or credits       //
//  of supporting developers from this source code or any supporting         //
//  source code which is considered copyrighted (c) material of the          //
//  original comment or credit authors.                                      //
//                                                                           //
//  This program is distributed in the hope that it will be useful,          //
//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
//  GNU General Public License for more details.                             //
//                                                                           //
//  You should have received a copy of the GNU General Public License        //
//  along with this program; if not, write to the Free Software              //
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
//  ------------------------------------------------------------------------ //

include '../../mainfile.php';
$myts =& MyTextSanitizer::getInstance();
$groups $xoopsUser $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS);

        
$xoopsOption['template_main'] = "smartprofile_results.html";
        include_once 
XOOPS_ROOT_PATH."/header.php";

        
$member_handler =& xoops_gethandler('member');
        
// Dynamic fields
        
$profile_handler =& xoops_getmodulehandler('profile');
        
// Get fields
        
$fields =& $profile_handler->loadFields();
        
// Get ids of fields that can be searched
        
$gperm_handler =& xoops_gethandler('groupperm');
        
$searchable_fields =& $gperm_handler->getItemIds('smartprofile_search'$groups$xoopsModule->getVar('mid'));
        
$searchvars = array();

        
$criteria = new CriteriaCompo(new Criteria('level'0">"));
        
$criteria->add(new Criteria('uname'"%""LIKE"));
        
$searchvars[] = "uname";

        
$criteria->setSort("uname");

        
$order "ASC"//DESC pour trier dans l'ordre décroissant
        
$criteria->setOrder($order);

        
$limit 20//indiquer ici le nombre de membres à afficher par page
        
$criteria->setLimit($limit);

        
$start 0;
        
$criteria->setStart($start);

        
//Get users based on criteria
        
$profile_handler xoops_getmodulehandler('profile');
        list(
$users$profiles$total_users) = $profile_handler->search($criteria$searchvars);

        
//Sort information
        
foreach (array_keys($users) as $k) {
            
$userarray["output"][] = "<a href='userinfo.php?uid=".$users[$k]->getVar('uid')."'>".$users[$k]->getVar('uname')."</a>";
            
$userarray["output"][] = $users[$k]->getVar('user_viewemail') == || $xoopsUser->isAdmin() ? $users[$k]->getVar('email') : "";

            foreach (
array_keys($fields) as $i) {
                if (
in_array($fields[$i]->getVar('fieldid'), $searchable_fields) && in_array($fields[$i]->getVar('field_type'), $searchable_types) && in_array($fields[$i]->getVar('field_name'), $searchvars)) {
                    
$userarray["output"][] = $fields[$i]->getOutputValue($users[$k], $profiles[$k]);
                }
            }
            
$xoopsTpl->append('users'$userarray);
            unset(
$userarray);
        }

        
//Get captions
        
$captions[] = _PROFILE_MA_DISPLAYNAME;
        
$captions[] = _PROFILE_MA_EMAIL;
        foreach (
array_keys($fields) as $i) {
            if (
in_array($fields[$i]->getVar('fieldid'), $searchable_fields) && in_array($fields[$i]->getVar('field_type'), $searchable_types) && in_array($fields[$i]->getVar('field_name'), $searchvars)) {
                
$captions[] = $fields[$i]->getVar('field_title');
            }
        }
        
$xoopsTpl->assign('captions'$captions);

        if (
$total_users $limit) {
            
$search_url[] = "op=results";
            
$search_url[] = "order=".$order;
            
$search_url[] = "sortby=".$_REQUEST['sortby'];
            
$search_url[] = "limit=".$limit;
            if (isset(
$search_url)) {
                
$args implode("&amp;"$search_url);
            }
            include_once 
XOOPS_ROOT_PATH."/class/pagenav.php";
            
$nav = new XoopsPageNav($total_users$limit$start"start"$args);
            
$xoopsTpl->assign('nav'$nav->renderNav(5));
        }

include 
XOOPS_ROOT_PATH."/footer.php";
?>


c'est une version très édulcorée de search.php :
j'ai viré le switch qui chargeait soit la recherche soit le résultat.
j'ai viré aussi tous les champs de recherche, sauf celui sur le pseudo (tout aussi valable que le mail, puisqu'on a forcément un pseudo pour s'inscrire).
au final, à l'affichage, on a juste le pseudo (avec un lien vers le profil), et le mail du membre.

c'est juste un test, pour voir si l'approche est bonne pour toi.

si c'est ok, on pourra repartir du fichier search.php pour faire la recherche sur le champs que tu veux, et n'afficher que ce que tu veux (attention par exemple à l'affichage des mails des membres qui ne veulent pas que ce soit public, etc...).

dans ce fichier, j'ai mis 2 commentaires, tu peux indiquer le nombre de membres que tu veux afficher par page (20 par défaut).
tu peux aussi choisir l'ordre de tri d'affichage (par défaut, croissant sur le pseudo).

Posté le : 07/02/2007 17:01
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Merci pour les efforts que tu déploies !

Pour l'instant j'obtiens une page blanche ...

J'ai remplacé quelques paramètres (smartprofile_.... en profile_...) mais cela ne change rien.

Posté le : 07/02/2007 18:02

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Ca y est j'ai trouvé !!

- J'ai supprimé toute la partie "case search"
- Puis je n'ai modifié que le critère uname (inutile de modifier les autres):

J'ai supprimé le test "commence par, fini ou contient" et défini "en dur" le critère par "%" comme tu l'avais fait, ce qui donne:

$criteria->add(new Criteria('u.uname', "%", "LIKE"));

Tu remarqueras qu'il faut écrire 'u.uname' et pas 'uname' seulement ...

Merci pour ton aide qui m'a fait gagner un temps précieux pour repérer les endroits où étaient les tests critères !

Posté le : 07/02/2007 18:17

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Module Profile et Multimenu: comment afficher toutes les fiches
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
ah en effet on ne parlait pas exactement du même module.
moi c'était smartprofile 1.0
bon c'est cool si tu as résolu ton souci (et valorisant de trouver soi-même
à la limite, en re-précisant le nom de ton module et la version, tu peux toujours coller ici le contenu de ton nouveau fichier, au cas où quelqu'un cherche à faire de même !
et en éditant ton premier post, tu pourras rajouter le préfixe 'résolu' si c'est ok ?

Posté le : 07/02/2007 19:28
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

65 Personne(s) en ligne (50 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 65 | Plus ...