Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2009-02-10 19:15:12

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Billets protégés dans le flux ?

Bonjour,

je suis nouvelle ici (hihi), et je me demandais si il était possible d'afficher le chapô d'un billet protégé par un mot de passe dans un flux de billets (page d'accueil ou autre) ?

Hors ligne

#2 2009-02-10 19:31:38

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Billets protégés dans le flux ?

Je pense que cette fonction pourrait m'être utile.

Hors ligne

#3 2009-02-10 20:53:17

Kozlika
Modo dcTeam
Inscription : 2004-05-08
Site Web

Re : Billets protégés dans le flux ?

Ben dis donc, tu as de la chance qu'une modo à twix passait par là pour t'aider :-P


La documentation : http://doc.dotclear.net/2.0/fulltoc
Le module de recherche du forum : http://www.dotclear.net/forum/search.php ?

Hors ligne

#4 2009-02-10 21:07:19

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Billets protégés dans le flux ?

J'espère qu'un autre modo passera me dire comment qu'on l'utilise cette belle fonction, j'en ai aucune idée :D

Hors ligne

#5 2009-02-10 22:52:54

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Billets protégés dans le flux ?

Je crois que tu peux passer  withoutPassword en paramètre quand tu récupères une liste de billets avec la fonction $core->blog->getPosts($params);

Hors ligne

#6 2009-02-14 15:24:33

zeiram
Membre
Inscription : 2004-06-27
Site Web

Re : Billets protégés dans le flux ?

Pour réussir à faire quelque chose du genre, voici un bout de code qui semble fonctionner. D'abord, dans le fichier _public.php du thème, il faut ajouter :

$core->tpl->addBlock('AllEntries', array('tplPassword','tplAllEntries'));
$core->tpl->addBlock('EntryHasPassword', array('tplPassword','tplEntryHasPassword'));

class tplPassword {
	public static function tplAllEntries($attr, $content) {
		global $core;
		$res = '<?php $passwordState = $core->blog->without_password; ';
		$res .= '$core->blog->withoutPassword(false); ?>';
		$res .= $core->tpl->Entries($attr, $content);
		$res .= '<?php $core->blog->withoutPassword($passwordState); ?>';
		return $res;
	}
	public static function tplEntryHasPassword($attr, $content) {
		$withPassword = isset($attr['not']) ? 0 : 1;
		return '<?php if (('.$withPassword.' && $_ctx->posts->post_password != \'\') || (!'.$withPassword.' && $_ctx->posts->post_password == \'\')) : ?>'.$content.'<?php endif; ?>';
	}
}

(Bien entendu, il faut que tout cela se trouve entre des balises '<?php' et '?>'.)

Ensuite, il faut recopier les fichiers des flux dans les dossier tpl du thème, modifier les boucles <tpl:Entries> pour devenir <tpl:AllEntries> et adapter le comportement selon le cas avec le nouveau bloc de template <tpl:EntryHasPassword>.

Par exemple, remplacer le contenu par un message indiquant que le billet est protégé par mot de passe dans le cas d'un billet protégé, la boucle Entries du fichier atom.xml deviendrait :

  <tpl:AllEntries>
  
  <entry>
    <title>{{tpl:EntryTitle encode_xml="1"}}</title>
    <link href="{{tpl:EntryURL}}" rel="alternate" type="text/html"
    title="{{tpl:EntryTitle encode_xml="1"}}" />
    <id>{{tpl:EntryFeedID}}</id>
    <updated>{{tpl:EntryDate iso8601="1"}}</updated>
    <author><name>{{tpl:EntryAuthorCommonName encode_xml="1"}}</name></author>
    <tpl:EntryIf has_category="1">
    <dc:subject>{{tpl:EntryCategory encode_html="1"}}</dc:subject>
    </tpl:EntryIf>
    <tpl:EntryMetaData><dc:subject>{{tpl:MetaID}}</dc:subject></tpl:EntryMetaData>
    
    <content type="html">{{tpl:EntryExcerpt absolute_urls="1" encode_xml="1"}}
    <tpl:EntryHasPassword not="1">{{tpl:EntryContent absolute_urls="1" encode_xml="1"}}</tpl:EntryHasPassword>
    <tpl:EntryHasPassword><p>Le contenu de ce billet est protégé par mot de passe.</p></tpl:EntryHasPassword>
    </content>
    
    <tpl:Attachments>
      <link rel="enclosure" href="{{tpl:AttachmentURL}}"
      length="{{tpl:AttachmentSize full="1"}}" type="{{tpl:AttachmentMimeType}}" />
    </tpl:Attachments>

    
    <tpl:EntryIf comments_active="1">
      <wfw:comment>{{tpl:EntryURL}}#comment-form</wfw:comment>
      <wfw:commentRss>{{tpl:BlogFeedURL type="atom"}}/comments/{{tpl:EntryID}}</wfw:commentRss>
    </tpl:EntryIf>
  </entry>
  </tpl:AllEntries>

« Y a des jours où faut pas m'chercher !! Et y a des jours tous les jours ! »

Hors ligne

#7 2009-02-14 15:25:44

zeiram
Membre
Inscription : 2004-06-27
Site Web

Re : Billets protégés dans le flux ?

(Bon, il manque un « pour » après le « Par exemple, » dans ma dernière phrase...)


« Y a des jours où faut pas m'chercher !! Et y a des jours tous les jours ! »

Hors ligne

#8 2009-02-15 22:16:11

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Billets protégés dans le flux ?

olala, ça a l'air bien tout ça ! Je testerais ça bientôt ! Merci en tout cas!

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map