Fork me on GitHub

Rapport de message :*
 

Re: xmnews - suggestions

Titre du sujet : Re: xmnews - suggestions
par JJDai sur 08/02/2020 17:20:01

Bonjour,
La réponse pour le dernier point ainsi que pour le poids ici :
Le Conseil des Sages de SGDB

Le premier menu "Qui somme-nous ?"
J'utilise le module pour ajouter des items dans ce menu, et je souhaite qu'ils apparaisse dans un ordre précis.
Dans le theme xbootstrap j'ai remplacer les itms du menu horizontal manuel par le résultat d'un bloc:

<{block id=96 options=""}>

Ce block je l'ai ajouté dans le module en faisant une sélection sur la catégorie, et ordonné par le numéro qui préfixe le titre que je supprime à l'affichage.
Ce bloc génère tout le code html nécessaire au menuet du coup il est automatique quand j'ajoute ou supprime des articles dans cette catégorie.

Code du block:
[code]use XmfModuleHelper;
function block_xmnews_menu_xbootstrap_show($options) {
    include __DIR__ . '
/../include/common.php';
    include_once __DIR__ . '
/../class/utility.php';
    
  $moduleDirName = '
xmnews';

  $options[0] = 1; // temporaire pourfaire les tests

    $helper = Helper::getHelper('
xmnews');
    $helper->loadLanguage('
main');
    
    // Get Permission to view abstract
    $viewPermissionCat = XmnewsUtility::getPermissionCat('
xmnews_viewabstract');
    
    $permNewsHelper = new HelperPermission('
xmnews');

    $block = array();

    $criteria = new CriteriaCompo();
    //$criteria->add(new Criteria('
news_cid', $news_cid));
    $criteria->setSort('
news_title');

// $tr = print_r($options, true);
// echo "<hr><pre>{$tr}</pre><hr>";

    $category_ids = explode('
,', $options[0]);
    if (!in_array(0, $category_ids)) {
        $criteria->add(new Criteria('
category_id', '(' . $options[0] . ')', 'IN'));
    }
    $criteria->setLimit($options[1]);
    if (!empty($viewPermissionCat)) {
        $criteria->add(new Criteria('
news_cid', '(' . implode(',', $viewPermissionCat) . ')', 'IN'));
    }
    $newsHandler->table_link = $newsHandler->db->prefix("xmnews_category");
    $newsHandler->field_link = "category_id";
    $newsHandler->field_object = "news_cid";
    $news_arr = $newsHandler->getByLink($criteria);



    if (count($news_arr) > 0 && !empty($viewPermissionCat)) {
    $url = XOOPS_URL . "/modules/{$moduleDirName}/article.php?news_id=";
        foreach (array_keys($news_arr) as $i) {
      $news_id = $news_arr[$i]->getVar('
news_id');
      $title = $news_arr[$i]->getVar('
news_title');
      $h = strpos($title, '
-');
      if (!($h === false)) $title = substr($title,$h+1);

      $MenuItems[$news_id] = array('
id'  => $news_id,
                              '
lib' => $title,
                              '
url' => $url . $news_id);
        }
    }
// $tr = print_r($MenuItems, true);
// echo "<hr><pre>{$tr}</pre><hr>";

  $block['
MenuItems'] = $MenuItems;

  $block['
module']['url'] = XOOPS_URL . "/modules/" . $moduleDirName ;
  $block['
module']['lib'] = _MB_XMNEWS_MENU_XBOOTSTRAP;
  $block['
module']['nbMainMenu'] = 0;

// $tr = print_r($block, true);
// echo "<hr><pre>{$tr}</pre><hr>";

    return $block;
}

Dans le bloc je me donne la possibilité d'ajouter des items qui ne pointeront pas sur les articles mais ailleurs.
Ils seont ans lindex "mainItem" du tableau blocks retourné
Je ne l'ai pas fais pour ce bloc mais pour le menu "planning" par exemple.

Le template associé
<li class="dropdown"><a data-toggle="dropdown" class="dropdown-toggle" href="javascript:;"><{$block.module.lib}><class="caret"></b></a>
      <
ul class="dropdown-menu">

<{if 
$block.module.nbMainMenu 0}>
        <{foreach 
from=$block.main key=kItem item=mainItem}>
            <{if !empty(
$mainItem.submenu) }>
              <
li class="dropdown-submenu">
                <
a href="<{$mainItem.url}>"><{$mainItem.lib}></a>
                <
ul class="dropdown-menu">
                  <{foreach 
from=$mainItem.submenu key=kSubmenu item=subMenu}>
                    <
li><a href="<{$subMenu.url}>"><{$subMenu.lib}></a></li>
                  <{/foreach}>
                </
ul>
              </
li>

            <{else}>
              <
li><a href="<{$mainItem.url}>"><{$mainItem.lib}></a></li>
            <{/if}>
        <{/foreach}>

        <
li><hr></li>
<{/if}>

        <{foreach 
from=$block.MenuItems key=k item=mainItem}>

            <{if !empty(
$mainItem.submenu) }>
              <
li class="dropdown-submenu">
                <
a href="<{$mainItem.url}>"><{$mainItem.lib}></a>
                <
ul class="dropdown-menu">
                  <{foreach 
from=$mainItem.submenu key=kSubmenu item=subMenu}>
                    <
li><a href="<{$subMenu.url}>"><{$subMenu.lib}></a></li>
                  <{/foreach}>
                </
ul>
              </
li>

            <{else}>
              <
li><a href="<{$mainItem.url}>"><{$mainItem.lib}></a></li>
            <{/if}>


        <{/foreach}>

      </
ul>
  </
li>



Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

32 Personne(s) en ligne (26 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 32 | Plus ...