Как добавить больше позиций под иконки в модуле Ninja Simple Icons? (вопрос простой)

Тема в разделе "Модернизация расширений", создана пользователем deniro21, 18.06.2010.

  1. deniro21
    Offline

    deniro21 Пользователь

    Регистрация:
    23.11.2009
    Сообщения:
    107
    Симпатии:
    4
    Пол:
    Мужской
    Здравствуйте. Пользуюсь модулем Ninja Simple Icons (во вложении). Он представляет из себя меню в виде иконок. Из коробки он позволяет создавать только 20 иконок, но мне требуется добавить еще несколько позиций. Но как это сделать, я не понимаю. Сам модуль состоит из трех файлов: PHP,CSS, и XML. Вроде бы там все просто и понятно, но ума не приложу, как туда добавить позиций. Вот код PHP скрипта:
    Код (html):
    1. <?php
    2.  
    3.  
    4. // This is required by all extentions
    5. defined('_JEXEC') or die('Direct Access to this location is not allowed.');
    6.  
    7. // Lets include all the params
    8.  $incCSS = $params->get( 'incCSS' );
    9.  $moduleclass_sfx = $params->get( 'moduleclass_sfx' );
    10.  $icon_orientation = $params->get( 'icon_orientation' );
    11.  $icon_container_margin_top = $params->get( 'icon_container_margin_top' );
    12.  $icon_titles = $params->get( 'icon_titles' );                            
    13.  $icon_title_color = $params->get( 'icon_title_color' );
    14.  $icon_title_fontsize = $params->get( 'icon_title_fontsize' );
    15.  $icon_height = $params->get( 'icon_height' );
    16.  $icon_width = $params->get( 'icon_width' );
    17.  
    18.  
    19.  // we are going to store some params in an array
    20.  // this will make it alot cleaner and easier to use later on
    21.  // The params in the array are = 0-icon_status 1-icon_img, 2-icon_title, 3-icon_link, 4-icon_alt
    22.   $iconParams = array (
    23.         array($params->get('icon1_status'),$params->get('icon1_img'),$params->get('icon1_title'),$params->get('icon1_link'),$params->get('icon1_alt'),$params->get('icon1_target')),
    24.         array($params->get('icon2_status'),$params->get('icon2_img'),$params->get('icon2_title'),$params->get('icon2_link'),$params->get('icon2_alt'),$params->get('icon2_target')),
    25.         array($params->get('icon3_status'),$params->get('icon3_img'),$params->get('icon3_title'),$params->get('icon3_link'),$params->get('icon3_alt'),$params->get('icon3_target')),
    26.         array($params->get('icon4_status'),$params->get('icon4_img'),$params->get('icon4_title'),$params->get('icon4_link'),$params->get('icon4_alt'),$params->get('icon4_target')),
    27.         array($params->get('icon5_status'),$params->get('icon5_img'),$params->get('icon5_title'),$params->get('icon5_link'),$params->get('icon5_alt'),$params->get('icon5_target')),
    28.         array($params->get('icon6_status'),$params->get('icon6_img'),$params->get('icon6_title'),$params->get('icon6_link'),$params->get('icon6_alt'),$params->get('icon6_target')),
    29.         array($params->get('icon7_status'),$params->get('icon7_img'),$params->get('icon7_title'),$params->get('icon7_link'),$params->get('icon7_alt'),$params->get('icon7_target')),
    30.         array($params->get('icon8_status'),$params->get('icon8_img'),$params->get('icon8_title'),$params->get('icon8_link'),$params->get('icon8_alt'),$params->get('icon8_target')),
    31.         array($params->get('icon9_status'),$params->get('icon9_img'),$params->get('icon9_title'),$params->get('icon9_link'),$params->get('icon9_alt'),$params->get('icon9_target')),
    32.         array($params->get('icon10_status'),$params->get('icon10_img'),$params->get('icon10_title'),$params->get('icon10_link'),$params->get('icon10_alt'),$params->get('icon10_target')),
    33.         array($params->get('icon11_status'),$params->get('icon11_img'),$params->get('icon11_title'),$params->get('icon11_link'),$params->get('icon11_alt'),$params->get('icon11_target')),
    34.         array($params->get('icon12_status'),$params->get('icon12_img'),$params->get('icon12_title'),$params->get('icon12_link'),$params->get('icon12_alt'),$params->get('icon12_target')),
    35.         array($params->get('icon13_status'),$params->get('icon13_img'),$params->get('icon13_title'),$params->get('icon13_link'),$params->get('icon13_alt'),$params->get('icon13_target')),
    36.         array($params->get('icon14_status'),$params->get('icon14_img'),$params->get('icon14_title'),$params->get('icon14_link'),$params->get('icon14_alt'),$params->get('icon14_target')),
    37.         array($params->get('icon15_status'),$params->get('icon15_img'),$params->get('icon15_title'),$params->get('icon15_link'),$params->get('icon15_alt'),$params->get('icon15_target')),
    38.         array($params->get('icon16_status'),$params->get('icon16_img'),$params->get('icon16_title'),$params->get('icon16_link'),$params->get('icon16_alt'),$params->get('icon16_target')),
    39.         array($params->get('icon17_status'),$params->get('icon17_img'),$params->get('icon17_title'),$params->get('icon17_link'),$params->get('icon17_alt'),$params->get('icon17_target')),
    40.         array($params->get('icon18_status'),$params->get('icon18_img'),$params->get('icon18_title'),$params->get('icon18_link'),$params->get('icon18_alt'),$params->get('icon18_target')),
    41.         array($params->get('icon19_status'),$params->get('icon19_img'),$params->get('icon19_title'),$params->get('icon19_link'),$params->get('icon19_alt'),$params->get('icon19_target')),
    42.         array($params->get('icon20_status'),$params->get('icon20_img'),$params->get('icon20_title'),$params->get('icon20_link'),$params->get('icon20_alt'),$params->get('icon20_target'))
    43.     );
    44.  
    45. // set up all the globals
    46.  $user =& JFactory::getUser();
    47.  $acl = &JFactory::getACL();
    48.     $document =& JFactory::getDocument();
    49.  
    50.     $headerStyle ='';
    51.  
    52.     $siteLoc = JURI::base().'modules/mod_ninja_simple_icons/assets';
    53.  
    54.  // Create a variable to store the visible status of the menu
    55.  // Set the variable to 0 to mean the menu is not displayed. Then modifiy it if it is to be displayed.
    56.  $menuVisibleCount = 0;
    57.  // Loop through the list
    58.  // We say less than 8 and start at 0 because that is how php handles arrays, the first element has an index of 0
    59.  // We have 10 elements but one is in index 0 which means we stop the loop when the index is above 9.
    60.  // Also this menu visible count variable is used to tell us how many items we have so we can size the invisible box accordingly
    61.  for ($i=0; $i<10; $i++){
    62.      // Menu params[i][0] = the first element (menu status) in the array record which matches the index i
    63.      // Check that our status == 1 (visible) or == 2 (registered only) and we are not a guest. || = OR , && = AND
    64.      // Also, for all the ones that are status 2 and we are registered, change them to status 1
    65.      // This will save us having to do multiple tests later on. We can just test for  $menu_params[i][0] == 1 only
    66.         // Following line changed by Juergen Buchberger
    67.         if (($iconParams[$i][0] == 1) || (($iconParams[$i][0] == 2)&&($user->get('id')))){
    68.             $menuVisibleCount ++;
    69.             $iconParams[$i][0] = 1;
    70.             }  
    71.     }  
    72.  
    73.  switch ($icon_orientation) {
    74.  case '0':
    75.     $orien = 'horiz';
    76.        $menuwidth = $icon_width + $icon_width; // insertion of menuwidth to avoid error notice by Juergen Buchberger
    77.       break;
    78.     case '1':
    79.       $orien = 'vert';
    80.       break;
    81.     case '2':
    82.      $orien = 'vert-l';
    83.      break;
    84.     case '3':
    85.      $orien = 'vert-r';
    86.      break;
    87.     }  
    88.    
    89.     //Check if we have already loaded our css or not, and load it if needed and requested
    90.         $mainStyleLoaded = false;
    91.        
    92.         if ($incCSS)    {
    93.             foreach($document->_styleSheets as $key => $styleSheet) {
    94.                 if(stristr($key, 'nsimple_icons.css') !== false)    {
    95.                     $mainStyleLoaded = true;               
    96.                 }
    97.             }
    98.  
    99.         //link in the CSS if it hasn't been loaded yet
    100.             if ($mainStyleLoaded === false) {          
    101.                 $cssFile = $siteLoc.'/style.css';
    102.                 $document->addStyleSheet($cssFile);
    103.        
    104.                
    105.                 $headerStyle .= '.nsi-container div {margin-top: '.$icon_container_margin_top.'}';
    106.                
    107.                 if ($icon_titles == 0) {
    108.                     if (!empty($icon_title_color)) {
    109.                         $headerStyle .='.nsi-container span {color:'.$icon_title_color.'}';
    110.                     }
    111.                     if (!empty($icon_title_fontsize)) {
    112.                         $headerStyle .='.nsi-container span {font-size:'.$icon_title_fontsize.'}';
    113.                     }
    114.                 }
    115.         if ($orien == 'vert-l' || $orien == 'vert-r') {
    116.            $headerStyle .='.nsi-icon'.$orien.' span {line-height:'.$icon_height.'px}';
    117.        }
    118.        
    119.                 $document->addStyleDeclaration($headerStyle);
    120.             } // if ($mainStyleLoaded === false)
    121.         }//if ($incCSS)
    122. ?>
    123. <div class="nsi-container nsi-icon<?php echo $orien; ?>">
    124.    <div>
    125.     <ul>                
    126.        <?php /* loop through our menu items and display the ones we need to display */
    127.          for ($i=0; $i<20; $i++){
    128.              // icon params[i][0] = the first element (menu status) in the array record which matches the index i
    129.              // Check that our status == 1 (visible)
    130.              if ($iconParams[$i][0] == 1) {
    131.        ?>
    132.                <li>
    133.                   <a href="<?php echo $iconParams[$i][3]; ?>" target="<?php echo $iconParams[$i][5]; ?>">
    134.                   <img src="<?php echo $siteLoc.'/images/'.$iconParams[$i][1]; ?>" title="<?php echo $iconParams[$i][2]; ?>" alt="<?php echo $iconParams[$i][4]; ?>" height="<?php echo $icon_height; ?>" width="<?php echo $icon_width; ?>" />
    135.                   <?php if ($orien == 'horiz' || $orien == 'vert') : ?><br /><?php endif; ?>
    136.                   <?php if ($icon_titles == 0) { ?>
    137.                     <span><?php echo $iconParams[$i][2] ?></span>
    138.                    <?php } ?>
    139.                   </a>
    140.                 </li>
    141.                
    142.          <?php   }
    143.            }?>
    144.     </ul>
    145.   </div>
    146. </div>

    Помогите пожалуйста. Думаю, для людей знающих PHP ответ очевиден. Заранее благодарен.

    P.S. Пробовал вставить код в PHP теги, но у меня топик расперло и разорвало (вправо растянуло), поэтому вставил, как HTML. Если неудобно читать, прошу модераторов отредактировать.
     

    Вложения:

    Последнее редактирование: 18.06.2010
  2.  
  3. Offline

    dron79 Недавно здесь

    Регистрация:
    17.05.2010
    Сообщения:
    19
    Симпатии:
    3
    Пол:
    Мужской
    в файле mod_ninja_simple_icons.php необходимо добавить после 356 строки, необходимое количество фрагментов после этого, с последующим увеличением нумерации (21, 22, 23 и т.д.) для всех встречающихся параметров в во фрагменте:

    Код (html):
    1. <param name="@spacer" type="spacer" default="" label="Icon 20 Params" description="" />
    2.         <param name="icon20_status" type="radio" default="0" label="icon 20 Status" description="Registered+ this will only show the menu item to registered users and above.">
    3.             <option value="0">Disable</option>
    4.             <option value="1">Enable</option>
    5.             <option value="2">Only Registered+</option>
    6.         </param>
    7.         <param name="icon20_img" type="imagelist" directory="/modules/mod_ninja_simple_icons/assets/images" default="image20.png" label="Icon 20 Image" description="choose the icon you want to use" />
    8.         <param name="icon20_target" type="list" default="_self" label="Icon 20 Target" description="Choose whether the icon click will open a new window/tab or not">
    9.             <option value="_self">_self (same window)</option>
    10.             <option value="_blank">_blank (new window)</option>
    11.         </param>
    12.         <param name="icon20_title" type="text" default="Icon 20" label="Icon 20 Title" description="type in the title of your icon" />
    13.         <param name="icon20_link" type="text" default="http://ninjaforge.com" label="Icon 20 URL" description="enter the desired URL" />
    14.         <param name="icon20_alt" type="text" default="Icon 20" label="Icon 20 Alt" description="this is important for validation" />       
    15.   </params>

    Далее в файле mod_ninja_simple_icons.php в 100 строке добавляем запятую, и необходимое количество строк формата
    Код (PHP):
    1. array($params->get('icon21_status'),$params->get('icon21_img'),$params->get('icon21_title'),
    2. $params->get('icon21_link'),$params->get('icon21_alt'),$params->get('icon21_target')),
    3. array($params->get('icon22_status'),$params->get('icon22_img'),$params->get('icon22_title'),
    4. $params->get('icon22_link'),$params->get('icon22_alt'),$params->get('icon22_target')),
    5. array($params->get('icon23_status'),$params->get('icon23_img'),$params->get('icon23_title'),
    6. $params->get('icon23_link'),$params->get('icon23_alt'),$params->get('icon23_target'))

    вот в принципе и все, пакуете файлы в zip архив и его устанавливаете вместо оригинала.
     
    Последнее редактирование: 19.06.2010
    deniro21 нравится это.
  4. deniro21
    Offline

    deniro21 Пользователь

    Регистрация:
    23.11.2009
    Сообщения:
    107
    Симпатии:
    4
    Пол:
    Мужской
    Ок, спасибо. Очень помогло. Только с небольшими поправками. Первый файл имеется ввиду mod_ninja_simple_icons.XML (а не PHP). А также, после всех проделанных действий в файле mod_ninja_simple_icons.php необходимо будет найти строчку
    Код (PHP):
    1. for ($i=0; $i<20; $i++){

    И исправить 20, на нужное нам число (количество иконок). Т.е. получиться например:
    Код (PHP):
    1. for ($i=0; $i<32; $i++){

    Без последнего изменения поля под иконки появятся в админке, но во фронтенде добавленные пункты меню отображаться не будут. Еще раз спасибо за решение:) Плюсую.
     
  5. Offline

    alohaspirit Недавно здесь

    Регистрация:
    26.09.2013
    Сообщения:
    1
    Симпатии:
    0
    Пол:
    Мужской
    Добрый день.
    Надеюсь без нового топика я смогу найти ответ на нижеследующий вопрос:

    Ninja Simple Icon Menu меня очень порадовала, но для себя нашел один существенный недостаток - текст вводимый в поле - Icon 1(2,3,4...20) Title выводится в одну строку. В итоге получается, что текст выходит существенно за границы изображения.
    Если к каждой из четырех иконок добавить заголовок из двух слов, то получается полный коллапс.

    Расскажите пожалуйста, как сделать, чтобы название раздела выводилось в две строки...
    Заранее большое Вам спасибо.
     

    Вложения:

    • 1.JPG
      1.JPG
      Размер файла:
      17.9 КБ
      Просмотров:
      2

Поделиться этой страницей

Загрузка...