VI. Tutoriels

HomeCustom : Personnalisez votre accueil !

Dans ce tutoriel nous ne cherchons pas à ce que votre Page d'Accueil soit la plus esthétique possible, nous nous concentrerons donc uniquement sur la personnalisation fonctionnelle. Nous utiliserons ainsi très peu le langage HTML et CSS mais davantage le langage PHP et MySQL. En d'autre terme, bien que ce tutoriel soit adapté pour tout le monde, il est quand même recommandé d'avoir quelques notions dans ces divers langages et en algorithme.

Introduction




Dans ce tutoriel je vais pouvoir vous expliquer comment personnaliser votre petit module HomeCustom. En effet, il est toujours plus agréable d'avoir une page d'accueil qui reprend les diverses activité de votre site :

  1. Les dernières news,
  2. Les derniers articles,
  3. Et enfin les prochains événements à venir.



En somme visuellement pour faire un petit schéma récapitulatif voici à quoi ressemblera votre page d'Accueil :

Votre page d'accueil
Vos 3 derniers Articles
Article 3
Article 2
Article 1
Vos 3 dernières News
News 3
News 2
News 1
Vos 3 prochains Evénements
Evénement 1
Evénement 2
Evénement 3


Heu... :hum Il y quelques chose que je ne comprends pas, les articles et les news sont classé par ordre décroissant mais pas les événements, est-ce normal ?



Très bien vu, la question est forte intéressante puisque effectivement le dernier article et la dernière news arrivera bien en tête de liste, ce qui est totalement normal.

En ce qui concerne les événements, on affiche les prochains donc ils doivent apparaitre par ordre chronologique on ne va pas afficher d'abord l'événement de Juin 20XX avant celui de Janvier 20XX. Mais par contre il faudra penser à ne pas afficher les événements qui sont passés.
Eh oui il faut penser à tous quand on code ! :)


Alors pour ce faire, il faudra modifier 2 fichiers (HomeCustomHomePageExtensionPoint.class.php et home.tpl) et créer 3 fichiers (articles.tpl, news.tpl et events.tpl).

Modification des fichiers




Dans un premier je vous propose de modifier d'abord le HomeCustomHomePageExtensionPoint.class.php puis le fichier home.tpl.

HomeCustomHomePageExtensionPoint.class.php




Ici nous accorderons une grande partie du tutoriel car c'est la partie la plus technique. C'est ici que nous coderons en PHP & MySQL, nous irons chercher toutes les informations dont nous avons besoin dans la Base De Donnée (BDD).

Tu es bien gentil mais où ce trouve ce fichier HomeCustomPagetrucclasse...php que tu nous dis de modifier ?



Oui, autant pour moi ^^ ce fichier ce trouve ici : HomeCustom/phpboost/HomeCustomHomePageExtensionPoint.class.php


Ce que vous avez




Voici le code que contient ce fichier :

Code PHP :
 
<?php
/*##################################################
 *                     HomeCustomHomePageExtensionPoint.class.php
 *                            -------------------
 *   begin                : August 25, 2012
 *   copyright            : (C) 2012 Kevin MASSY
 *   email                : kevin.massy@phpboost.com
 *
 *
 ###################################################
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 ###################################################*/
class HomeCustomHomePageExtensionPoint implements HomePageExtensionPoint
{
private $template;
public function get_home_page()
{
return new DefaultHomePage($this->get_title(), $this->get_view());
}
private function get_title()
{
return LangLoader::get_message('title', 'common', 'HomeCustom');
}
private function get_view()
{
$this->template = new FileTemplate('HomeCustom/home.tpl');
return $this->template;
}
}
?>
 


Le nouveau code




Je ne sais pas s'il serait de grande utilité de vous faire un cours et de vous amener petit à petit pour créer votre fichier puisque la plupart des personnes feront un copié collé de la solution. Néanmoins, pour les plus courageux ne vous inquiétez pas, le fichier contient pleins de commentaires, en Français et en Anglais (Vous n'avez donc aucune excuse :devil ), pour réussir à comprendre la logique du code.

Code PHP :
 
