Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Résolu]Traitement spécial pour un champ d'article
#1
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS : 1.7.0
#~ Version du MLE si existante : nope
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.7
#~ Installed Modules:
#~ * CMSMailer: 1.73.14
#~ * FileManager: 1.0.2
#~ * MenuManager: 1.6.2
#~ * ModuleManager: 1.3.3
#~ * News: 2.10.4
#~ * nuSOAP: 1.0.1
#~ * Printing: 1.0.4
#~ * Search: 1.6.2
#~ * ThemeManager: 1.1.1
#~ * TinyMCE: 2.6.5
#~ * FrontEndUsers: 1.8.1
#~ * CustomContent: 1.5.3
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * max_upload_size: 48000000
#~ * default_upload_permission: 664
#~ * assume_mod_rewrite: false
#~ * page_extension:
#~ * internal_pretty_urls: false
#~ * use_hierarchy: true
#~ Php Information:
#~ * phpversion: 5.2.11
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * E_STRICT: 0
#~ * memory_limit: 64M
#~ * max_execution_time: 10
#~ * safe_mode: Off (Faux)
#~ * session_save_path: Aucune vérification à cause de la restriction spécifiée par PHP open_basedir
#~ * session_use_cookies: On (Vrai)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysql)
#~ * Server Db Version: 5.0.84
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
Bonjour !

Après ce long weekend, j'essaie de remanier le template des articles pour faire exactement ce que je veux. Par rapport à l'exemple de news qui est donné avec le CMS, je ne comprends pas pourquoi il s'affiche comme il le fait. Quand je ne mets pas de sommaire, j'ai seulement le droit à un lien vers le texte complet et j'ai dû changer le template pour obtenir le même résultat que dans l'exemple... Savez-vous pourquoi ?

Cela dit, ce n'est pas très important: j'ai réussi à obtenir le résultat voulu. Sauf que j'aimerais utiliser un champ que j'ai moi-même défini avant le titre :

{if isset($entry->fields["Date"])}
<div class="NewsSummaryLink">
Date: {eval var=$entry->fields["Date"]->value}
</div>
{/if}

J'obtiens l'erreur suivante : syntax error: unidentified token '["Date"])'

Par la suite, j'aimerais également ne pas rappeler ce champ 'Date' dans la boucle foreach, mais je ne vois pas comment faire...

Quelqu'un a une idée ? Merci !
#2
Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version d
Cela dit, ce n'est pas très important: j'ai réussi à obtenir le résultat voulu. Sauf que j'aimerais utiliser un champ que j'ai moi-même défini avant le titre :
Comment as-tu défini ce champs ?
As-tu ajouté une "définition de champs" ?
Si oui, ceci peut te donner une piste : http://www.cmsmadesimple.fr/forum/viewtopic.php?id=2496
#3
Merci ! C'est intéressant, mais je ne suis pas sûr de la façon d'accéder à un champ.
J'ai fait ça, qui semble fonctionner :

{if isset($entry->fields)}
{foreach from=$entry->fields item='field'}
{if $field->name == 'Date'}
<div class="NewsSummaryLink">
{eval var=$field->value}
</div>
{/if}
{/foreach}
{/if}

J'ai défini le champ comme un texte publique.
Je me demandais alors s'il était nécessaire de parcourir toute la liste des champs pour en afficher un seul. Surtout si je sais comment il s'appelle. (Date)
Je voulais accéder directement au champ comme ça : $entry->fields["Date"] , mais ce n'est apparemment pas juste.

Je me suis inspirer de ton lien pour écrire ça :

{if !empty($entry->Date)}
<div class="NewsSummaryLink">
{eval var=$entry->Date}
</div>
{/if}

Je n'ai pas d'erreur, mais ça ne produit aucun résultat, alors que mon premier code fonctionne... Saurais-tu pourquoi ?

J'avoue ne pas bien voir la différence entre :
- {if !empty($entry->Date)}
- {if $entry->Date}
- {if isset($entry->Date)}

