Fork me on GitHub




« 1 ... 4 5 6 (7) 8 9 10 ... 12 »


Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Régulier
Inscrit: 27/01/2005 00:14
De Paris
Messages: 292
Merci bien pour tes efforts blueteen, j'attends ton hack avec impatience ^^

Un point que je n'est pas vraiment compris :

Tu as cloner profile ou juste copier certain fichiers de profile dans yogurt ?

Et n'y a-til pas moyen d'obtenir le groupe a la main avec une requête ?

Posté le : 29/12/2008 19:23

Les mots des hommes sont nombreux mais la vérité est divine et unique.
Partager Twitter Partagez cette article sur GG+
Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
j'ai juste cloné un seul fichier du module 'profile' (userinfo.php).
Fichier que je laisse de toute façon à l'intérieur du module profile.

J'ai enlevé les parties inutiles et celles qui faisaient planter le hack, apporté une petite modification nécessaire, et c'est tout

On fait juste un petit include de ce fichier dans yogurt (index.php), et on y touche plus.

Ensuite, on a accès à tous les champs du module 'profile', et on les insère directement dans le template de yogurt.

Tous les champs sont au bon format automatiquement (comme si on les visualisait sous 'profile').

Et les droits d'accès aux profils et aux divers champs sont respectés également.

Mais je détaillerai les modifications et le fonctionnement dès que j'ai finalisé mon dernier bug (enfin celui que je crois être le dernier).

Posté le : 29/12/2008 19:44
Partager Twitter Partagez cette article sur GG+
Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Semi pro
Inscrit: 08/03/2006 21:08
Messages: 1176
Salut blueteen!

Pour les problème de page blanche, il faut passer sur profile 1.52! Tu n'aura plus de souci...

Citation :

blueteen a écrit:
Bon, il y a bien des soucis avec le module profile et les permissions d'accès (ainsi qu'un souci de page blanche que je rencontrais en anonyme).

http://www.xoops.org/modules/newbb/vi ... =&topic_id=66183&forum=28

Du coup, je vais patienter avant de livrer mon hack, car ce n'est pas 100% fonctionnel, et ça ne respecte pas les droits d'accès du coup !

Mon principe était de créer un clone légèrement modifié de /modules/profile/userinfo.php, de l'inclure dans /modules/yogurt/index.php

Et ensuite, je pouvais simplement afficher les champs de mon choix, directement dans le template avec un code de cette sorte (donc en se basant sur le nom du nouveau champs créé dans le module profile).

<{foreach item=category from=$categories}>
    <{if isset(
$category.fields)}>
        <{foreach 
item=field from=$category.fields}>
        <{if 
$field.name == "disponibilite"}>
        <
div id="yogurt-profile-statistics" class="outer">
        <
class="odd"> <img src="images/signature.gif" />
        <
span class="yogurt-profileinfo-label"><{$field.title}>:</span>
        </
p>
        <
p  class="yogurt-profileinfo-valuebigtext even"><{$field.value}></p>
        </
div>
        <{/if}>
        <{/foreach}>
    <{/if}>
<{/foreach}>


