[PBTV4.1] Créer une page index avec la news épinglée + les flux rss

Introduction:



Tout comme le tutoriel fait pour la V3, nous l'avons porté pour ceux utilisant la Version 4.1 de PHPBoost

1) Il est toujours basé sur le module news pour récupérer le css et donc la mise en forme.
2) On utilise un fichier php + un fichier edito.tpl
3) la suppression des colones de menus gauche & droit.
* Pour avoir de nouveau les colonnes: commentez les en début de ligne avec deux "slash" = //


Par contre par rapport à la version 4.0 elle diffère sur plusieurs point de vu, vu que dans la 4.1 l'édito à été supprimé et remplacé par la possibilité d'épinglé une news en tête des actualités.

Le visuel





Commençons ..



Ouvrez un document texte ou vous allez copier/coller le code ci-dessous, et que vous nommerez "index.php". A la racine de votre PBt, le fichier original, sera renommé : "old-index.php" ( fichier sauvegardé).

Si les fonctions RSS ne servent pas il suffit de les commenter, ou de les supprimer du fichier php, et de ne pas les utiliser en tpl.

Code PHP :
<?php
//Licence
/*##################################################
* index.php
* -------------------
*
* Date :  04/12/2014
* Auteur: Swan / Saturnin / EDN
* Site: http://easy-design.net/
*
###################################################
* Index personnalisé pour la 4.1/ 4.1.2 
* ATTENTION : Ne pas utiliser pour la 4.0
* [PBTV4.1] Créer une page index avec la news épinglée + les flux rss
###################################################*/
define('PATH_TO_ROOT', '.');
//Début du chargement de l'environnement
include_once('./kernel/init.php');
// Enlève les deux colonnes de menus gauche & droit. 
// Pour avoir de nouveau les colonnes: commentez les en début de ligne avec deux "slash" = //
define('NO_LEFT_COLUMN', true);
define('NO_RIGHT_COLUMN', true);
//Chargement d'un fichier css, ici le fichier css du module news
define('ALTERNATIVE_CSS', 'news');
//Titre de la page, ici Accueil
define('TITLE', 'Edito');
 //Chargement de l'environnement ( header )
require_once('./kernel/header.php');
 
//*********************************************
 
function get_home_page()
{
defined('FEED_URL') or define('FEED_URL', SyndicationUrlBuilder::rss('news')->rel());
// RSS
$dw_langs = array(
'L_READ' => $DOWNLOAD_LANG['read_feed'],
'L_POSTED_ON' => $LANG['on']
);
//Mise en variable des flux 
$contents_feed_wiki = Feed::get_parsed('wiki', Feed::DEFAULT_FEED_NAME, 1, false, 10);
$contents_feed_web = Feed::get_parsed('news', Feed::DEFAULT_FEED_NAME, 0, false, 10);
$contents_feed_download = Feed::get_parsed('download', Feed::DEFAULT_FEED_NAME, 0, false, 10);
$tpl = new FileTemplate('news/edito.tpl');
$result = PersistenceContext::get_querier()->select('SELECT *
FROM '. NewsSetup::$news_table .' news
LEFT JOIN '. DB_TABLE_MEMBER .' member ON member.user_id = news.author_user_id
WHERE  (top_list_enabled = 1)
ORDER BY ' . 'creation_date'. ' ' . 'ASC' . '
LIMIT :number_per_page OFFSET :start_limit',
array(
'number_per_page' => 1,
'start_limit' => 0
));
while($row = $result->fetch()){
$daten = new Date(DATE_TIMESTAMP, TIMEZONE_SYSTEM, $row[creation_date]);
$tpl->assign_block_vars('DETAIL', array(
'TITLE' => $row[name],
'CONTENT' => $row[contents],
'NAME' => $row[login],
'DATE' => $daten->to_date(),
));
}
//Chargement des variables
$tpl ->assign_vars( array(
'PATH_TO_ROOT' => TPL_PATH_TO_ROOT,
'THEME' => get_utheme(),
'FEED_MENU' => Feed::get_feed_menu(FEED_URL),
'feed_web' => $contents_feed_web,
'feed_wiki' => $contents_feed_wiki,
'feed_download' => $contents_feed_download
 
));
 
return $tpl->display(TRUE);
}
// ---------------------------------------------------
        echo get_home_page();
include_once('./kernel/footer.php');
?>


A propos de la news épinglée ou pas ...



Et si je veux juste la dernière news de mon site, je fais comment ?

Dans le code si vous ne voulez pas définir cette fameuse news, Vous pourrez commenter la ligne 61 comme ceci :

Code PHP :
//WHERE  (top_list_enabled = 1)


Vous passerez alors en ordre de trie "ASC" (correspond alors à un tri croissant), donc c'est la dernière news que vous aurez écrite qui s'affichera.

Je souhaite juste avoir la news épinglée avec une news supplémentaire, c'est possible ?

Pour avoir les deux l'épinglée et la suppléante, On ne commente pas la ligne 61 (code ci-dessus) et vous modifierez juste la valeur "1" par "2" de la ligne 65 :

Code PHP :
'number_per_page' => 1, 


Je veux une news ou plusieurs news, mais sans celle qui est épinglée, je procède comment?

Si vous avez commenté la news épinglée précédemment, vous pouvez aussi jouer sur le nombre de news affichées en modifiant la ligne 65 :

Code PHP :
'number_per_page' => 1, 


La vous avez une news .. essayez 2 ou 3 pour voir et n'oubliez pas de rafraichir vos caches. Normalement vous génèrerez plusieur News .. A vous de jouer ;)

Le fichier edito.tpl



le Tpl quant à lui est en grande partie basé sur le news.tpl, Il est à placer dans "../templates/VOTRE_THEME/modules/news/" sous le nom de "edito.tpl".

Et si vous ne trouvez pas ce cheminement dans votre thème, il vous faudra créer manuellement les dossiers.

Pourquoi là et pas à la racine de votre PHPBoost, directement dans le dossier "templates/news"? Simplement à cause de future mise à jour que vous pourriez effectuer sur le CMS.

Code TPL :
 
<div class="module_position edito">
# START DETAIL #
<div class="module_top_l"></div>
<div class="module_top_r"></div>
<div class="module_top">
        <div class="module_top_title" style="padding: 5px;">
<h3><a href="./syndication/?url=/rss/news/" title="news" class="fa fa-syndication"></a> {DETAIL.TITLE}</h3>
</div>
<div class="spacer"></div>
    </div>
    <div class="module_contents">
        {DETAIL.CONTENT}
    </div>
<div class="module_bottom_l"></div>
           <div class="module_bottom_r"></div>
           <div class="module_bottom"></div>
# END DETAIL #
</div>
<br /><br /><br />
<div class="module_position">
<div class="module_top_l"></div>
<div class="module_top_r"></div>
<div class="module_top">
<div class="module_top_title">
<h3><a href="./syndication/?url=/rss/news/" title="news" class="fa fa-syndication"></a> Les actualités du site</h3>
</div>
</div>
            <div class="news_content">
                &nbsp;&nbsp;{feed_web}</h3>
</div>
<div class="module_bottom_l"></div>
           <div class="module_bottom_r"></div>
           <div class="module_bottom"></div>
</div>
<br /><br /><br />
<div class="module_position">
<div class="module_top_l"></div>
<div class="module_top_r"></div>
<div class="module_top">
<div class="module_top_title">
<h3><a href="./syndication/?url=/rss/wiki/" title="wiki" class="fa fa-syndication"></a> Derniers articles du Wiki</h3>
</div>
</div>
            <div class="news_content">
                &nbsp;&nbsp;{feed_wiki}
</div>
<div class="module_bottom_l"></div>
           <div class="module_bottom_r"></div>
           <div class="module_bottom"></div>
</div>
<br /><br /><br />
<div class="module_position">
<div class="module_top_l"></div>
<div class="module_top_r"></div>
<div class="module_top">
<div class="module_top_title">
<h3><a href="./syndication/?url=/rss/download/" title="Téléchargements" class="fa fa-syndication"></a> Derniers Téléchargements</h3>
</div>
</div>
            <div class="news_content">
                &nbsp;&nbsp;{feed_download}
</div>
<div class="module_bottom_l"></div>
           <div class="module_bottom_r"></div>
           <div class="module_bottom"></div>
</div>
 


Pour le code à vous de le personnaliser si vous le désirez :)

Important:

L'édito n'est pas modifiable par l'administration des news. C'est soit la dernière news qui s'affiche ou celle que vous définirez comme épinglé qui pourra vous servir d'édito. En déduction logique choisissez la première news du cms ;)



Si vous avez des questions, n'hésitez pas à les poser sur le forum :)


Créé le 04/12/2014, par Swan & Saturnin

Cette page a été consultée 1969 fois