Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#25 2008-11-04 09:09:14

Dragondz
Moderator
From: Algérie
Registered: 2005-06-12
Posts: 1,529
Website GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

Merci pat pour toutes ces infos

je connaissais pas la fonction parse, cela va me faire gagner du temps dans mon code!

Et merci aussi pour l’histoire des archives, je pense pas l’utiliser pour le head mais plutot pour des archives d’articles tout court!

A+

Offline

#26 2008-11-04 10:39:29

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,599
GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

A l’occasion de mes lectures, et souhaitant demander l’avis de notre communauté d’experts, je soumettais l’idée de modifier la présentation par défaut des éléments contenus dans la balise <title></title> de TXP afin d’accroître la visibilité des sites sur les moteurs de recherche ( voir le post ).

Wet, m’indiquait, force exemples à l’appuis (via les sites ibm.com et apple.com), qu’une telle structure n’influait pas sur le référencement.
Ne souhaitant pas créer de polémique, et par réel respect envers notre vénéré wet, je n’ai pas répondu et n’en ai fait qu’à ma tête outrepassant ses conseils.

Selon moi, les exemples donnés ne permettaient pas de préjuger de la véracité de la chose puisque de tels sites bénéficient d’une antériorité de plusieurs décennies, et qu’ils profitent avantageusement des nombreux liens (outbound links) de part la webosphère pour augmenter leur « Page Rank ».

Quel ne fut pas mon étonnement de constater que le site de l’intéressé utilise une telle structure (site: awasteofwords.com ). Oups !

Puisque d’aucuns préconisent – pour les pages intérieures d’un site – une structure de type :

Mots clés – Titre ou Catégorie – Nom du site

Voici une construction simple que j’utilise personnellement.

1.° Créons un module (form) de type “article” nommé “title_tag” :

<txp:if_section name="blog">
<txp:if_article_list><txp:title /><txp:else /><txp:title /> - </txp:if_article_list></txp:if_section>
<txp:if_section name="fr,"><txp:site_name /> - <txp:site_slogan />
<txp:else />
<txp:if_category>
<txp:if_individual_article><txp:category title="1" /> : <txp:title /> - <txp:site_name />
<txp:else /><txp:category title="1" /> - <txp:site_name />
</txp:if_individual_article>
<txp:else /><txp:section title="1" /> - <txp:site_name />
</txp:if_category>
</txp:if_section>
<txp:if_status status="404">Page inconnue</txp:if_status>

2.° Ajoutons un appel à ce module dans nos gabarits :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-FR" lang="fr-FR">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><txp:output_form form="title_tag" /></title>
(...)

Have fun folks.

Last edited by Pat64 (2008-11-04 10:42:36)


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#27 2008-12-05 09:14:39

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,599
GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

Nous allons aujourd’hui créer un “système” d’affichage conditionnel selon une borne de dates. En bref, afficher quelque chose si la date du jour est comprise entre une date de début et une date de fin.

Cette méthode peut être intéressante lorsque vous souhaitez diffuser du contenu (texte, image, son) de manière récurrente sur votre site.
Pour ce faire, nous crérons deux champs personnalisés (custom field) – saisie accessible depuis le back end par les onglets “Administartion” -> “Préférences” -> “Options Avançées” zone nommée “Personnalisé” – et qui porteront les libellés suivants :

  • Date_Début_Affichage
  • Date_Fin_Affichage

Ces deux champs personnalisés serviront à stocker des dates sous la forme simplifiée “dd/mm” sans l’année afin de pouvoir respecter la récurrence voulue (le but est d’obtenir un affichage selon deux bornes quelque soit l’année en cours).

Note: dans TXP, l’usage des espaces ne sont pas conseillés pour la création de libellés des champs personnalisés. Nous séparerons donc chaque terme par un trait souligné (underscore)

1.° Dans votre gabarit (template) de page, ajoutez – à l’endroit désiré – l’appel d’une présentation d’article par un module (form) :

<txp:article form="mon_module" />

2.° Créez votre module “mon_module” (de type “article”) en y copiant ces lignes :