Comme on le voit dans le code ci-dessus, je parcours les champs du module profile (récupéré à l'aide mon userinfo personnel), et selon le nom du champs (disponibilite) dans ce cas, j'affiche le libellé de mon champs (Disponibilité) ainsi que (la ou) les valeurs correspondantes.

Une fois l'inclusion mise en place dans l'index.php du moduile yogurt, tout ce qu'on a faire, c'est jouer avec le template pour ajouter les infos comme on le souhaite.

Le format de d'affiche est directement le bon, peu importe le format des champs créés, puisqu'on se base sur le code du module profile lui-même.

Et c'est tout !
Ca marche plutôt pas mal, mises à part ces questions de droits d'accès.

Je reviendrai poster dès que tous ces petits bugs seront réglés, mais la piste semble bonne et facile à suivre au final.

Posté le : 29/12/2008 20:29
Partager Twitter Partagez cette article sur GG+
Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Supporter Xoops
Inscrit: 09/01/2005 13:37
De Breizh
Messages: 16972
profile 1.52 est sur le trunk du svn du projet Xoops

Posté le : 29/12/2008 20:46

La connaissance s'accroît quand on la partage ...
Partager Twitter Partagez cette article sur GG+
Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
yep je l'ai récupéré dans l'après-midi !

j'ai résolu mon souci de récupération du 'mid' du module 'profile'.
j'attaque la rédaction du post explicatif !

Posté le : 29/12/2008 21:15
Partager Twitter Partagez cette article sur GG+
Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Voilà voilà !
Je vous propose de tester le hack suivant qui devrait vous permettre d'afficher sous yogurt, tous les champs personnalisé que vous avez créés dans le module profile.

Mais sous une forme encore plus simple que les hacks utilisés précédemment, en espérant que ce soit concluant chez vous aussi !

Le principe :
1 - Récupérer le fichier ci-joint (zip contenant profile2yogurt.php), et le placer dans le dossier /modules/profile/

Si vous avez renommé le module 'profile', vous devez changer la ligne 22 pour indiquer votre nom de dossier pour ce module.
$modulename "profile";


Je me sers de cette variable plus loin dans le code pour récupérer le mid du module.

Idem avec la ligne 23, que vous devez paramétrer pour indiquer le nom de dossier utilisé pour votre module 'yogurt'.

2 - Dans le fichier /modules/yogurt/index.php,juste avant :
include("../../footer.php");

Insérer le code suivant :
include_once XOOPS_ROOT_PATH."/modules/profile/profile2yogurt.php";


Dans l'include, pensez à changer le nom du dossier contenant 'profile' si vous l'avez modifié.

Lorsque ces 2 opérations seront faites, vous ne devriez plus avoir revenir sur ces fichiers.

Nous allons à présent attaquer la partie "affichage des informations du module profile dans le module yogurt".

Au préalable, je crée un nouveau champs de type checkbox, dans le module 'profile'.
Je le nomme 'Disponibilité', et le champs s'appelle 'disponibilite'.
Je crée 3 options : Matin-Midi-Soir

Le membre pourra cocher une ou plusieurs de ces cases.

J'attribue ensuite les droits de visibilité pour ce champs (voir permissions.png).

Pour cet exemple, je vais travailler sur le fichier /modules/yogurt/templates/yogurt_index.html

Le code de base pour afficher un champs personnalisé du module 'profile' sera du type :
<{foreach item=category from=$categories}>
    <{if isset(
$category.fields)}>
        <{foreach 
item=field from=$category.fields}>
        <{if 
$field.name == "disponibilite"}>
        <
div id="yogurt-profile-statistics" class="outer">
        <
class="odd"> <img src="images/signature.gif" />
        <
span class="yogurt-profileinfo-label"><{$field.title}>:</span>
        </
p>
        <
p  class="yogurt-profileinfo-valuebigtext even"><{$field.value}></p>
        </
div>
        <{/if}>
        <{/foreach}>
    <{/if}>
<{/foreach}>


On voit que je teste le contenu de $field.name, et dans ce cas, si c'est égal à 'disponibilite', alors on affiche le libellé et la valeur de ce champs dans le profil (<{$field.title}> et <{$field.value}>).

Si j'affiche ce code juste sous la partie
<p  class="yogurt-profileinfo-valuebigtext even"><{$user_signature}></p>
</
div>
<{ /if }>

On retrouve l'affichage que l'on voit sur disponibilite.png

S'il n'y pas de valeurs, ou si le visiteur n'a pas les droits de visualisation de ce champs, alors rien n'apparaîtra (parce que j'ai mis les cellules à l'intérieur de la condition).

Un second exemple, j'ajoute un champs de type select, contenant par exemple la tranche d'âge du membre (tranche_age comme nom de champs).
En utilisant le code ci-dessous :
<{foreach item=category from=$categories}>
    <{if isset(
$category.fields)}>
        <{foreach 
item=field from=$category.fields}>
        <{if 
$field.name == "disponibilite"}>
        <
div id="yogurt-profile-statistics" class="outer">
        <
class="odd"> <img src="images/signature.gif" />
        <
span class="yogurt-profileinfo-label"><{$field.title}>:</span>
        </
p>
        <
p  class="yogurt-profileinfo-valuebigtext even"><{$field.value}></p>
        </
div>
        <{/if}>

        <{if 
$field.name == "tranche_age"}>
        <
div id="yogurt-profile-statistics" class="outer">
        <
class="odd"> <img src="images/signature.gif" />
        <
span class="yogurt-profileinfo-label"><{$field.title}>:</span>
        </
p>
        <
p  class="yogurt-profileinfo-valuebigtext even"><{$field.value}></p>
        </
div>
        <{/if}>
        <{/foreach}>
    <{/if}>
<{/foreach}>

J'obtiens l'affichage suivant (age.png)

Je vous laisse tester dans un premier temps, pour voir si c'est une bonne piste.
Les droits d'accès aux profils et de visualisation des champs sont pris en compte.
Si vous ne voyez pas un champs, pensez à vérifier les droits.

Attacher un fichier:



png  permissions.png (3.83 KB)
5661_495934d5cf1a4.png 771X86 px

png  disponibilite.png (5.35 KB)
5661_4959367f572fa.png 268X312 px

png  age.png (1.34 KB)
5661_495939061d4b5.png 169X148 px
zip profile2yogurt.zip Taille: 2.64 KB; Hits: 158

Posté le : 29/12/2008 22:00
Partager Twitter Partagez cette article sur GG+
Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Une petite nouveauté !
Qui simplifie encore l'insertion de données, à l'aide de variables smarty pré-générées !
En effet, je les génère automatiquement à présent (nom et valeur).

Dans le fichier profile2yogurt, juste sous :
$weights[$cat_id][] = $fields[$i]->getVar('cat_id');
}

Ajouter :
$xoopsTpl->assign($fields[$i]->getVar('field_name').'_title'$fields[$i]->getVar('field_title'));
$xoopsTpl->assign($fields[$i]->getVar('field_name'), $value);


Attention de bien mettre ces lignes après l'accolade, pour que les variables smarty soient toujours créées !
Je joins le fichier déjà modifié à ce post.

Si je prends mon exemple avec les disponibilités et la tranche d'âge, j'obtiens de manière automatique les variables smarty suivantes
<{$disponibilite_title}><{$disponibilite}>
<{
$tranche_age_title}><{$tranche_age}>


En fait, j'obtiens automatiquement une première variable composée du nom du champs suivi de _title (<{$disponibilite_title}>), qui contient le libellé du champs.
Et une autre variable, contenant la valeur (<{$disponibilite}>).

Je peux utiliser ces variables directement dans le template /modules/yogurt/templates/yogurt_index.html
Ce qui est beaucoup plus simple que l'explication de mon post précédent !

Et je peux par exemple, créer un nouveau bloc de données contenant mes disponibilité avec ce bout de code :
<{if isset($disponibilite)}>
<
div id="yogurt-profile-statistics" class="outer">
<
class="odd"> <img src="images/signature.gif" />
<
span class="yogurt-profileinfo-label"><{$disponibilite_title}>:</span>
</
p>
<
p  class="yogurt-profileinfo-valuebigtext even"><{$disponibilite}></p>
</
div>
<{/if}>


Je teste si une valeur est présente pour mes disponibilités, si oui, j'affiche les infos, sinon, rien n'apparaît à l'écran.

Je peux aussi choisir de toujours afficher le blocs d'information, contenant le libellé de mon champs, mais avec une cellule vide si le membre n'a pas renseigné cette information.
Dans ce cas, j'utilise simplement le code suivant :
<div id="yogurt-profile-statistics" class="outer">
<
class="odd"> <img src="images/signature.gif" />
<
span class="yogurt-profileinfo-label"><{$disponibilite_title}>:</span>
</
p>
<
p  class="yogurt-profileinfo-valuebigtext even"><{$disponibilite}></p>
</
div>


Les champs disponibles varient en fonction du membre dont la fiche est affichée.
Les variables smarty créées correspondent aux champs qui sont normalement affichées dans le module profile, pour ce membre.
Cela varie en fonction des droits de visibilité définis.

Dans le cadre de vos tests, vous pouvez ajouter juste après la ligne suivante :
$xoopsTpl->assign($fields[$i]->getVar('field_name'), $value);

Ce code là :
echo '<{$'.$fields[$i]->getVar('field_name').'_title}> <{$'.$fields[$i]->getVar('field_name').'}><br />';


Ou décommentez la ligne correspondante (151) sur le fichier zip joint.

Et essayez d'accéder à une fiche d'un membre.
Vous verrez apparaître la liste des variables smarty créées et disponibles pour le membre visité (voir un exemple sur smarty.png)

Attacher un fichier:



png  smarty.png (5.50 KB)
5661_495a5f5415d28.png 367X290 px
zip profile2yogurt.zip Taille: 2.64 KB; Hits: 137

Posté le : 30/12/2008 18:20
Partager Twitter Partagez cette article sur GG+
Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Xoops accro
Inscrit: 15/07/2004 11:16
Messages: 4763
Et un dernier truc (pour le moment).
Par défaut, les valeurs multiples sont affichés comme sur l'image 'avant.png'.
Une valeur par ligne.

On peut changer ça facilement en remplaçant la ligne 142
$value implode('<br />'array_values($value));

Par :
$value implode(' - 'array_values($value));

Ce qui nous donne l'image 'apres.png'.

Attacher un fichier:



png  avant.png (0.88 KB)
5661_495a58ef16a1e.png 146X82 px

png  apres.png (0.86 KB)
5661_495a58f770e89.png 139X68 px

Posté le : 30/12/2008 18:23
Partager Twitter Partagez cette article sur GG+
Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Supporter Xoops
Inscrit: 17/12/2005 01:41
De Alpes Maritimes
Messages: 1682
Super je vais tester ca rapidement.
Sinon vu que tu va t'ennuyer maintenant blueteen
Pense tu que l'on pourrait faire la même chose pour le module système en effet je voudrait mettre un petit logo avec le sexe de l'user dans le block en ligne et dans le bloc nouveau inscrit. J'ai essayer d'adapter les code précédent pou ce module mais ça ne donne rien soit je vois la variable (donc ça marche pas ) soit j'ai une redondance qui me declanche une page blanche

Posté le : 30/12/2008 19:11
Partager Twitter Partagez cette article sur GG+
Re: recuperation des donnée d'enregistrement dans profile utilisateur sous xoops2.32
Régulier
Inscrit: 27/01/2005 00:14
De Paris
Messages: 292
Magnifique bouleau ! Grandement merci ! (j'adore les hack ^^)

Posté le : 31/12/2008 17:53

Les mots des hommes sont nombreux mais la vérité est divine et unique.
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
« 1 ... 4 5 6 (7) 8 9 10 ... 12 »



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

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