Est-ce que tu pourrais m'éclairer ?

EDIT: puisque j'y suis, je dois également implémenté un agenda sur mon site. Je vois qu'on parle bcp de CGCalendar. Est-ce ma meilleure option ?
#4
Rebonjour !

J'ai compris mon erreur : il fallait virer la majuscule à 'Date' (et remplacer les espaces par des underscores).

Sinon, mes articles concernent des modules de formations et j'aimerais les trier selon l'ordre du début de ces modules et qu'ils se retrouvent dans les archives après leur fin. Je me suis dit que je pouvais utiliser showarchive="1" pour les envoyer dans l'archive. ça ne devrait pas être un problème.
En revanche, je ne parviens pas à n'afficher que les modules qui sont en cours ou à venir (si je définis start_time comme la date de début du module, pour après être en mesure de les trier grâce à start_time).
Une autre solution serait d'utiliser le champ extra. Mais j'ai peur que ce ne soit pas explicite pour les futurs éditeurs/administrateurs.
J'ai pensé alors à créer un autre champ, mais je ne vois pas comment m'en servir pour trier mes articles...
Une suggestion ? Merci !
#5
A moins que je n'aie rien compris : pour n'afficher que ce qui est en cours ou à venir, tu n'as qu'à utiliser "Utiliser la date d'expiration :" lors de la confection de l'article.
Pas besoin de créer des champs supplémentaires.
#6
Pour les afficher, tu as tout à fait raison. Mais j'aimerais les trier par ordre de commencement, pas de fin. J'ai créé un champ 'Date', mais je m'attends à des entrées du genre 'Du 4 au 26 mai' et donc je ne peux pas vraiment m'en servir pour un tri alphabétique.
J'aurais voulu me servir du paramètre start_time, mais si je mets le début de l'évènement à une date future, il n'est pas affiché avec la commande :
{news category="Formation" summarytemplate="Article court" pagelimit="10" sortby="start_time"}
J'ai essayé de mettre showall="1" ou même showarchive="1", mais ça n'a rien changé. C'est comme si la date de publication n'était plus prise en compte...
Donc en gros, je comprends que je dois mettre le start_time au moment de la création de la news. Mais j'aimerais quand même pouvoir trié les évènements par rapport au moment de leur commencement.
J'ai pensé à extra, mais j'ai peur que ce ne soit pas explicite pour les futurs éditeurs/administrateurs. Je voulais donc créer un champ appelé 'Date de commencement du module (aaaa/mm/jj)' et l'utiliser pour trier mes modules alphabétiquement. Sauf que je vois pas trop comment faire... Si seulement je pouvais voir comment est utilisé le paramètre sortby, j'y verrais plus clair.

Est-ce que tu vois où je veux en venir ?
#7
Re,

Bonjour c'est intéressant; et avec start="0" tout court dans chaque catégorie ?
naturellement en jouant sur la date d'expiration aussi

Phil Did
-.
#8
Avec start="0", ça ne change strictement rien. On dirait bien qu'il est impossible d'afficher un module si la date de début n'est pas passée.
La date d'expiration, je compte m'en servir pour passer les modules aux archives. Les trier en utilisant la date de fin n'est pas vraiment optimal.

À moins de mettre la main sur un code smarty pour trier une liste d'arrays selon un de leurs champs, je crois que je vais devoir utiliser le champ extra.
#9
Bon, je crois être incapable d'écrire un bout de code smarty pour trier ma liste d'articles grâce à l'un de leurs champs. J'ai fouillé et j'ai trouvé un sujet sur le forum smarty qui date de 2003, mais je comprends rien au code.

Je vous mets le lien, au cas où ça vous intéresse : http://www.smarty.net/forums/viewtopic.php?p=52868

Pour ma part, j'ai été modifié le texte associé au champ 'extra' dans le module news, afin d'expliquer ce que je veux que les utilisateurs y mettent. J'espère que j'en aurai pas besoin pour autre chose.

C'est pourri, mais c'est résolu.


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)