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.htmlLe 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">
<p 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">
<p 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">
<p 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.