[phpboost 4.1.3 ] Afficher un flux rss des news
Theswat Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Theswat
- Inscrit le : 10/09/2009
- Groupes :
Je cherche ou trouver toute les balise pour les flux car cela ne donne pas bien sur le site voici le lien je suis en homecustome
http://theswat-concept.fr.nf
Home.tpl
Code TPL :
<!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" lang="fr"> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="/HomeCustom/templates/style.css" title="Défaut" rel="stylesheet" type="text/css" media="screen" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.5.3/jquery-ui.min.js" ></script> <script type="text/javascript"> $(document).ready(function(){ $("#featured > ul").tabs({fx:{opacity: "toggle"}}).tabs("rotate", 10000, true); }); </script> </head> <html> <!-- *************************************** #Conteneur **************************************** --> <div id="conteneur"> <!-- *************************************** Début #slide **************************************** --> <div id="featured" > <ul class="ui-tabs-nav"> <li class="ui-tabs-nav-item ui-tabs-selected" id="nav-fragment-1"><a href="#fragment-1"><span><p>Créations de theme</p>Nous créons le theme de votre choix c'est vos couleurs vos envies .</span></a></li> <li class="ui-tabs-nav-item" id="nav-fragment-2"><a href="#fragment-2"><span><p>Theme public</p>Nous vendons une grande gamme de theme</span></a></li> <li class="ui-tabs-nav-item" id="nav-fragment-3"><a href="#fragment-3"><span><p>Partner</p>Pro Street Partner</span></a></li> <li class="ui-tabs-nav-item" id="nav-fragment-4"><a href="#fragment-4"><span><p>News textures</p>Texture pour le nouveaux Bulldog</span></a></li> </ul> <!-- First Content --> <div id="fragment-1" class="ui-tabs-panel" style=""> <img src="/HomeCustom/templates/img_slide/image1.jpg" alt="" /> <div class="info" > <h2><a href="/pages/creations-de-theme-personalise" >Créations de theme personalisé</a></h2> <p>Nous créons des theme personalisé <a href="/pages/creations-de-theme-personalise" >read more</a></p> </div> </div> <!-- Second Content --> <div id="fragment-2" class="ui-tabs-panel ui-tabs-hide" style=""> <img src="/HomeCustom/templates/img_slide/image2.jpg" alt="" /> <div class="info" > <h2><a href="#" >Notre gamme Grand public</a></h2> <p>Découvrez tout nos themes vendu au grand public <a href="#" >read more</a></p> </div> </div> <!-- Third Content --> <div id="fragment-3" class="ui-tabs-panel ui-tabs-hide" style=""> <img src="/HomeCustom/templates/img_slide/image3.jpg" alt="" /> <div class="info" > <h2><a href="#" >Partenaire</a></h2> <p>Nous sommes en partenariat et en colaboration avec Pro Street <a href="#" >read more</a></p> </div> </div> <!-- Fourth Content --> <div id="fragment-4" class="ui-tabs-panel ui-tabs-hide" style=""> <img src="/HomeCustom/templates/img_slide/image4.jpg" alt="" /> <div class="info" > <h2><a href="#" >News Texture</a></h2> <p>Voici la nouvelle texture pour le nouveau model pro street la Bulldog <a href="#" >read more</a></p> </div> </div> </div> </div> <!-- *************************************** Fin #slide **************************************** --> <!-- ************************************* Début #contenu ************************************** --> <div id="contenu"> <div class="cadre_menu_contenu" > <div class="fond_menu_contenu"> <img src="/HomeCustom/templates/images/image_forum.jpg" alt="" /> <p>Rejoignez notre communauté et venez discuter tactique avec les autres membres du forum</p> </div> <a href="/forum/index.php" title="forum"><img style="float:left" src="/HomeCustom/templates/images/forum.jpg" alt="" /></a> <img src="/HomeCustom/templates/images/effet_miroir.png" alt="" /> </div> <div class="cadre_menu_contenu"> <div class="fond_menu_contenu"> <img src="/HomeCustom/templates/images/image_guide.jpg" alt="" /> <p>Retrouvez le guide complet d'utilisations de nos produits</p> </div> <a href="/wiki/guide" title="guide"><img style="float:left" src="/HomeCustom/templates/images/guide.jpg" alt="" /></a> <img src="/HomeCustom/templates/images/effet_miroir.png" alt="" /> </div> <div class="cadre_menu_contenu"> <div class="fond_menu_contenu"> <img src="/HomeCustom/templates/images/image_videos.jpg" alt="" /> <p>Toutes les videos de nos produits sont disponibles</p> </div> <a href="/pages/videos" title="videos"><img style="float:left" src="/HomeCustom/templates/images/videos.jpg" alt="" /></a> <img src="/HomeCustom/templates/images/effet_miroir.png" alt="" /> </div> <div class="cadre_menu_contenu_dernier"> <div class="fond_menu_contenu"> <img src="/HomeCustom/templates/images/image_telechargement.jpg" alt="" /> <p>Retrouvez les maps, les mods, et autres...</p> </div> <a href="/download/download.php" title="download"><img style="float:left" src="/HomeCustom/templates/images/telechargement.jpg" alt="" /></a> <img src="/HomeCustom/templates/images/effet_miroir.png" alt="" /> </div> <div style="clear:both"></div> <!-- ******************************** Début Colonne gauche #left ********************************* --> <div id="left"> <div id="cadre_news_titre"> <img style="vertical-align:middle" src="/HomeCustom/templates/images/fleche_titre.png" alt="" /> Nos 5 Derniere news </div> <div id="cadre_news"> {FEED_NEWS} <div style="clear:both"></div></div> <!-- ********************************** Fin Colonne gauche #left ********************************** --> </div> <!-- ******************************** Début Colonne droite #right ********************************* --> <div id="right"> <div class="cadre_titre">Menus Rapide </div> <div class="cadre"> <div class="mini_cadre"> <img src="/HomeCustom/templates/pack_icon/13.png" class="icon" alt="" /> Notre boutique sur marquette place <div style="clear:both"></div></div> <div class="mini_cadre_fonce"> <img src="/HomeCustom/templates/pack_icon/17.png" class="icon" alt="" /> INSCRIVEZ-VOUS A LA NEWSLETTER <div style="clear:both"></div></div> <div class="mini_cadre"> <img src="/HomeCustom/templates/pack_icon/12.png" class="icon" alt="" /> DERNIERS MESSAGES DU FORUM <div style="clear:both"></div></div> <div class="mini_cadre"> <img src="/HomeCustom/templates/pack_icon/11.png" class="icon" alt="" /> UNE QUESTION CONTACTER NOUS <div style="clear:both"></div></div> </div> <div class="cadre_titre">DORUT IT PAT</div> <div class="cadre"> <img src="/HomeCustom/templates/images/photo3.jpg" class="image_gauche" alt="" /> <p> Morbi eu tempus elit. Curabitur ultri. </p> <br /> <div style="clear:both"></div></div> </div></div> </html>
feed_news.tpl
Code TPL :
# START item # <!-- ITEM --> <div style="float:left;width:228px;text-align:center;"> # IF item.C_IMG #<img src="{item.U_IMG}" alt="" width="228" height="128" style="" /># ENDIF #</div> <div style="float:left;width:280px;padding-left:6px;"> <a href="{item.U_LINK}">{item.TITLE}</a> <p class="smaller">{L_POSTED_ON} {item.PSEUDO} {item.DATE} - </p> <p class="smaller"><a href="{item.U_LINK}" class="small">{L_READ} {item.DESC}</a></p> </div> <div class="spacer"></div> <!-- END ITEM --> # END item #
Merci d'avance pour vos réponse
babsolune Membre non connecté
-
Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
-
Equipe Développement
Theswat Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Theswat
- Inscrit le : 10/09/2009
- Groupes :
Erreur d'encodage de contenu
La page que vous essayez de voir ne peut être affichée car elle utilise un type de compression invalide ou non pris en charge.
Veuillez contacter les propriétaires du site pour les informer de ce problème.
la c'est résolu mes problème mes news s’affiche pas
Édité par Theswat Le 09/03/2015 à 20h11
babsolune Membre non connecté
-
Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
-
Equipe Développement
Theswat Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Theswat
- Inscrit le : 10/09/2009
- Groupes :
feed_news
Code TPL :
# START item # <!-- ITEM --> <div style="float:left;width:228px;text-align:center;"> # IF item.C_IMG #<img src="{news_items.URL_IMG}" alt="" width="228" height="128" style="" /># ENDIF #</div> <div style="float:left;width:280px;padding-left:6px;"> <a href="{news_items.U_LINK}">{news_items.NAME}</a> <p class="smaller">{news_items.PSEUDO} - {news_items.DATE} - </p> <p class="smaller"><a href="{news_items.U_LINK}" class="small">{news_items.DESCR}</a></p> </div> <div class="spacer"></div> <!-- END ITEM --> # END item #
babsolune Membre non connecté
-
Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
-
Equipe Développement
Theswat Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Theswat
- Inscrit le : 10/09/2009
- Groupes :
Code TPL :
<?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() { /**************************************************** ************* DEBUT REQUETE SQL ARTICLES ************ *****************************************************/ $now = new Date(); $querier = PersistenceContext::get_querier(); $results_articles = $querier->select('SELECT articles.id, articles.id_category, articles.title, articles.rewrited_title, articles.picture_url, articles.contents, articles.description, articles.date_created, member.login, 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 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', array( 'timestamp_now' => $now->get_timestamp() )); /* SELECT = On selectionne tous les champs liés aux articles (id, id_category, title, rewrited_title, picture_url, contents, description, date_created) FROM = Dans quelles entités sont issues les champs LEFT JOIN = On fait la jointure afin de dire que les clefs primaire sont identiques. Donc on regarde dans quel catégories est l'articles (cat.rewrited_name AS rewrited_name_cat | cat.rewrited_name <=> cat.id = articles.id_category) N'oublions pas la jointure sur la table de membre afin de récupérer les info sur le membre (member.login <=> member.user_id = articles.author_user_id) AND = On fait bien attention a récupérer un article qui a été publié avec autorisation ou différé après heure (on recup pas les articles en attente de contribution). 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 anciens en dernier) */ $this->build_articles_view($results_articles); /**************************************************** ************* FIN REQUETE SQL ARTICLES ************** *****************************************************/ /**************************************************** ************* DEBUT REQUETE SQL NEWS **************** *****************************************************/ $now = new Date(); $querier = PersistenceContext::get_querier(); $results_news = $querier->select('SELECT news.id, news.id_category, news.name, news.rewrited_name, news.picture_url, news.contents, news.short_contents, news.creation_date, member.login, 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', array( 'timestamp_now' => $now->get_timestamp() )); /* Même principe que précédemment */ $this->build_news_view($results_news); /**************************************************** ************* FIN REQUETE SQL NEWS ****************** *****************************************************/ } /**************************************************** ************* DEBUT BUILD ARTICLES ****************** *****************************************************/ private function build_articles_view(SelectQueryResult $results) { // ici les résultats seront envoyé dans articles.tpl $tpl = new FileTemplate('HomeCustom/articles.tpl'); $i = 0; foreach ($results as $row) { if ($i >= 3) //si plus de 3 on casse { break; } // si "rewrited_name_cat" est vide c'est que c'est la categorie racine (root) $row['rewrited_name_cat'] = !empty($row['id_category']) ? $row['rewrited_name_cat'] : 'root'; // je me prend pas la tête j'utilise le builder du module articles, comme ça je suis sure que le lien généré sera correct. $link = ArticlesUrlBuilder::display_article($row['id_category'], $row['rewrited_name_cat'], $row['id'], $row['rewrited_title']); // ici sa boucle et on fait correspondre le tableau extrait de la BDD avec des variables TPL $tpl->assign_block_vars('articles_items', array( 'U_LINK' => $link->absolute(), 'TITLE' => $row['title'], 'CONTENTS' => $row['contents'], 'PSEUDO' => $row['login'], 'DESCR' => $row['description'], 'URL_IMG' => $row['picture_url'] )); $i++; } // ici c'est pour "pousser" articles.tpl via # INCLUDE ARTICLES # dans le home.tpl $this->template->put('ARTICLES', $tpl); } /**************************************************** ************* FIN BUILD ARTICLES ******************** *****************************************************/ /**************************************************** ************* DEBUT BUILD NEWS ********************** *****************************************************/ private function build_news_view(SelectQueryResult $results) { // ici les résultats seront envoyé dans news.tpl $tpl = new FileTemplate('HomeCustom/feed_news.tpl'); $i = 0; foreach ($results as $row) { if ($i >= 5) //si plus de 3 on casse { break; } // si "rewrited_name_cat" est vide c'est que c'est la categorie racine (root) $row['rewrited_name_cat'] = !empty($row['id_category']) ? $row['rewrited_name_cat'] : 'root'; // je me prend pas la tête j'utilise le builder du module articles, comme ça je suis sure que le lien généré sera correcte. $link = NewsUrlBuilder::display_news($row['id_category'], $row['rewrited_name_cat'], $row['id'], $row['rewrited_name']); // ici sa boucle et on fait correspondre le tableau extrait de la BDD avec des variables TPL $tpl->assign_block_vars('news_items', array( 'U_LINK' => $link->absolute(), 'NAME' => $row['name'], 'CONTENTS' => $row['contents'], 'PSEUDO' => $row['login'], 'DESCR' => $row['short_contents'], 'URL_IMG' => $row['picture_url'] )); $i++; } // ici c'est pour "pousser" news.tpl via # INCLUDE NEWS # dans le home.tpl $this->template->put('feed_news', $tpl); } /**************************************************** ************* FIN BUILD NEWS ************************ *****************************************************/ } ?>
babsolune Membre non connecté
-
Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
-
Equipe Développement
Code PHP :
donc dans ton tpl start et end => news_items
$tpl->assign_block_vars('news_items'
Theswat Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Theswat
- Inscrit le : 10/09/2009
- Groupes :
babsolune :
HomeCustomHomePageExtensionPoint.class.php
Code PHP :
donc dans ton tpl start et end => news_items$tpl->assign_block_vars('news_items'
c'est changer mes toujour rien
Code TPL :
# START news_items # <!-- ITEM --> <div style="float:left;width:228px;text-align:center;"> # IF news_items.URL_IMG #<img src="{news_items.URL_IMG}" alt="" width="228" height="128" style="" /># ENDIF #</div> <div style="float:left;width:280px;padding-left:6px;"> <a href="{news_items.U_LINK}">{news_items.NAME}</a> <p class="smaller">{news_items.PSEUDO} - {news_items.DATE} - </p> <p class="smaller"><a href="{news_items.U_LINK}" class="small">{news_items.DESCR}</a></p> </div> <div class="spacer"></div> <!-- END ITEM --> # END news_items #
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
plutôt que de jouer à cache cache, pas plus simple d'envoyer tout le HomeCustom ?
Cordialement, janus57
Theswat Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Theswat
- Inscrit le : 10/09/2009
- Groupes :
janus57 :
Bonjour,
plutôt que de jouer à cache cache, pas plus simple d'envoyer tout le HomeCustom ?
Cordialement, janus57
plutôt que de jouer à cache cache, pas plus simple d'envoyer tout le HomeCustom ?
Cordialement, janus57
Bonsoir,
je vois pas pourquoi passer mon home complet alors que mon bute c'est d'afficher un flux rss mes avec description courte au lieux de la longue comme j'avais au début ?
car a part les 3 fichier que j'ai mis ici le home.tpl ne pose pas problème a mon avis puisque le reste de ma mise en page fonctionne
Édité par Theswat Le 10/03/2015 à 00h10
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
tout est expliqué sur le premier lien que babsolune à donné, il faut juste le lire en entier.
EDIT :
Citation :
Pour la description y a 2 choix, soir cela récupère la description en BDD, soit cela récupère le contenu qui se faire couper.
Cf : http://www.phpboost.com/forum/topic-15335-1+homecustom-last-articles-last-news-last-events.php
Après le reste c'est du PHP + mise en forme.
Cordialement, janus57
Édité par janus57 Le 10/03/2015 à 00h17
jpalbert92 Membre non connecté
Booster Fuzil
-
Booster Fuzil
- Voir le profil du membre jpalbert92
- Inscrit le : 27/04/2014
Je vais rejeté un coup d'œil sur le code que j'ai fourni peut être qu'il ne fonctionne pas ce qu'il m'étonnerait mais je te dirais ça demain où dans la semaine quoi qu'il arrive. Mais normalement copie le fichier.pho et le fichier.tpl que j'ai mis en partage ça devrait fonctionner je t'en dirais plus demain apres tout erare humanu es !
Jpa92, don't panik !
Because I need a signature... You were supposed to know ! 

Theswat Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre Theswat
- Inscrit le : 10/09/2009
- Groupes :
jpalbert92 Membre non connecté
Booster Fuzil
-
Booster Fuzil
- Voir le profil du membre jpalbert92
- Inscrit le : 27/04/2014
Alors en fait je viens de regarder et effectivement il y a un petit changement que j'avais fais déjà pour commencer :
- J'ai rajouter dans la requête SQL une limite de caractère (SUBSTRING) pour n'afficher que les 250 premier du module news et 128 du module articles (comme la configuration de base sur phpboost)
- Et effectivement j'ai publier la ressources un peu vite parce que j'ai pas fais attention je pensais que le LEFT JOIN équivalait à un WHERE donc sur la requête distribué j'ai mis un AND pour prendre en compte la date de création alors que pas du tout c'est un SQL PHP ça je n'avais jamais vu de LEFT JOIN auparavant.
Voilà la requête SQL qui est à mon avis la plus complète pour le module news :
Code SQL :
SELECT news.id, news.id_category, news.name, news.rewrited_name, news.picture_url, SUBSTRING(news.contents,1,250) AS contents, news.short_contents, news.creation_date, member.login, 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 WHERE (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
Et pour le module article :
Code SQL :
SELECT articles.id, articles.id_category, articles.title, articles.rewrited_title, articles.picture_url, SUBSTRING(articles.contents,1,128) AS contents, articles.description, articles.date_created, member.login, 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 WHERE (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
De ce fait je te propose ce fichier php que je vais mettre à jour dans l'autre sujet :
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() { /**************************************************** ************* DEBUT REQUETE SQL ARTICLES ************ *****************************************************/ $now = new Date(); $querier = PersistenceContext::get_querier(); $results_articles = $querier->select('SELECT articles.id, articles.id_category, articles.title, articles.rewrited_title, articles.picture_url, SUBSTRING(articles.contents,1,128) AS contents, articles.description, articles.date_created, member.login, 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 WHERE (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', array( 'timestamp_now' => $now->get_timestamp() )); /* SELECT = On selectionne tous les champs liés aux articles (id, id_category, title, rewrited_title, picture_url, contents, description, date_created) ATTENTION j'ai limité le contents à 128 caractères : SUBSTRING(articles.contents,1,128) FROM = Dans quelles entités sont issues les champs LEFT JOIN = On fait la jointure afin de dire que les clefs primaire sont identiques. Donc on regarde dans quel catégories est l'articles (cat.rewrited_name AS rewrited_name_cat | cat.rewrited_name <=> cat.id = articles.id_category) N'oublions pas la jointure sur la table de membre afin de récupérer les info sur le membre (member.login <=> member.user_id = articles.author_user_id) AND = On fait bien attention a récupérer un article qui a été publié avec autorisation ou différé après heure (on recup pas les articles en attente de contribution). 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 anciens en dernier) */ $this->build_articles_view($results_articles); /**************************************************** ************* FIN REQUETE SQL ARTICLES ************** *****************************************************/ /**************************************************** ************* DEBUT REQUETE SQL NEWS **************** *****************************************************/ $now = new Date(); $querier = PersistenceContext::get_querier(); $results_news = $querier->select('SELECT news.id, news.id_category, news.name, news.rewrited_name, news.picture_url, SUBSTRING(news.contents,1,250) AS contents, news.short_contents, news.creation_date, member.login, 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 WHERE (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', array( 'timestamp_now' => $now->get_timestamp() )); /* Même principe que précédemment */ $this->build_news_view($results_news); /**************************************************** ************* FIN REQUETE SQL NEWS ****************** *****************************************************/ } /**************************************************** ************* DEBUT BUILD ARTICLES ****************** *****************************************************/ private function build_articles_view(SelectQueryResult $results) { // ici les résultats seront envoyé dans articles.tpl $tpl = new FileTemplate('HomeCustom/articles.tpl'); $i = 0; foreach ($results as $row) { if ($i >= 1) //si plus de 3 on casse { break; } // si "rewrited_name_cat" est vide c'est que c'est la categorie racine (root) $row['rewrited_name_cat'] = !empty($row['id_category']) ? $row['rewrited_name_cat'] : 'root'; // je me prend pas la tête j'utilise le builder du module articles, comme ça je suis sure que le lien généré sera correct. $link = ArticlesUrlBuilder::display_article($row['id_category'], $row['rewrited_name_cat'], $row['id'], $row['rewrited_title']); // ici sa boucle et on fait correspondre le tableau extrait de la BDD avec des variables TPL $tpl->assign_block_vars('articles_items', array( 'U_LINK' => $link->absolute(), 'TITLE' => $row['title'], 'CONTENTS' => $row['contents'], 'PSEUDO' => $row['login'], 'DESCR' => $row['description'], 'URL_IMG' => $row['picture_url'] )); $i++; } // ici c'est pour "pousser" articles.tpl via # INCLUDE ARTICLES # dans le home.tpl $this->template->put('ARTICLES', $tpl); } /**************************************************** ************* FIN BUILD ARTICLES ******************** *****************************************************/ /**************************************************** ************* DEBUT BUILD NEWS ********************** *****************************************************/ private function build_news_view(SelectQueryResult $results) { // ici les résultats seront envoyé dans news.tpl $tpl = new FileTemplate('HomeCustom/news.tpl'); $i = 0; foreach ($results as $row) { if ($i >= 3) //si plus de 3 on casse { break; } // si "rewrited_name_cat" est vide c'est que c'est la categorie racine (root) $row['rewrited_name_cat'] = !empty($row['id_category']) ? $row['rewrited_name_cat'] : 'root'; // je me prend pas la tête j'utilise le builder du module articles, comme ça je suis sure que le lien généré sera correcte. $link = NewsUrlBuilder::display_news($row['id_category'], $row['rewrited_name_cat'], $row['id'], $row['rewrited_name']); // ici sa boucle et on fait correspondre le tableau extrait de la BDD avec des variables TPL $tpl->assign_block_vars('news_items', array( 'U_LINK' => $link->absolute(), 'NAME' => $row['name'], 'CONTENTS' => $row['contents'], 'PSEUDO' => $row['login'], 'DESCR' => $row['short_contents'], 'URL_IMG' => $row['picture_url'], 'DATE' => gmdate_format('date_format_short', $row['creation_date']), )); $i++; } // ici c'est pour "pousser" news.tpl via # INCLUDE NEWS # dans le home.tpl $this->template->put('NEWS', $tpl); } /**************************************************** ************* FIN BUILD NEWS ************************ *****************************************************/ } ?>
Et je viens de remarquer que pour le code TPL, pour utiliser le SHORTCONTENT ou le CONTENT (ce qui dépend s'il y a une description on affiche la description sinon on affiche le contenu limité à un certain nombre de caractères) j'ai rajouter un algorithme :
Code TPL :
# IF news_items.DESCR #{news_items.DESCR}# ELSE #{news_items.CONTENTS}...# ENDIF #
ce qui donne pour le fichier news.tpl :
Code TPL :
# START news_items # <hr> <div class=""> <img src="{PATH_TO_ROOT}{news_items.URL_IMG}" /> <a href="{news_items.U_LINK}"><p class="">{news_items.TITLE}</p></a> <p class=""># IF news_items.DESCR #{news_items.DESCR}# ELSE #{news_items.CONTENTS}...# ENDIF #</p> <p class=""> par : <span>{news_items.PSEUDO}</span></p> </div> # END news_items #
Je modifie tout ça dans l'autre sujet et après libre à toi de modifier les noms si tu le souhaite même si je n'en vois pas grande utilité lol !

En espérant t'avoir aidé ! Si tu as une question n'hésite pas !!
Jpa92, don't panik !
Because I need a signature... You were supposed to know ! 

Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie



