Jump to content

Recommended Posts

Bonjour à tous,

Je suis actuellement en train de rajouter une catégorie actu à ma boutique.

Un truc simple qui affiche le contenu des pages CMS d'une catégorie (id 6) CMS (dans mytheme/templates/cms/category.tpl) :

  {block name='cms_sub_pages'}
    {if $cms_pages}
      <div class="blog">
        {foreach from=$cms_pages item=cms_page}
          {if $cms_category.id==6}
            {$cms_page.content nofilter}
          {/if}
        {/foreach}
      </div>
    {/if}
  {/block}

 

Léger problème, impossible de trouver comment inverser l'ordre d'affichage des articles.

J'ai également tenté de le faire avec la fonctions getCMSPages, mais l'array est quasiment la même.

  {block name='cms_sub_pages'}
    {assign var=cmspages value=CMS::getCMSPages($language.id, 6, true, (int)Shop::getContextShopID())}
    <div class="blog">
    {foreach from=$cmspages item=cmspage}
      {$cmspage.content nofilter}
    {/foreach}
    </div>
  {/block}

Quand on regarde la fonction getCMSPages (/classes/CMS.php), on peut voir le code suivant :

class CMSCore extends ObjectModel
{
[...]
    public $position;
    [...]
    public static $definition = array(
    [...]
        'fields' => array(
        [...]
            'position' => array('type' => self::TYPE_INT),
            [...]
        ),
    );

    public static function getCMSPages($idLang = null, $idCmsCategory = null, $active = true, $idShop = null)
    {
        [...]
        $sql->orderBy('position');
        [...]
    }

Un quelconque moyen de modifier la position ?

Faut-il créer un override ? Si oui, je n'en ai jamais fait, si vous pouviez m'aiguiller, ça serait parfait :)

Merci d'avance et bonne journée.

Share this post


Link to post
Share on other sites
il y a 9 minutes, MrSoulPC915 a dit :

Un quelconque moyen de modifier la position ?

Oui, le drag'n drop ;)

image.thumb.png.01c7eecc10aa2aa9e626717d61b3a9c4.png

Share this post


Link to post
Share on other sites

Non, ça je sais (j'aurais du le préciser)... Dans le cas d'une page "blog", au début, ça va être simple, mais si on arrive a un gros nombre d'article, ça va être infernal.

D'où l'idée d'inverser le flux.

Share this post


Link to post
Share on other sites

Rapport entre BLOG et CMS svp ?

Share this post


Link to post
Share on other sites
{assign var=smc value=$cmspages|array_reverse:1}

{foreach from=$smc item=cmspage}

 

  • Thanks 1

Share this post


Link to post
Share on other sites
Posted (edited)

Pour votre override, si ces pages "blog" sont dans une catégorie cms particulière faites votre override comme suit:

 

class CMS extends CMSCore {

/** order blog pages by date **/

public static function getCMSPages($idLang = null, $idCmsCategory = null, $active = true, $idShop = null) {

[...]

if($idCmsCategory == 6) // exemple je ne connais pas l'id de la catégorie^^

      $sql->orderBy('date_add DESC');

ou

     $sql->orderBy('position DESC');

else

     $sql->orderBy('position');

[...]

}

}

Enregistrez-le dans /overrides/class/CMS.php

et supprimez le fichier /cache/class_index.php

Edited by Eolia (see edit history)

Share this post


Link to post
Share on other sites
5 minutes ago, doekia said:

{assign var=smc value=$cmspages|array_reverse:1}

{foreach from=$smc item=cmspage}

 

Super, merci Doekia, c'est exactement le modifier ce que je cherchais !

Plus besoin d'override du coup !

        {foreach from=$cms_pages|array_reverse item=cms_page}
          {if $cms_category.id==6}
            {$cms_page.content nofilter}
          {/if}
        {/foreach}

Je l'ai directement mis sur le foreach, pour plus de simplicité (il semble même fonctionner sans le :1).

$sql->orderBy('date_add DESC');

Eolia> Il n'y a pas de date d'ajout sur les pages CMS...?

Share this post


Link to post
Share on other sites

Exact, désolé j'étais sur une boutique de test qui en a.

L'override permettait de filtrer sur la catégorie surtout sans modifier les autres positions.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More