| Auteur |
Sujet |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
Bonjour,
Je débute depuis peu avec Zikula.
Que je trouve d'ailleurs très bien fait !
Je souhaiterais pouvoir écrire des pages (ou nouvelles) ayant un contenu légèrement différent suivant le groupe des membres.
Mais je n'ai pas réussi à trouver comment faire.
Est-ce possible ?
Ou est-ce que je dois réserver les pages pour un groupe et les nouvelles pour un autre via les permissions ?
d'avance merci
|
| 12.06.2008, 16:26 |
|
 |
Gilles
Grand Maître
enregistré depuis : jui. 2005
Messages : 2199
dernière visite: 01.09.08
|
Bonjour Benchi, bienvenue !
Que désires tu écrire : des pages statiques ? (module Pages) ou des news (module nouvelles) ?
Quelles sont les différences que tu désires mettre en place ? Du contenu ? de l'apparence ?
Gilles ><>°
|
| 12.06.2008, 16:43 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
A la base, je pensais utiliser des news.
Concernant les différences, ce serait au niveau du contenu.
Par exemple, les membre du groupe VIP auraient une information supplémentaire affichée dans la news.
Tu penses que c'est faisable ?
|
| 12.06.2008, 17:50 |
|
 |
Gilles
Grand Maître
enregistré depuis : jui. 2005
Messages : 2199
dernière visite: 01.09.08
|
Citation : Par exemple, les membre du groupe VIP auraient une information supplémentaire affichée dans la news.
Toujours la même information, ou différente de news en news ?
Oui, ca doit être possible si dans ta news, tu dis qu'à partir de ======== ce n'est visible que pour les personnes loggées, ensuite, il y aura un peu de code à faire afin de cacher cette partie au commun des mortels :D
++
Gilles ><>°
|
| 12.06.2008, 17:53 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
L'information sera différente de news en news.
Citation : Oui, ca doit être possible si dans ta news, tu dis qu'à partir de ======== ce n'est visible que pour les personnes loggées, ensuite, il y aura un peu de code à faire afin de cacher cette partie au commun des mortels :D
As-tu une idée du fichier à modifier afin d'y insérer du code ?
|
| 12.06.2008, 18:13 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
J'ai trouvé dans "/modules/news/" les fichiers impactant la pré-visualisation de news, ainsi que ceux gérant l'affichage dans les catégories.
Mais je pas encore celui qui s'occupe de l'affichage des new
|
| 12.06.2008, 18:35 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
Histoire de donner de indications sur mon avancée...
Le template qui sert à afficher la news est news_user_articlecontent.htm
Il me reste "plus cas" trouver le fichier contenant la fonction qui appelle le template
|
| 12.06.2008, 19:19 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
Je n'ai toujours pas trouvé
Donc si vous avez une piste pour m'aider, je suis preneur
|
| 13.06.2008, 20:57 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 659
dernière visite: 31.08.08
|
as tu réussis à limiter l'affichage au utilisateurs loggués comme te l'avais préconiser Gille ?
|
| 13.06.2008, 21:37 |
|
 |
Starguezer
Bisu
enregistré depuis : fév. 2007
Messages : 95
dernière visite: 22.06.08
|
A tout hasard, il n'existe pas une variable dans Zikula permettant de tester l'appartenance d'un utilisateur à un groupe ?
Pour qu'en gros dans le template il puisse faire quelque chose dans ce style :
- {if user.group.name == VIP}Voilà l'info top secrete !{/if}
----------
Vous êtes fan de séries TV ? SeriesParadise.com recrute !
|
| 13.06.2008, 23:23 |
|
 |