<txp:php>
global $thisarticle;
$dateDebut = custom_field(array(
'name'=>'Date_Début_Affichage'));
$dateFin = custom_field(array(
'name'=>'Date_Fin_Affichage'));
if(!empty($dateDebut) && !empty($dateFin)) {
$A = explode('/', $dateDebut.'/'.date("Y").'/'.$dateFin.'/'.date("Y"));
$start = $A[2].'/'.$A[1].'/'.$A[0];
$end = $A[5].'/'.$A[4].'/'.$A[3];
if( strtotime($start) <= strtotime(date("Y/m/d")) && strtotime($end) > strtotime(date("Y/m/d")) ){
echo parse('
Placez ici vos balises TXP/xhtml
');
}
}
</txp:php>

3.° Et voilà comme disent les anglophones ;) Vous avez réalisé, facilement, un système d’affichage conditionnel.
Il vous suffira de renseigner , lors de la saisie d’un article, les champs personnalisés en précisant vos dates début et fin d’affichage comme ceci :

Date_Début_Affichage
04/12
Date_Fin_Affichage
06/12

C’est tout bon. Et cela répondra, au fil des années – que je vous souhaite longues et prospères -, à vos besoins d’affichage automatisé.

Have fun folks,

Last edited by Pat64 (2008-12-09 13:07:03)


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#28 2008-12-05 13:00:02

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,599
GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

Supplément au Tips précédent!

Si vous utilisez TXP 4.0.7 (et j’espère bien pour vous puisqu’il s’agit d’une version majeure ;) vous pouvez bénéficier de la flexibilité du nouveau tag <txp:variable /> afin de stocker la valeur de la condition afin de la rendre disponible partout dans votre site.

1.° Placez au plus haut de votre/vos template(s) [avant la balise doctype] :

<txp:variable name="display-from-dates" value='<txp:output_form form="mon_module" />' />

2.° Plus loin dans votre gabarit, à l’endroit choisi pour afficher conditionnellement votre contenu, placez ceci :

<txp:if_variable name="display-from-dates">
<txp:article id="1" />
</txp:if_variable>

3.° Modifiez le contenu du module “mon_module” comme suit :

(...)
if( strtotime($start) <= strtotime($now) && strtotime($end) >= strtotime($now) ){
echo 'Ok';
}
}
</txp:php>

Qu’il est possible de simplifier sous cette forme :

echo( ( (strtotime($start) <= strtotime($now) && strtotime($end) >= strtotime($now)) ? 'Ok' : '' ) );
}
</txp:php>

4.° Dès lors, où que vous vouliez tester cette condition (affichage selon la borne de dates), il vous suffira d’utiliser une structure telle que:

<txp:if_variable name="display-from-dates">
Placez ici vos balises TXP/xhtml
</txp:if_variable>

Have fun, folks.

Special thanks to Wet and Ruud (our prefered Core Devs) for this amazing new variable tag!

———
Edit: Attention, l’exemple ci-dessus ne fonctionne pas. Le tag <txp:variable /> est assez complexe (imprévisible) d’utilisation. Si je trouve, je corrigerai. Sinon, toute contribution sera la bien venue ;)

Last edited by Pat64 (2008-12-08 12:59:19)


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#29 2008-12-09 10:23:30

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,599
GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

Pour faire suite au message de (d’un ;) sacripant voici comment obtenir avec le plugin “Zem_Contact_Reborn” ce type de présentation :

Comme vous le constatez sur cette image, il est possible d’ajouter des éléments textuels en regard des <label> (ici, la mention entre parenthèses “obligatoire”), de placer les deux points de ponctuation après ce même <label> afin de me pas l’inclure dans les messages d’erreurs, enfin, de placer correctement les cases à cocher après le message correspondant afin de respecter une certaine logique liée au sens de lecture (de gauche à droite).

Plutôt que de vous expliquer par le menu les diverses modifications opérées sur le source de ce plugin, je vous le livre directement (petit cadeau de Noël, donc ;) :

Téléchargez (zem_contact_reborn v. 4-4.3.20 adaptée pour le plugin de langues zem_contact_lang v. 4.0.3.03.B de François PRADIGNAC )

Installez le plugin comme tout autre dans la zone “Installer le plugin” de l’onglet “Administration” -> “Plugins” de votre back office.

Voici maintenant la structure du formulaire présenté en image :

