Une page index.php avec récupération de la BDD des news

Révision infoking1 du 22/06/2011


Bonjour à tous.

Je propose un petit tutoriel pour insérer une page index.php à la racine de son site, avec la récupération sur la BDD des news, dont l'affichage est pratiquement identique au module news lui même.

Je tiens à préciser que le "codage" vient de Saturnin. Je fais juste le tutoriel, car sur le sujet en question, il y a des codes de partout:D.

A noter également, que cet index.php et edito.tpl a été testé sur le thème Cappuccino. Il se peut que des choses soient à modifier pour les autres thèmes.

Commençons donc.

Le fichier index.php à mettre à la racine de votre site

Code PHP :
<?php
/*##################################################
 *                               index.php
 *                             aditif au module news
 *                            -------------------
 *    Largement récupéré du module news & pages
 *    Il reste sous le © de news.php & pages.php
 *    Copyright          : (C) 2005 Viarre Régis
 *    Modification       : SaTurNin
 ###################################################
 *
 *   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.
 *
###################################################*/
 
// definition de la racine du site pour etre poser a la base(index.php)
define('PATH_TO_ROOT', './');
 
//Css alternatif.
define('ALTERNATIVE_CSS', 'news');
 
require_once('./kernel/begin.php');
 
// definition du tite de la page manuel
define('TITLE', 'Edito');
require_once('./kernel/header.php');
 
// pompé l'édito de news, meme si désactivé
// permet de garder le module admin d'édition 
function get_home_page()
{
global $User, $Sql, $Cache, $Bread_crumb, $CONFIG_NEWS, $LANG, $Session;
require_once('./news/news_begin.php');
// recup rss
import('content/syndication/feed');
    require_once PATH_TO_ROOT . 'poll/poll_mini.php';
$contents_feed_wiki = Feed::get_parsed("wiki", DEFAULT_FEED_NAME, 0, FALSE, 5, 0);
$contents_feed_news = Feed::get_parsed("news", DEFAULT_FEED_NAME, 0, FALSE, 5, 0);
$contents_feed_download = Feed::get_parsed("download", DEFAULT_FEED_NAME, 0, FALSE, 5, 0);
//mise en variable pour tpl et position du tpl
$tpl_news = new Template('news/edito.tpl');
$tpl_news->assign_vars( array(
'C_NEWS_EDITO' => true,
'CONTENTS' => second_parse($CONFIG_NEWS['edito']),
'TITLE' => $CONFIG_NEWS['edito_title'],
        'PATH_TO_ROOT' => TPL_PATH_TO_ROOT,
     'THEME' => get_utheme(),
'FEED_MENU' => Feed::get_feed_menu(FEED_URL),
'feed_news' => $contents_feed_news,
'feed_wiki' => $contents_feed_wiki,
'feed_download' => $contents_feed_download,
//'MON_MENU' => poll_mini(0, BLOCK_POSITION__TOP_CENTRAL),
));
return $tpl_news->parse(TRUE);
}
  echo get_home_page();
 //Envoi de la page
  ///////////////////
 // Derniere news //
///////////////////
global $User, $Sql, $Cache, $Bread_crumb, $CONFIG_NEWS, $LANG, $Session;
require_once('./news/news_begin.php');
$tpl_news = new Template('news/edito.tpl');
$n = 1; //pour le compteur
$resultn = $Sql->query_while("SELECT id, idcat, title, contents, timestamp, img, alt, visible, user_id  
FROM " . PREFIX . "news
WHERE visible = 1
ORDER BY timestamp DESC
" . $Sql->limit(0,6), __LINE__, __FILE__); // limit compteur (depart,fin)
while ($rown = $Sql->fetch_assoc($resultn))
{
$pseudo_id_sql=$Sql->query_while("SELECT * FROM " . PREFIX . "member WHERE user_id ='".$rown['user_id']."'", __LINE__, __FILE__);
$pseudo_id = $Sql->fetch_assoc($pseudo_id_sql);
 
$idcat_icon = $Sql->query_array(PREFIX . "news_cat", "icon", "id", "WHERE id = '" . $rown['idcat'] . "' " . $Sql->limit(0, 1), __LINE__, __FILE__); // <====ici
 
$tpl_news->assign_block_vars('l_news', array(
'N_ID' => $n,
'N_IDCAT' => $rown['idcat'] ,
'N_LINK' => url('news/news.php?id=' . $rown['id'] . '&cat=' . $rown['idcat'], 'news/news-0-' . $rown['id'] . '+' . url_encode_rewrite($rown['title']) . '.php'),
'N_TITLE' => $rown['title'],
'N_TIMESTAMP' => gmdate_format('date_format_short', $rown['timestamp']),
'N_CONTENT' => (strlen( second_parse($rown['contents']) ) > 800 ) ? substr(second_parse($rown['contents']), 0, 800).' ... ' : $rown['contents'], 
'N_IMG'=> (!empty($rown['img'])) ? second_parse_url($rown['img']) : '',
'N_ALT'=> $rown['alt'],
'N_USER_ID'=> $rown['user_id'],
'N_P_USER_ID'=> $pseudo_id['login'] ,
'N_ICON_CAT'=> url("news/".$idcat_icon['icon']) , // <===ici
'N_ALT'=> $rown['alt'], 
 ));
$n++ ; // pas utile mais on sait jamais
}
$Sql->query_close($resultn);
$Sql->query_close($pseudo_id);
$tpl_news->parse();
require_once('./kernel/footer.php');
?>
 


Dans le fichier index.php vous pouvez changer le nombre de news à afficher sur cette ligne (Ligne 84) :

Code PHP :
" . $Sql->limit(0,6), __LINE__, __FILE__); // limit compteur (depart,fin)


Il suffit de changer le "6" par le nombre de votre choix.

Toujours dans le fichier index.php, vous pouvez changer le nombre de caractères à afficher avant la news étendue sur cette ligne (Ligne 98) :

Code PHP :
'N_CONTENT' => (strlen( second_parse($rown['contents']) ) > 800 ) ? substr(second_parse($rown['contents']), 0, 800).' ... ' : $rown['contents'], 


Il est obligatoire de changer le chiffre deux fois .. "800" sur le fichier actuel.

Passons maintenant sur le edito.tpl à insérer dans ./news/templates/

Voici le code HTML :

Code HTML :
# START l_news #
 
        <div class="news_container">
            <div class="news_top_l"></div>
            <div class="news_top_r"></div>
            <div class="news_top">
 
            <span style="float:left;"><a class="news_title" href="{l_news.N_LINK}">{l_news.N_TITLE}</a></span></div><br>
            <div class="news_content">Le, {l_news.N_TIMESTAMP} Par <a href="/member/member.php?id={l_news.N_USER_ID}">{l_news.N_P_USER_ID}</a></div><br>
            <img src="{l_news.N_ICON_CAT}"><br>
            <br>
            <div class="news_content">{l_news.N_CONTENT}</div><br /><br />
            <div class="spacer"></div>
            <div><a href='{l_news.N_LINK}' >[ Lire la suite ]</a></div>
            <br>
            <br>
            <div class="news_bottom_l"></div>
            <div class="news_bottom_r"></div>
            <div class="news_bottom">
            </div>
        </div>
<br />
# END l_news #


L'affichage peut varier selon vos autres modifications précédentes.

Voila le tutoriel en version BETA, est en attente de correction, ou complément :)

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

Créé le 21/06/2011, par m-ickael.

Cette page a été consultée 2138 fois