Gilles
Grand Maître
enregistré depuis : jui. 2005
Messages : 2199
dernière visite: 01.09.08
|
en fait, dans le template de news (dans /themes/tontheme/templates/news ou /modules/news/pntemplates ) et le template news_user_articlecontent.htm dans la variable smarty $preformat.fulltext il faut que tu regarde comment faire un script de type "modifer" (y'a des exemples dans system/pnRender/plugins ) pour que tu puisse modifier ton
- <!--[$preformat.fulltext]--> en <!--[$preformat.fulltext|monscript]-->
et dans ce modifer.monscript, tu fera une recherche de la séquence "====" et tu n'affichera la suite que si on a le droit de privilège qui va bien.
Voilà !
++
Gilles ><>°
|
| 13.06.2008, 23:29 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
Je vous remercie beaucoup pour vos pistes !
J'ai donc créé un script de type "modifier".
Par contre, j'utilise la variable smarty $preformat.maintext
J'ai donc modifier le fichier /modules/news/pntemplates/news_user_articlecontent.htm
- <!--[$preformat.maintext]--> remplacé par <!--[$preformat.maintext|controlvip]-->
Et j'ai créé un fichier system/pnRender/plugins/modifier.controlvip.php
- function smarty_modifier_controlvip ($string)
- {
- $pos = stripos($string, "=====");
-
- if ($pos !== false) {
- $string = substr($string, 0, $pos);
- }
-
- return $string;
- }
Tout ceci cache la partie à partir de "=====".
Reste à trouver comment récupérer le groupe du membre...
|
| 15.06.2008, 09:29 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 659
dernière visite: 31.08.08
|
tiens... faudra que je pense à diffuser ce smarty sur le site officiel au passage .. ferait çà demain
pour gid tu mets l'id indiquer dans le module group, j'ai pas mis le nom du group pour éviter une requête sql
- /**
- * Smarty block to implement group checks in a template
- *
- *
- * Example
- * <!--[checkgroup gid="1" ]-->
- * do some stuff now we have permission
- * <!--[/checkgroup]-->
- *
- * @author Andre Bergues
- * @param array $params All attributes passed to this function from the template
- * @param string $content The content between the block tags
- * @param object $smarty Reference to the Smarty object
- * @return mixed the content if permission is held, null if no permissions is held (or on the opening tag), false on an error
- */
- function smarty_block_checkgroup($params, $content, &$smarty)
- {
- // check if there is something between the tags
- if (is_null($content)) {
- return;
- }
-
- // check our input
- if (!isset($params['gid'])) {
- $smarty->trigger_error('checkgroup: attribute component required');
- return false;
- }
-
- // look in the session to see if there is a UID
- $uid = SessionUtil::getVar('uid');
- if (empty($uid)) {
- return; // if not return ... no sql request to db are done
- }
-
-
- // group check ...
- if (!pnModAPIFunc('Groups', 'user', 'isgroupmember', array('uid' => $uid, 'gid' => $params['gid']))){
- return;
- }
-
- return $content;
- }
modifié par : mumuri, 15 Jn 2008 - 12:07
|
| 15.06.2008, 11:43 |
|
 |
Gilles
Grand Maître
enregistré depuis : jui. 2005
Messages : 2199
dernière visite: 01.09.08
|
je pense que tu n'as qu'a rajouter cette partie dans ton script :
- if (!pnModAPIFunc('Groups', 'user', 'isgroupmember', array('uid' => $uid, 'gid' => $params['gid']))){
- return;
- }
Content que tu arrives à tes fins !
Gilles ><>°
|
| 15.06.2008, 16:53 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
J'ai mis ce bout de code pour récupérer l'id de la personne qui consulte la page
- $uid = SessionUtil::getVar('uid');
Et le bout de code avec pnModAPIFunc.
Par contre, où puis-je trouver des explications sur le fonctionnement de cette fonction ?
J'ai remplacé $params['gid'] par l'id du groupe VIP.
Mais cela ne semble pas fonctionner correctement....
En tout cas, je vous remercie beaucoup pour votre aider
|
| 15.06.2008, 21:00 |
|
 |
mumuri
Franc-Maçon
enregistré depuis : oct. 2005
Messages : 659
dernière visite: 31.08.08
|
http://api.zikula.org/Core/PostNuke_Core/pnAPI/_pnMod.php.html
t'a du faire une c*****rie , j'utilise cette méthode et çà marche trés bien
est ce que tu as checké que ton uid était valide ?
if (!empty($uid)) { ...
penser aussi à bosser sans le cache de pnrender et du module themes en forcant la compilation
modifié par : mumuri, 15 Jn 2008 - 21:21
|
| 15.06.2008, 21:20 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
Je viens de comprendre mon erreur
Je mettais '3' au lieu de 'gid=3'
Voici donc le code de ma fonction
- function smarty_modifier_controlvip ($string)
- {
- $pos1 = stripos($string, "=====");
-
- if ($pos1 !== false) {
- $string2 = substr($string, 0, $pos1);
- }
-
- $uid = SessionUtil::getVar('uid');
- if (!empty($uid)) {
- if (!pnModAPIFunc('Groups', 'user', 'isgroupmember', array('uid' => $uid, 'gid' => 'gid=3')))
- {
- $string2 .= substr($string, ($pos1+6), (strlen($string)-$pos1));
- }
- }
- return $string2;
- }
Cela fonctionnement maintenant exactement comme je voulais.
Mon seul soucis....
lorsque je rafraichis ma page, j'obtient le message d'erreur suivant :
Citation : Erreur : Un problème est survenu lors du traitement de votre demande. Merci de vérifier les données d'entrées.
|
| 15.06.2008, 21:20 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
merci mumuri pour le lien
|
| 15.06.2008, 21:27 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
Citation : t'a du faire une c*****rie
Je pense aussi
Et étant donné que j'ai eu un dur week-end, je me pencherais sur le sujet demain
Après une bonne nuit de repos, je ferais moins de bêtise (enfin j'espère)
|
| 15.06.2008, 21:48 |
|
 |
YokaV
Grand Maître
enregistré depuis : déc. 2005
Messages : 604
dernière visite: 29.07.08
|
http://community.zikula.org/module-...id-8-pid-23.htm
-------------------------------------------
...n'oubliez pas que l'outil Recherche est votre ami !
...bien souvent il répond à nos questions avant même que l'on ne se les pose ! ^^
|
| 16.06.2008, 07:44 |
|
 |
Benchi
Bisu
enregistré depuis : jun. 2008
Messages : 12
dernière visite: 16.06.08
|
ça y est enfin !!!!
Je verrais à faire un code peut-être plus propre plus tard....
Mais voici ce qui fonctionne !
- function smarty_modifier_controlvip ($string)
- {
- $pos1 = stripos($string, "==debut==");
- $pos2 = stripos($string, "==fin==");
-
- if ($pos1 !== false) {
- $debstring = substr($string, 0, $pos1);
- $finstring = substr($string, $pos2+7, strlen($string));
-
- $uid = SessionUtil::getVar('uid');
- if (!empty($uid)) {
- if (pnModAPIFunc('Groups', 'user', 'isgroupmember', array('uid' => $uid, 'gid' => '3')))
- {
- $debstring .= substr($string, $pos1+9, ($pos2-($pos1+9)));
- }
- else
- {
- }
- }
- $string = $debstring ."". $finstring;
- }
-
-
- return $string;
- }
Je commence mon paragraphe VIP par ==debut== et je le termine par ==fin==
Mon erreur principale venait de la négation devant pnModAPIFunc
Un grand merci à vous tous !!!
|
| 16.06.2008, 21:31 |
|
 |