Categories > TinyButStrong general (FR) >

Plugin système de cache et comptes utilisateurs

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: TiTi
Date: 2006-09-07
Time: 19:58

Plugin système de cache et comptes utilisateurs

Bonsoir,

Je suis en train de développez un site web où chaque utilisateur aura son compte membre qui lui sera propre, avec notamment un système de login, logique....
J'apprécie grandement l'utilité du plugin système de cache mais je me suis rendu compte d'un inconvénient relatif à son utilisation sur mon site.

En effet, lorsqu'une personne est connecté, le menu contient une entrée "connexion" et dans le cas contraire une entrée "déconnexion", pour simplifier.

Du coup si je suis connecté et que je génère le fichier de cache, n'importe quel visiteur non loggé vera le terme "déconnexion", absurde... (et pareil dans le cas inverse)

Pour moi, je vois 3 conclusions :
-ne plus utiliser le système de cache -_-
-remplacer les mot "connexion" et "déconnexion" par "mon compte" ou une subtilité du genre
-implémenter une fonction du plugin système de cache qui s'assimilerait à la méthode Show() ou proposerai une solution de remplacement afin d'afficher des blocs conditionnels. Le but est de ré-utiliser l'intégralité du fichier mis en cache et de travailler dessus, afin de conserver une optimisation maximum des performances.

Cela vous semble-t-il possible ?
Que me conseillez vous ?

J'attends vos remarques avant de me plonger dans tbs_plugin_cache.php !
By: Skrol29
Date: 2006-09-07
Time: 21:56

Re: Plugin système de cache et comptes utilisateurs

Salut TiTi,

Il est possible de gérer la fusion du bloc Connexion ou autre chose après le chargement  du cache. Pour cela tu dois passer $TBS->Render = TBS_NOTHING avant l'appel au plug-in.

Après le $TBS->Show(), tu gard donc la main, le cache étant chargé, il ne te reste plus qu'a fusionner manuèlement ton bloc Connexion.
Pour ce faire il faut utiliser des blocs ou des champs autres que [onload] [onshow] ou [var] qui seront déjà tous traités automatiquement auparavant. Utilise des noms personnalisés que tu fusionne avec MergeField() ou MergeBlock(). N'oublie pas qu'il existe une option de MergeBlock() qui te permet de fusionner un bloc comme un bloc conditionnel [onload] ou [onshow]. 
By: TiTi
Date: 2006-09-08
Time: 13:35

Re: Plugin système de cache et comptes utilisateurs

Waou !! TBS est vraiment puissant !

J'ai donc étudié comment gérer mon problème et je suis finalement arrivé à faire le traitement que je recherchais.
Merci bien Skrol29 pour tes conseils !

J'ai quand même pas mal galéré sur le MergeBlock avec un type de données conditionnel (clause when).
Je me suis trouvé une solution plus pratique avec un nodata.

Voici un résumé de ce que j'ai mis en place, afin d'aider ceux qui souhaitent faire à peu près la même chose :


----------------------------
<?php

include('includes/plugins/tbs_plugin_cache.php'); // TBS cache plugin
$TBS = new clsTinyButStrong;
$TBS->Render = TBS_NOTHING; // termine la fusion sans quitter ni afficher le résultat

// tout votre code avec l'utilisation du plugin de cache

$TBS->Show();

if($isconnected==1)
{
    $connectaccount=array(); // on voit 'mon compte'
    $connectregister=array(1); // on ne voit pas les liens d'enregistrement de compte
}
else
{
    $connectaccount=array(1); // on ne voit pas 'mon compte'
    $connectregister=array(); // on voit les liens d'enregistrement de compte
}
$TBS->MergeBlock('connectaccount',$connectaccount);
$TBS->MergeBlock('connectregister',$connectregister);


if ($isconnected==0)
    $connectliens=array('cat'=>'login', 'texte'=>'Connexion');
else
    $connectliens=array('cat'=>'logout', 'texte'=>'Déconnexion');
$TBS->MergeField('connectliens',$connectliens);

echo $TBS->Source;
?>

---------------------

<ul>
    <li><a href="forum/ucp.php?mode=[connectliens.cat]" title="[connectliens.texte]">[connectliens.texte]</a></li>
    <li><a href="account.php" title="[var.lang.lien10]">[var.lang.lien10][connectaccount;block=(li);nodata]</a></li>
    <li><a href="forum/index.php" title="[var.lang.lien9]">[var.lang.lien9]</a></li>
    <li><a href="forum/ucp.php?mode=register" title="[var.lang.lien2]">[var.lang.lien2][connectregister;block=(li)+li;nodata]</a></li>
    <li><a href="inscription.php?cat=why" title="[var.lang.lien3]">[var.lang.lien3]</a></li>
</ul>

-------------------



Résultats possibles à l'affichage (suivant la valeur de $isconnected) :

Connexion
Forum
S'enregistrer
Pourquoi s'inscrire

-------------------

Déconnexion
Mon compte
Forum



Note :
$TBS->Render = TBS_NOTHING; doit bien être placé avant l'appel au plugin de cache comme tu l'as précisé dans ton post ! Ne pas faire $TBS->Show(TBS_NOTHING); !!

Il vaut mieux faire :
echo $TBS->Source; que $TBS->Show(TBS_OUTPUT + TBS_EXIT); à la fin car la méthode Show va bouffer plus de temps de traitement.

TBS => c'est trop fort !