<txp:zem_contact to="youremail@yourwebsite.com" label="Désinscription à la Newsletter" thanks_form="unsubscribe_message" trad="fr">
<p><span class="hot">*</span> Votre <txp:zem_contact_email name="zemSubscriberEmail" label="Email" info=": (obligatoire)" />
<p><span class="hot">&nbsp;</span> <txp:zem_contact_checkbox name="zemUnSubscribe" label="Je me désinscrit" info=": " required="no" value="on" /></p>
<txp:zem_contact_secret name="zemSubscriberLists" value="default" />
<txp:zem_contact_submit label="Confirmer" />
<p><span class="hot">*</span> Saisie Obligatoire</p>
</txp:zem_contact>

Vous disposez donc d’un nouvel attribut (pour toutes les balises de zem_contact) nommé “info” qui vous permettra d’ajouter des libellés supplémentaires.

Have fun folks,

P.S. Sachez que les divers “Trucs, Tips et Astuces” que je livre ici sont des cas “d’école” adaptés de mes projets de clients réels (en production sur la toile). Ils sont donc tous fiables, testés et vérifiés. Sachez également que, si vous trouvez ces conseils utiles, j’accepte tout type de cadeaux pour… Noël :))

Last edited by Pat64 (2008-12-09 14:18:49)


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#30 2009-04-11 09:12:27

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,599
GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

Bonjour.

Il m’arrive de publier des “Tips, trucs et astuces” sur le site txptips.com (dont, somme toute, ce thread doit être à l’origine de sa création ;)

Voici l’un de ces Tips en français.

Je vous propose, aujourd’hui, de créer une invitation à “Tweeter” vos articles à l’aide d’un lien comportant un message préalablement rédigé et dans lequel s’ajoute l’url reduite de ce même article – via le service tinyurl (afin de reduire la limitation de saisie de Twitter à 140 caractères).

Dans le module de votre article individuel (par ex. “default”), ajoutez ceci à l’emplacement voulu de votre lien :

<p><img src="<txp:site_url />img/twitter.gif" width="18" height="18" alt="Twitter" class="icon" /> <a href="http://twitter.com/home?status=Je%20lis%20%3Ca%20href='<txp:php>echo file_get_contents("http://tinyurl.com/api-create.php?url=".permlink(array())).'\'%3E'.$thisarticle['url_title'];</txp:php>%3C/a%3E" title="Publiez sur Twitter!" class="tooltip" onclick="window.open(this.href); return false;">Tweet!</a></p>

Note: Cette proposition a le mérite d’encoder l’url afin de respecter la validation de votre page html.

N’oubliez pas d’uploader votre icône Twitter dans le répertoire /img à la racine de votre site pour faire plus joli ;)

Dès l’ors, vos visiteurs, en cliquant sur ce lien, obtiendront dans leur message Twitter ceci :

Supplément : pour les inconditionnels de Facebook – dont je ne suis pas particulièrement un fan mais qui présente un intérêt marketing – dans certains cas – intéressant – voici le lien à ajouter :

<img src="<txp:site_url />img/facebook.gif" width="18" height="18" alt="Facebook" class="icon"> <a href="http://www.facebook.com/share.php?u=<txp:permlink />" title="Partager sur Facebook" class="tooltip" onclick="window.open(this.href); return false;">Facebook</a>

Idem : n’oubliez pas l’icône pour faire plus joli joli ;)

Have fun folks!

Mise à jour au 12/04/2009 : correction d’une erreur d’encodage des balises. Contrôle validation html OK.

Last edited by Pat64 (2009-04-12 07:29:07)


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#31 2009-04-11 12:34:50

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,599
GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

C’est ce que je vous propose d’obtenir dans le cadre d’un “workflow” (environnement de publication à plusieurs auteurs). Remarquez que nous obtenons, d’une part, l’auteur ainsi que la date initiale de publication, et, d’autre part, la date de modification et le nom réel du correcteur!

Méthode: Dans votre module d’article (par ex. “default”) en substitution de la date de publication, placez ceci :

<p class="publish>Publié par <txp:author /> le <txp:posted format="%d %m %Y à %H:%I" /> <txp:php> $changed = modified(array('format'=>'%d %m %Y à %H:%I')); echo $changed == posted(array('format'=>'%d %m %Y à %H:%I')) ? '' : '| Modifié par '.safe_field("RealName", "txp_users", "name='".safe_field("LastModID", "textpattern", "ID='".$thisarticle['thisid']."'")."'").' le '.modified(array('format'=>'%d %m %Y à %H:%I')).'';</txp:php></p>

Dialogue :

Pas très cool”, me direz-vous.
Rien que de très normal”, rétorquerai-je. Puisque je vous livre cette chose pour des raisons de compatibilité.
Quoi, quoi ?”, vous empresserez-vous d’hurler !
Shush shush…” je vous dis. Car cette contribution à permis de révéler une p’chtite erreur d’affectation des minutes dans le tag <txp:modified />
Whaou, il est fort bien généreux ce Pat64. Si je n’étais déjà mariée, enceinte jusqu’au coup, et attachée à mes cinq amants, je m’marierai illico presto avec lui!”, dîtes-vous, fans que vous êtes de ces p’chtites Tips, Trucs… et astuces :))

Soit ;) Lorsque vous utiliserez la – bienveillante et future – version 4.0.9 de votre CMS préféré, toute dépourvue de ce léger bug habilement corrigé par notre vénéré Wet , vous n’aurez alors plus qu’à utiliser ceci :

<p class="publish">Publié par <txp:author /> le <txp:posted /> <txp:php> $changed = modified(array()); echo $changed == posted(array()) ? '' : '| Modifié par '.safe_field("RealName", "txp_users", "name='".safe_field("LastModID", "textpattern", "ID='".$thisarticle['thisid']."'")."'").' le '.modified(array()).'';</txp:php></p>

… et, d’un seul coeur, à l’unisson, je vous entends déjà vous exclamer :
Oh ! C’est bien mieux, ainsi.”

Have Fun Folks,

Last edited by Pat64 (2009-04-18 17:17:20)


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#32 2009-04-11 15:20:06

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,599
GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

“(…) Ça vous a plus hein
Vous en d’mandez encore (…)”

– Serge Gainsbourg, «Bonnie and Clyde» en duo avec Brigitte Bardot, 1968

… et bien…, voici ce que je vous propose :

Bien sûr, il existe le – magnifique plugin – sed_section_fields by Steve (aka net-carver).

Mais aussi :
  • Steve s’en est allé vers de nouvelles aventures
  • Le plugin nécessite des adaptations au fur et à mesure des nouvelles versions de TXP
  • C’est lourd (un plugin ajoute toujours des fonctions php mobilisant des ressources)

Attention :
C’est un hack (donc nécessitant des modifications des fichiers du coeur de TXP). Toutefois, c’est assez simple et non fastidieux. De plus, depuis la liste de choix de la page “Rédiger”, ce sont les titres des sections affichées plutôt que celui des pages.

Si vous êtes intéressé :
Faîtes le moi savoir ici même (car cette transformation dépasse largement du cadre des ces Trucs, tips… et Astuces).

… See u soon


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#33 2010-04-30 19:28:42

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,599
GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

Le tag :

<txp:file_download_link />

Le problème :

aucun tag TXP ne permet de personnaliser les liens de téléchargement de fichiers, notamment l’ajout et la maîtrise de l’attribut “title” des liens générés.

Pourtant, nous souhaitons indiquer, dans une info-bulle, le nombre de téléchargements réalisés pour notre fichier comportant l’ID n° 1.

Une solution :

Créer un module (“form”) de type “misc”.

<txp:php>
$file = safe_rows('downloads', 'txp_file', 'id = "1"');
echo '<a href="http://example.com/file_download/1/File-Name.vcf" title=" Téléchargez notre carte de visite (téléchargée '.($file ? $file[0]['downloads'] : '0').' fois) " class="rounded tooltip">VCR</a>';
</txp:php>

Note : veillez à changer dans le code ci-dessus, example.com par votre nom de domaine, ainsi que File-Name.vcf par le nom de votre fichier avec son extension.

Finalement :

depuis votre gabarit (“template”), il ne reste plus qu’à appeler le module ainsi créé.

<txp:output_form form="my_form" />

