Easy-Design.Net forum




Aide générale [Réglé] HomeCustom, plusieurs requête sur les news

navalex Membre non connecté

EDN Intéressé(e)

Rang

Avatar

Inscrit le : 11/05/2012 à 19h12

Messages: 58

Le 06/01/2015 à 18h29
Bonjour à tous ! :)

Me voilà de retour sur le forum ! ;)
Je suis en train de créer un site en utilisant PHPBoost 4.1, et j'ai décidé de me baser sur le framework Bootstrap, et je vous demanderais de garder votre avis pour vous car beaucoup de monde trouve ce framework trop classique, mais bien utilisé, il peut donner un site très beau et facilement modifiable.

A ce niveau tout ce passe bien, sauf que je me lance maintenant dans la création d'une page d'accueil avec HomeCustom. Je n'es jamais vraiment étudié les modules de PHPBoost, mise à part les templates. ^^

Mon but:
Créer un caroussel, qui affichera les 3 dernières news de la catégorie "important" (id: 2)
Et en dessous afficher les 4 dernières news de tous les site (importantes et pas importantes)
Sauf que ma requête ne marche pas...
J'ai essayer de modifier une des variables qui est ensuite envoyé dans la template, et si je met du texte directement ça marche. C'est donc bien la requête qui ne récupère rien..

Je vous demande donc de l'aide.. :P

Voici mes fichiers:

HomeCustomHomePageExtensionPoint.class.php
Code PHP :
<?php
/*##################################################
 *                     HomeCustomHomePageExtensionPoint.class.php
 *                            -------------------
 *   begin                : August 25, 2012
 *   copyright            : (C) 2012 Kevin MASSY
 *   email                : [email protected]
 *
 *
 ###################################################
 *
 * 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');
 
        $this->build_view_item();
 
        $this->build_view_news();
 
        return $this->template;
    }
 
    //#############################################
    //# Séléction des 3 dernières news importante #
    //#############################################
    private function build_view_item()
    {
        $id_cats_item = array('2');
 
        $querier_item = PersistenceContext::get_querier();
        $results_item = $querier_item->select('SELECT cat.id, cat.rewrited_name, news.id, news.rewrited_name, news.picture_url, news.name, news.short_contents FROM ' . PREFIX . 'news news 
            LEFT JOIN ' . PREFIX . 'news_cats cat 
            ON cat.id = news.id_category 
            WHERE news.id_category IN (' . implode(', ', $id_cats_item) . ') 
            ORDER BY news.creation_date DESC');
        $this->build_modules_view_item($results_item);
    }
 
    private function build_modules_view_item(SelectQueryResult $results_item)
    {
        $tpl_item = new FileTemplate('HomeCustom/items.tpl');
 
        foreach ($results_item as $row_item)
        {
            if ($i_item >= 3)
            {
                break; 
            }
 
            if($i_item==1){$class_item="item active";}
            else{$class_item="item";}
 
            $link_item = new Url('/news/' . $row_item['cat.id'] . '-' . $row_item['cat.rewrited_name'] . '/' . $row_item['news.id'] . '-' . $row_item['news.rewrited_name']);
 
            $tpl_item->assign_block_vars('item', array(
                'U_LINK' => $link_item->absolute(),
                'U_IMG' => Url::to_absolute($row_item['news.picture_url']),
                'TITLE' => $row_item['news.name'],
                'SHORT_CONTENT' => $row_item['news.short_contents'],
                'CLASS' => $item_class
            ));
            $i_item++;
        }
 
        $this->template->put('ITEMS', $tpl_item);
    }
 
    //##################################
    //# Selection des 4 dernières news #
    //##################################
    private function build_view_news()
    {
        $id_cats_news = array('1', '2');
 
        $querier_news = PersistenceContext::get_querier();
        $results_news = $querier_news->select('SELECT cat.id, cat.rewrited_name, news.id, news.rewrited_name, news.picture_url, news.name, news.short_contents FROM ' . PREFIX . 'news news 
            LEFT JOIN ' . PREFIX . 'news_cats cat 
            ON cat.id = news.id_category 
            WHERE news.id_category IN (' . implode(', ', $id_cats_news) . ') 
            ORDER BY news.creation_date DESC');
        $this->build_modules_view_news($results_news);
    }
 
    private function build_modules_view_news(SelectQueryResult $results_news)
    {
        $tpl_news = new FileTemplate('HomeCustom/news.tpl');
 
        foreach ($results_news as $row_news)
        {
            if ($i_news >= 4)
            {
                break; 
            }
 
            $link_news = new Url('/news/' . $row_news['cat.id'] . '-' . $row_news['cat.rewrited_name'] . '/' . $row_news['news.id'] . '-' . $row_news['news.rewrited_name']);
 
            $tpl_news->assign_block_vars('news', array(
                'U_LINK' => $link_news->absolute(),
                'U_IMG' => Url::to_absolute($row_news['news.picture_url']),
                'TITLE' => $row_news['news.name'],
                'SHORT_CONTENT' => $row_news['news.short_contents']
            ));
            $i_news++;
        }
 
        $this->template->put('NEWS', $tpl_news);
    }
 
}
?>


home.tpl:
Code TPL :
<div class="panel panel-info">
  <div class="panel-heading">
    <h1 class="panel-title">News importantes</h1>
  </div>
 
  <div id="news_slider" class="carousel slide" data-ride="carousel">
    <!-- Indicators -->
    <ol class="carousel-indicators">
      <li data-target="#news_slider" data-slide-to="0" class="active"></li>
      <li data-target="#news_slider" data-slide-to="1"></li>
      <li data-target="#news_slider" data-slide-to="2"></li>
    </ol>
 
    <!-- Wrapper for slides -->
    <div class="carousel-inner" role="listbox">
      # INCLUDE  ITEMS #
    </div>
 
    <!-- Controls -->
    <a class="left carousel-control" href="#news_slider" role="button" data-slide="prev">
      <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
 
    <a class="right carousel-control" href="#news_slider" role="button" data-slide="next">
      <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
  </div>
</div>
 
<div class="row">
  <div class="col-sm-4">
    <div class="panel panel-default">
      <div class="panel-heading">
        <h1 class="panel-title">Twitter</h1>
      </div>
 
      <div class="panel-body">
        <a class="twitter-timeline"  href="https://twitter.com/ArkemisMG" data-widget-id="546351639968636928" data-chrome="noheader nofooter noscrollbar noborders transparent">Tweets de @ArkemisMG</a>
        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
      </div>
    </div>
  </div>
 
  <div class="col-sm-4">
    <div class="panel panel-default">
      <div class="panel-heading">
        <h1 class="panel-title">Rejoins Nous !</h1>
      </div>
 
      <div class="panel-body">
        <p align="center">
          Rejoins nous sur le serveur à l'adresse
          <br /><br />
          <a><strong>mc.arkemis.fr</strong></a>
        </p>
      </div>
    </div>
  </div>
 
  <div class="col-sm-4">
    <div class="panel panel-default">
      <div class="panel-heading">
        <h1 class="panel-title">Derniers Posts</h1>
      </div>
 
      <div class="panel-body">
        Contenu
      </div>
    </div>
  </div>
</div>
 
<div class="row">
  # INCLUDE  NEWS #
</div>


news.tpl:
Code TPL :
# START news #
<div class="col-md-6">
    <div class="thumbnail">
        <a href="{news.U_LINK}" class="thumbnail">
            <img src="{news.U_IMG}" title="{news.TITLE}" alt="{news.TITLE}" />
        </a>
 
        <div class="caption">
            <h3>{news.TITLE}</h3>
            <p>{news.SHORT_CONTENT}</p>
            <p><a href="{news.U_LINK}" class="btn btn-primary" role="button">Voir toute la news</a></p>
        </div>
    </div>
</div>
# END news #


items.tpl:
Code TPL :
# START item #
<div class="item active">
    <a href="{item.U_LINK}">
        <img src="{item.U_IMG}" title="{item.TITLE}" alt="{item.TITLE}" />
    </a>
 
    <div class="carousel-caption">
        <h3>{item.TITLE}</h3>
        <p>{item.SHORT_CONTENT} <a href="{item.U_LINK}">Voir plus...</a></p>
    </div>
</div>
# END item #


Cordialement, Navalex.
navalex Membre non connecté

EDN Intéressé(e)

Rang

Avatar

Inscrit le : 11/05/2012 à 19h12

Messages: 58

Le 06/01/2015 à 19h45
Autant pour moi, je viens de trouver la solution:
Code SQL :
SELECT news.id, news.id_category, news.name, news.rewrited_name, news.short_contents, news.creation_date, news.picture_url, cat.rewrited_name AS rewrited_name_cat

Et on appel ensuite cat.rewrited_name par rewrited_name_cat dans la variable. ;)
Swan Membre non connecté

Administrateur

Rang

Avatar

Inscrit le : 01/08/2009 à 22h53

Messages: 8431

Le 06/01/2015 à 22h57
Bonsoir , Comme quoi ;)


swan_signature

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