<?php
/*##################################################
 *   HomeCustomHomePageExtensionPoint.class.php
 *  -------------------
 * begin  : August 25, 2012
 * copyright  : (C) 2012 Kevin MASSY
 * email  : kevin.massy@phpboost.com
 *
 *
 ###################################################
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 ###################################################*/
class HomeCustomHomePageExtensionPoint implements HomePageExtensionPoint
{
private $template;
public function get_home_page()
{
$columns_disabled = Environment::get_graphical_environment()->get_columns_disabled();
$columns_disabled->set_disable_left_columns(false); //passer à "true" pour désactiver
$columns_disabled->set_disable_right_columns(false);
$columns_disabled->set_disable_top_central(false);
$columns_disabled->set_disable_bottom_central(false);
return new DefaultHomePage($this->get_title(), $this->get_view());
}
private function get_title()
{
return LangLoader::get_message('title', 'common', 'HomeCustom');
}
private function get_view()
{
$this->template = new FileTemplate('HomeCustom/home.tpl');
$this->build_view();
return $this->template;
}
private function build_view()
{
// ici on définit la date en Français
// for the French date
setlocale(LC_ALL, 'french', 'fr_FR.UTF8', 'fr.UTF8', 'fr_FR.UTF-8', 'fr.UTF-8', 'fr_FR');
$this->build_articles_view($this->articles_results());
$this->build_news_view($this->news_results());
$this->build_events_view($this->events_results());
}
private function articles_results()
{
$now = new Date();
$querier = PersistenceContext::get_querier();
$results = $querier->select('SELECT articles.*, member.*, com.number_comments, notes.average_notes, notes.number_notes, note.note, cat.rewrited_name AS rewrited_name_cat
FROM ' . PREFIX . 'articles articles
LEFT JOIN ' . PREFIX . 'articles_cats cat ON cat.id = articles.id_category
LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = articles.author_user_id
LEFT JOIN ' . DB_TABLE_COMMENTS_TOPIC . ' com ON com.id_in_module = articles.id AND com.module_id = \'articles\'
LEFT JOIN ' . DB_TABLE_AVERAGE_NOTES . ' notes ON notes.id_in_module = articles.id AND notes.module_name = \'articles\'
LEFT JOIN ' . DB_TABLE_NOTE . ' note ON note.id_in_module = articles.id AND note.module_name = \'articles\' AND note.user_id = :user_id
AND (published = 1 OR (published = 2 AND publishing_start_date < :timestamp_now AND (publishing_end_date > :timestamp_now OR publishing_end_date = 0)))
ORDER BY articles.date_created DESC
LIMIT 3',
array(
'user_id' => AppContext::get_current_user()->get_id(),
'timestamp_now' => $now->get_timestamp()
));
/*
SELECT = On selectionne tous les champs liés aux articles
FROM = Dans quelles entités sont issues les champs
LEFT JOIN = On fait les jointure afin de dire que les clefs primaire sont identiques
AND = On fait bien attention a récupérer un article qui a été publié avec autorisation ou différé après heure
ODRDER BY = On classe les articles par la date de création et par ordre décroissant (DESC, le plus récent en premier et le plus ancien en dernier)
LIMIT = On récupère uniquement les 3 derniers articles
*/
return $results;
}
private function news_results()
{
$now = new Date();
$querier = PersistenceContext::get_querier();
$results = $querier->select('SELECT news.*, member.*, cat.rewrited_name AS rewrited_name_cat
FROM ' . PREFIX . 'news news
LEFT JOIN ' . PREFIX . 'news_cats cat ON cat.id = news.id_category
LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = news.author_user_id
AND (approbation_type = 1 OR (approbation_type = 2 AND start_date < :timestamp_now AND (end_date > :timestamp_now OR end_date = 0)))
ORDER BY news.creation_date DESC
LIMIT 3', array(
'timestamp_now' => $now->get_timestamp()
));
/*
SELECT = On selectionne tous les champs liés aux news
FROM = Dans quelles entités sont issues les champs
LEFT JOIN = On fait la jointure afin de dire que les clefs primaire sont identiques
AND = On fait bien attention a récupérer une news qui a été publiée avec autorisation ou différé après heure.
ODRDER BY = On classe les news par la date de création et par ordre décroissant (DESC, le plus récent en premier et le plus ancien en dernier)
LIMIT = On récupère uniquement les 3 dernières news.
*/
return $results;
}
private function events_results()
{
$now = new Date();
$today = strtotime(date("Y-m-d", $now->get_timestamp()));
$querier = PersistenceContext::get_querier();
$results = $querier->select('SELECT *
FROM '. PREFIX . 'calendar_events event
LEFT JOIN ' . PREFIX . 'calendar_events_content event_content ON event_content.id = event.content_id
LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = event_content.author_id
LEFT JOIN '. PREFIX . 'calendar_cats cat ON cat.id = event_content.id_category
WHERE approved = 1
AND start_date >= :timestamp_now
ORDER BY start_date
LIMIT 3
', array(
'timestamp_now' => $today
));
/*
SELECT = On selectionne tous les champs liés aux événements
FROM = Dans quelles entités sont issues les champs
LEFT JOIN = On fait la jointure afin de dire que les clefs primaire sont identiques
WHERE On fait bien attention a récupérer un événement qui a été publié
AND = On récupère uniquement un prochain événement (les événements passés on ne les veut pas)
ODRDER BY = On classe les événements par date de début par ordre chronologique (ASC, inutile de le préciser, on précise uniquement le DESC)
LIMIT = On récupère uniquement les 3 prochains événements
*/
return $results;
}
private function build_articles_view(SelectQueryResult $results)
{
// ici les résultats seront envoyés dans articles.tpl
// results send in articles.tpl
$tpl = new FileTemplate('HomeCustom/articles.tpl');
while($row = $results->fetch())
{
$article = new Article();
$article->set_properties($row);
$tpl->assign_block_vars('articles_items', $article->get_tpl_vars());
// create a new custom TPL variable made with the help of $article
// ici on créeait une nouvelle variable personnalisée avec l'aide de $article 
$tpl->put_all(array(
'DATE_DAY' => strftime('%d', $article->get_date_created()->get_timestamp()),
'DATE_MONTH_A' => strftime('%b', $article->get_date_created()->get_timestamp()),
));
}
// ici c'est pour "pousser" articles.tpl via # INCLUDE ARTICLES # dans le home.tpl
// "push" articles.tpl with # INCLUDE ARTICLES # in home.tpl
$this->template->put('ARTICLES', $tpl);
}
private function build_news_view(SelectQueryResult $results)
{
// ici les résultats seront envoyés dans news.tpl
// results send in news.tpl
$tpl = new FileTemplate('HomeCustom/news.tpl');
while ($row = $results->fetch())
{
$news = new News();
$news->set_properties($row);
$tpl->assign_block_vars('news_items', $news->get_array_tpl_vars());
}
// ici c'est pour "pousser" news.tpl via # INCLUDE NEWS # dans le home.tpl
// "push" news.tpl with # INCLUDE NEWS # in home.tpl
$this->template->put('NEWS', $tpl);
}
private function build_events_view(SelectQueryResult $results)
{
// ici les résultats seront envoyés dans events.tpl
// results send in events.tpl
$tpl = new FileTemplate('HomeCustom/events.tpl');
foreach ($results as $row)
{
// si "rewrited_name" est vide c'est que c'est la categorie racine (root)
// if "rewrited_name" is empty it's root category (root)
$row['rewrited_name'] = !empty($row['id_category']) ? $row['rewrited_name_cat'] : 'root';
// je me prend pas la tête j'utilise le builder du module calendar, comme ça je suis sure que le lien généré sera correcte.
// using the "CalendarUrlBuilder" to build link
$link = CalendarUrlBuilder::display_event($row['id_category'], $row['rewrited_name'], $row['id_event'], $row['rewrited_title']);
// ici sa boucle et on fait correspondre le tableau extrait de la BDD avec des variables TPL
// here is the loop to correspond the row in database with the right TPL variable
$tpl->assign_block_vars('events_items', array(
'U_LINK' => $link->absolute(),
'TITLE' => $row['title'],
'CONTENTS' => $row['contents'],
'PSEUDO' => $row['login'],
'LOCATION' => $row['location'],
'LAST_DATE' => strftime('%d/%m/%Y', $row['last_registration_date']),
'MAX_MEMBER' => $row['max_registered_members'],
'START_DATE' => strftime('%d/%m/%Y', $row['start_date']),
'END_DATE' => strftime('%d/%m/%Y', $row['end_date']),
'CAT' => $row['name'],
'START_DATE_FULL' => strftime('%d %B %Y', $row['start_date']),
// date de début jour
// start date of day
'START_DATE_DAY_FULL' => strftime('%A', $row['start_date']),
'START_DATE_DAY_SHORT' => strftime('%a', $row['start_date']),
'START_DATE_DAY_FIGURE' => strftime('%d', $row['start_date']),
// date de début mois
// start date of month
'START_DATE_MONTH_FULL' => strftime('%B', $row['start_date']),
'START_DATE_MONTH_SHORT' => strftime('%b', $row['start_date']),
'START_DATE_MONTH_FIGURE' => strftime('%m', $row['start_date']),
// date de début année
// start date of year
'START_DATE_YEAR_FULL' => gmdate_format('%Y', $row['start_date']),
'START_DATE_YEAR_SHORT' => gmdate_format('%y', $row['start_date']),
));
}
// ici c'est pour "pousser" events.tpl via # INCLUDE EVENTS # dans le home.tpl
// "push" events.tpl with # INCLUDE EVENTS # in home.tpl
$this->template->put('EVENTS', $tpl);
}
}
?>
 


home.tpl




Ensuite il nous faut de modifier le home.tpl parce que c'est bien beau d'avoir un fichier PHP bien remplis mais si on n'utilise pas ses variables il nous sert strictement à rien. :crazy

Celui-ci se trouve ici : HomeCustom/template/home.tpl

Ce que vous avez




Non ! :lol Quand même je ne vais pas vous dire ce que vous avez, votre fichier est quasiment vide ! Ce serait vous manquer de respect tout ça, le plus simple et de tout supprimer ! :cool

Le nouveau code




Ah je vous avez prévenu le code est très basique, en d'autre terme il est horriblement moche ! Mais il fonctionne je vous le garanti, libre à votre imagination de le rendre plus esthétique. :D

Code TPL :
 
<div class="center"><h1>Votre Page d'accueil</h1></div>
<br/>
<div class="center"><h2>Les 3 derniers articles</h2></div>
# INCLUDE  ARTICLES #
<div class="center"><h2>Les 3 derni&egrave;res news</h2></div>
# INCLUDE  NEWS #
<div class="center"><h2>Les 3 prochains &eacute;v&eacute;nements</h2></div>
# INCLUDE  EVENTS #
 


Non, votre page n'est pas encore fonctionnelle ! Rappelez-vous, il nous faut modifier 2 fichiers et nous devons en créer 3. La on vient de finir la première partie soit la modification des 2 fichiers.

Ceci-dit je vous l'accorde dans la logique des choses, le fichier home.tpl est la fichier que l'on doit s'occuper en dernier puisqu'il représente le résultat final. :)


Création des fichiers




Enfin vous allez pouvoir créer des fichiers, tout le monde aime créer (sauf moi :D ).

Comme je vous l'ai dis plus haut, on va créer 3 fichier :

  1. articles.tpl
  2. news.tpl
  3. events.tpl





articles.tpl




Cette page .tpl permettra de mettre en forme (oui j'ai compris elle est pas si jolie que ça la forme ! :whistle ) vos derniers articles.

Le code




Code TPL :
# START articles_items #
<hr>
<div>
<a href="{articles_items.U_ARTICLE}"><p>{articles_items.TITLE}</p></a>
<p>{articles_items.DESCRIPTION}... <a href="{articles_items.U_ARTICLE}">[${LangLoader::get_message('read-more', 'common')}]</a></p>
<p>${TextHelper::lowercase_first(LangLoader::get_message('the', 'common'))}  : {articles_items.DATE}</p>
# IF articles_items.C_AUTHOR_DISPLAYED #
<p>${LangLoader::get_message('by', 'common')} : <span>{articles_items.PSEUDO}</span></p>
# ENDIF #
</div>
# END articles_items #


Les différentes variables possibles




Oui, il serait judicieux de vous dire ce qu'il peut être rajouter aussi ! Vous l'avez bien compris les variables sont belle est bien repris du module articles... Mais pas toutes ! Il y en a 2 qui ont étaient créées ! :)

Toutefois, il est important de préciser qu'il existe plusieurs types de variables :

  • Les variables d’affichage : Le résultat affiché est très explicite.
  • Les variable de conditions : Le résultat affiché ne veut pas dire grand chose pour les visiteurs.



En d'autre terme, vous l'aurez compris, les variables d'affichage se servent des variables de conditions. Par exemple, on ne va pas afficher un bouton de suppression d'article si l'utilisateur lambda n'a pas les droits requis (surtout pas le lien de suppression ! :crazy ) alors :

Code TPL :
 
# IF articles_items.C_DELETE #
<a href="{articles_items.U_DELETE_ARTICLE}" class="fa fa-delete" data-confirmation="delete-element"></a>
# ENDIF #
 


Je ne suis pas à l'aise avec ça ! Il me manque quelques explications sur l'utilisation des variables tu peux m'expliquer ?



Non ! :devil J'évite de trop m'écarter du sujet principal, Ici je vous donne uniquement une sorte de "lexique" des différentes variables utilisable. En revanche, si la partie variable de conditions vous reste ambiguë ou si vous souhaitez simplement avoir quelques explications supplémentaires, ne vous inquiétez pas, un article lui est consacré dans la documentation de PHPBoost (On ne va réinventer la roue quand même ! ;) ) voici son lien :) : [CLIQUEZ ICI]




Les variables d'affichage



Les variables du module Articles



NOMS SIGNIFICATIONS UTILISATIONS EXEMPLE
TITLE Affiche le titre de l'article {articles_item.TITLE} Article 1
DATE Affiche la date de création de l'article  {articles_item.DATE} Samedi 14 Mars 2015 à 14h50
DATE_ISO8601 Affiche la date de création de l'article  {articles_item.DATE-ISO8601} 2015-03-14T14:50:00+01:00
DATE_SHORT Affiche la date de création de l'article {articles_item.DATE_SHORT} 14/03/2015
PUBLISHING_START_DATE Affiche la date de publication de l'article s'il a été poster en différé {articles_item.PUBLISHING_START_DATE} 14/04/2015
PUBLISHING_START_DATE_ISO8601 Affiche la date de publication de l'article s'il a été poster en différé {articles_item.PUBLISHING_START_DATE} 2015-04-14T14:50:00+01:00
PUBLISHING_END_DATE Affiche la date de fin de publication de l'article s'il a été poster en différé {articles_item.PUBLISHING_END_DATE} 14/05/2015
PUBLISHING_END_DATE_ISO8601 Affiche la date de fin de publication de l'article s'il a été poster en différé {articles_item.PUBLISHING_START_DATE} 2015-05-14T14:50:00+01:00
DATE_UPDATED Affiche la dernière date de modification de l'article {articles_item.DATE_UPDATE} 14/03/2015
L_COMMENTS Affiche "Poster commentaire"  {articles_item.L_COMMENTS} Poster un commentaire
NUMBER_COMMENTS Affiche le nombre de commentaires sur l'article {articles_item.NUMBER_COMMENTS} 0, 1, 2, 3 ...
NUMBER_VIEW Affiche le nombre de vues de l'article {articles_item.NUMBER_VIEW} 0, 1, 2, 3...
NOTE Affiche les petites étoiles de notation {articles_item.NOTE} Les petites étoiles
PSEUDO Affiche le pseudo de l'auteur de l'article {articles_item.PSEUDO} janus57, jpalbert92 ...
DESCRIPTION Affiche la description de l'article  {articles_item.DESCRIPTION} Ceci est la description de l'article 1
PICTURE Affiche le lien de la photo de l'article {articles_item.PICTURE} /phpboost_v4-1/articles/templates/images/default.png
USER_LEVEL_CLASS Affiche le niveau de l'auteur {articles_item.USER_LEVEL_CLASS} admin, modo, membre, visiteur
USER_GROUP_COLOR Donne le code héxadécimal de la couleur du groupe qui a été configuré dans l'administration via le système de groupe {articles_item.USER_GROUP_COLOR} /
CATEGORY_ID Affiche le numéro de la catégorie de l'article {articles_item.CATEGORY_ID} 1, 2, 3 ...
CATEGORY_NAME Affiche le nom de la catégorie de l'article {articles_item.CATEGORY_NAME} catégorie 1
CATEGORY_DESCRIPTION Affiche la description de la catégorie de l'article {articles_item.DESCRIPTION} Ceci est la description de la cat 1
CATEGORY_IMAGE Affiche le lien de l'image de la catégorie de l'article {articles_item.CATEGORY_IMAGE} /phpboost_v4-1/articles/articles.png
U_COMMENTS Affiche le lien de la partie commentaires de l'article {articles_item.U_COMMENTS} /phpboost_v4-1/articles/?url=/1-cat-1/5-article-4-cat-1/
U_AUTHOR Affiche le lien vers le profil de l'auteur de l'article {articles_item.U_AUTHOR} /phpboost_v4-1/user/profile/1
U_CATEGORY Affiche le lien vers la catégorie de l'article {articles_item.U_CATEGORY} /phpboost_v4-1/articles/1-cat-1/
U_ARTICLE Affiche le lien de l'article {articles_item.U_ARTICLE} /phpboost_v4-1/articles/1-cat-1/5-article-4-cat-1/
U_EDIT_ARTICLE Affiche le lien d'édition de l'article {articles_item.U_EDIT_ARTICLE} /phpboost_v4-1/articles/5/edit/
U_DELETE_ARTICLE Affiche le lien de suppression de l'article {articles_item.U_DELETE_ARTICLE} /phpboost_v4-1/articles/5/delete/?token=88baada266a37da1
U_SYNDICATION Affiche le flux RSS {articles_item.U_SYNDICATION} /phpboost_v4-1/syndication/rss/articles/1
U_PRINT_ARTICLE Affiche la version imprimable de l'article {articles_item.U_PRINT_ARTICLE} /phpboost_v4-1/articles/print/5-article-4-cat-1/


Les nouvelles variables



Jusqu'ici nous avons repris les variables d'affichages du module news, mais nous avons créé 2 nouvelles variables dans le fichier PHP :

NOMS SIGNIFICATIONS UTILISATIONS EXEMPLE
DATE_DAY Affiche le jour de la date de création de l'article {DATE_DAY} 01, 02, 03 ... 29, 30, 31
DATE_MONTH_A Affiche le mois abrégé de la date de création de l'article {DATE_MONTH_A} Jan, Févr, Mars, Avr, Mai, Juin, Juil, Août ... Nov, Déc


Les variables de conditions



NOMS SIGNIFICATIONS UTILISATIONS
C_EDIT Si l'utilisateur peut supprimer # IF  articles_items.C_EDIT  #

C_DELETE Si l'utilisateur peut supprimer # IF  articles_items.C_DELETE  #

C_HAS_PICTURE S'il y a une photo sur l'article # IF  articles_items.C_HAS_PICTURE  #

C_USER_GROUP_COLOR Si l'auteur est associé à un groupe avec une couleur # IF  articles_items.C_USER_GROUP_COLOR  #

C_PUBLISHED Si l'article est publié # IF  articles_items.C_PUBLISHED  #

C_PUBLISHING_START_AND_END_DATE Si l'article à une date de début de publication et une date de fin de publication # IF  C_PUBLISHING_START_AND_END_DATE  #

C_PUBLISHING_START_DATE Si l'article à une date de début de publication # IF  articles_items.C_PUBLISHING_START_DATE  #

C_PUBLISHING_END_DATE Si l'article à une date de fin de publication # IF  articles_items.C_PUBLISHING_END_DATE  #

C_DATE_UPDATED Si l'article à été modifié # IF  articles_items.C_DATE_UPDATED  #

C_AUTHOR_DISPLAYED Si l'affichage de l'auteur est activé # IF  articles_items.C_AUTHOR_DISPLAYED  #

C_NOTATION_ENABLED Si la notation est activé # IF  articles_items.C_NOTATION_ENABLED  #

C_AUTHOR_EXIST Si l'auteur exist # IF  articles_items.C_AUTHOR_EXIST  #



ATTENTION : J'insiste car 90% des erreurs sont lié au fait qu'on oublie de fermé le # IF ... # . En fait c'est comme si vous ne terminez pas votre phrase. En algorithme cela se traduit par un FIN SI autrement dit en anglais ENDIF on rajoute alors # ENDIF #.
Cette page a été vue 5138 fois