Have fun.

Edit. Support du nombre de téléchargement nul dans l’info-bulle.

Last edited by Pat64 (2010-06-21 08:16:16)


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#34 2010-06-15 18:43:13

Niconemo
Member
From: Rhône-Alpes, France
Registered: 2005-04-18
Posts: 557

Re: [fr-fr] Trucs, Tips et...Astuces

Comment interdire ou autoriser l’accès des articles en fonction de la personne connectée.

Un bidouillage que je viens (enfin) de mettre au point à partir de 2 plugins… (et pas une ligne de PHP, ça tombe bien : je ne suis pas codeur du tout)
En voyant le résultat je me dis que finalement c’est super simple et fonctionnel alors je vous le livre.

Le code brut :

<txp:smd_if field='<txp:custom_field name="Autorisations"/>' operator="contains:NOSPACE" value='<txp:ign_user_info />'>
	AUTORISÉ !
<txp:else />
	INTERDIT !
</txp:smd_if>

Naturellement, il faut remplacer les textes en capitale par du contenu conditionnel.
Par exemple <txp:body /> à la place de “AUTORISÉ” et <p>Désolé vous n'avez pas les autorisations pour lire ce contenu</p> à la place de “INTERDIT

explications

C’est tellement limpide et facile à adapter à de nombreux cas de figure que ne suis même pas certain que ça ait besoin de commentaires. Je donne donc simplement le contexte pour ce cas précis.

Il s’agit d’une base de documents mis en ligne par une centre de formations pour des groupes de stagiaires.
  1. On donne à chaque groupe un pseudo (genre “2010stage3”) et un mot de passe (supprimé au bout de 2 ans).
  2. Dans le custom field “Autorisation” de chaque article le formateur liste simplement les pseudos des groupes autorisés.
  3. Pour voir les articles qui lui sont accessibles le un stagiaire doit se connecter (plugin ign_password)
  4. Le plugin smd_if compare simplement le pseudo avec le champ perso.

NB. On aurait pu aussi utiliser les mots clés ou les catégories à la place d’un champ perso.

Naturellement on peut encore peaufiner… Par exemple, j’ajouterai l’autorisation automatique des administrateurs et rédacteurs à accéder à tout le contenu. L’opérateur de smd_if pourrait être plus précis aussi.

Et selon le même principe, on peut facilement interdire l’accès à une section entière ou à toute partie du site en fonction du login ou du niveau d’autorisation. Fonctions qui ne sont pas encore disponibles par défaut dans Textpattern.

Last edited by Niconemo (2010-06-15 18:50:58)


Nico

Offline

#35 2010-06-15 19:33:05

fpradignac
Plugin Author
From: France near Cognac
Registered: 2005-01-29
Posts: 359
Website

Re: [fr-fr] Trucs, Tips et...Astuces

Épatant Nico !!! Très utile.


françois

Offline

#36 2010-12-12 15:45:38

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,599
GitHub Twitter

Re: [fr-fr] Trucs, Tips et...Astuces

Une règle typographique

Les titres d’articles n’autorisent pas l’usage du point final. On réservera l’usage du point dans les paragraphes pour séparer les phrases.

Que faire si vos rédacteurs n’en font qu’à leur tête ?

Une tentative de réponse : on supprime manuellement les points indésirables. Mais pour corriger 10 000 articles, on choisira…

Le Code

<txp:php>
echo( ( (substr(title(array()), -1) == '.' && substr(title(array()), -3) != '...') ?
substr(title(array()), 0, (strlen(title(array()))-1)) : title(array()) ) );
</txp:php>

Exemple d’utilisation

<section>
<article>
<header>
<h1 class="list">
<a href="<txp:permlink />" rel="tag" title="Lire la suite..."><txp:php>
echo( ( (substr(title(array()), -1) == '.' && substr(title(array()), -3) != '...') ?
substr(title(array()), 0, (strlen(title(array()))-1)) : title(array()) ) );
</txp:php></a>
</h1>
</header>
<p>(...)</p>
<footer>
<p>(...)</p>
</footer>
</article>
</section>

Have Fun Folks

Last edited by Pat64 (2010-12-12 15:52:16)


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

Board footer

Powered by FluxBB