HomeCustom [Réglé]
NicoLas Membre non connecté
Booster Minigun
- Booster Minigun
- Voir le profil du membre NicoLas
- Inscrit le : 17/02/2018
- Site internet
- Groupes :
Reprise du message précédent
Ca marche sauf pour quelques balises{news_items.U_ARTICLE} & {news_items.TITLE} pour le moment, mais je continu de chercher
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
Du coup ce n'est pas {
NicoLas Membre non connecté
Booster Minigun
- Booster Minigun
- Voir le profil du membre NicoLas
- Inscrit le : 17/02/2018
- Site internet
- Groupes :
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
NicoLas Membre non connecté
Booster Minigun
- Booster Minigun
- Voir le profil du membre NicoLas
- Inscrit le : 17/02/2018
- Site internet
- Groupes :
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
NicoLas Membre non connecté
Booster Minigun
- Booster Minigun
- Voir le profil du membre NicoLas
- Inscrit le : 17/02/2018
- Site internet
- Groupes :
Myster :Si tu as besoin hésite pas
Je ne veux pas abusé Mais je suis le module Livre d'or
J'essaye toujours avant de demander
Le plus dur, c'est quand on connait pas le PHP & MySQL
Édité par NicoLas Le 11/07/2019 à 20h19
Myster Membre non connecté
Booster Missile
- Booster Missile
- Voir le profil du membre Myster
- Inscrit le : 04/10/2010
- Groupes :
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 = ThemesManager::get_theme(AppContext::get_current_user()->get_theme())->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()); } 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 guestbook_results() { $querier = PersistenceContext::get_querier(); $results = $querier->select('SELECT guestbook.*, member.* FROM ' . PREFIX . 'guestbook guestbook LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = guestbook.user_id ORDER BY guestbook.timestamp DESC LIMIT 3'); 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_array_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_guestbook_view(SelectQueryResult $results) { // ici les résultats seront envoyés dans news.tpl // results send in news.tpl $tpl = new FileTemplate('HomeCustom/guestbook.tpl'); while ($row = $results->fetch()) { $guestbook = new Guestbook(); $guestbook->set_properties($row); $tpl->assign_block_vars('guestbook_items', $guestbook->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('GUESTBOOK', $tpl); } } ?>
Ca devrait le faire, fait une sauvegarde au cas ou
Puis ensuite tu créer le fichier guestbook.tpl dans le dossier template du module homecustom. et tu mets les variables tout ça quoi comme pour news et là c'est guestbook_items du coup
Edit: Par contre là on affiche les trois derniers messages du livre d'or, si tu veux en afficher plus change LIMIT 3 par LIMIT 20 par exemple, dans la fonction private function guestbook_results()
Édité par Myster Le 11/07/2019 à 21h19
NicoLas Membre non connecté
Booster Minigun
- Booster Minigun
- Voir le profil du membre NicoLas
- Inscrit le : 17/02/2018
- Site internet
- Groupes :
Caché :
Code TEXT :
<?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 = ThemesManager::get_theme(AppContext::get_current_user()->get_theme())->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_guestbook_view($this->guestbook_results()); } private function guestbook_results() { $now = new Date(); $querier = PersistenceContext::get_querier(); $results = $querier->select('SELECT guestbook.*, member.* FROM ' . PREFIX . 'guestbook guestbook LEFT JOIN ' . DB_TABLE_MEMBER . ' member ON member.user_id = guestbook.user_id ORDER BY guestbook.timestamp DESC LIMIT 4', array( 'user_id' => AppContext::get_current_user()->get_id(), 'timestamp_now' => $now->get_timestamp() )); return $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 4', 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 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_array_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_guestbook_view(SelectQueryResult $results) { // ici les résultats seront envoyés dans guestbook.tpl // results send in guestbook.tpl $tpl = new FileTemplate('HomeCustom/questbook.tpl'); while ($row = $results->fetch()) { $news = new News(); $news->set_properties($row); $tpl->assign_block_vars('guestbook_items', $news->get_array_tpl_vars()); } // ici c'est pour "pousser" guestbook.tpl via # INCLUDE GUESTBOOK # dans le home.tpl // "push" guestbook.tpl with # INCLUDE GUESTBOOK # in home.tpl $this->template->put('GUESTBOOK', $tpl); } } ?>
J'étais loin de ton résultat haha
Merci de ton aide en tout cas
babsolune Membre non connecté
Administrateur
- Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
parce que pour News elles sont différentes de Articles.
Si tu appelles les variables déjà définie dans un module (
$news->get_array_tpl_vars()) il faut utiliser la nomenclature des variables définie dans la Class du module .
Ici c'est dans news/services/News.class.php, tu auras donc news_item.U_LINK et news_item.NAME
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie