Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Invision Board » Хак » сортировка форумов для версии 1.1

Модерирует : Antuan, Dekker

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

kkhk



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Этот хак добавляет в профиль ссылку "Сортировать категории", ведь многим не нравиться например, что катагория Общии выше чем Тематические (на примере этого форума), так вот в профиле это можно будет очень легко сделать!(утверждают авторы хака) кто протестирует пусть сообщит о работоспособности.
Итак начнем!
Идем в админ центр, находим Skins & Templates » Manage HTML Templates » Manage HTML » ищем Menu_bar » Edit и после строчки
Код:
&#149; <a href='{$base_url}&act=UserCP&CODE=04'>{ibf.lang.m_board_opt}</a><br>

добавляем
Код:
 &#149; <a href='{$base_url}&act=UserCP&CODE=52'>Сортировать катагории</a><br>

Далее открываем Boards.php -  ищем
Код:
// Get the forums and category info from the DB
         
        $last_c_id = -1;

Ниже добавляем
Код:
if($order_cookie = $std->my_getcookie('catorder'))
  {  $order = explode("p8o", $order_cookie);
  foreach($order as $v)
  {if(!is_numeric($v))
    {continue;}
    $order_f[] = "c.id='$v' DESC";
  }
  $order_f[] = 'c.position';
  $order = implode(",", $order_f);
  }
  else
  {$order = "c.position";}
 
Below you will see a $DB query.  
 
The bottom is:
 
order by c.position, f.position");
 
REPLACE WITH:
 
order by $order, f.position");

Открываем Usercp.php, ищем
Код:
//------------------------------
       
      case '50':
      $this->forum_tracker();
      break;
      case '51':
      $this->remove_forum_tracker();
      break;
       
      //-------------------------------

ниже добавляем
Код:
case '52':
    $this->forum_order();
    break;
  case '53':
    $this->do_forum_order();
    break;
  //-------------------------------
 

ищем
Код:
$print->add_output("$this->output");
        $print->do_output( array( 'TITLE' => $this->page_title, 'JS' => 1, NAV => $this->nav ) );
       
  }
 

ниже добавляем
Код:
function do_forum_order()
{global $ibforums, $std, $print;
   
  foreach($ibforums->input['order'] as $v)
  {if(isset($cach[$v]))
  {$ibforums->lang['my_error'] = "You have selected the same position for more then one category, please try again.";
    $std->Error( array( 'LEVEL' => 1, 'MSG' => 'my_error' ) );}
  $cach[$v] = 1;
  }
   
  $order = implode("p8o", $ibforums->input['order']);
  $std->my_setcookie('catorder', $order);
  $print->redirect_screen( $ibforums->lang['set_updated'], "act=UserCP&CODE=52" );
}
 
function forum_order()
{global $ibforums, $std, $DB;
   
  $DB->query("SELECT f.*, c.id as cat_id, c.position as cat_position, c.state as cat_state, c.name as cat_name, c.description as cat_desc,
             c.image, c.url
             from ibforums f, ibcategories c
             WHERE f.category=c.id
             order by c.position, f.position");
   
  while ( $r = $DB->fetch_row() )
        {
        if ($last_c_id != $r['cat_id'])
        {
          $this->cats[ $r['cat_id'] ] = array( 'id'          => $r['cat_id'],
                    'position'    => $r['cat_position'],
                    'state'       => $r['cat_state'],
                    'name'        => $r['cat_name'],
                    'description' => $r['cat_desc'],
                    'image'       => $r['image'],
                    'url'         => $r['url'],
                     );
                     
          $last_c_id = $r['cat_id'];
        }
         
        if ($r['parent_id'] > 0)
  {
    $this->children[ $r['parent_id'] ][$r['id']] = $r;
  }
  else
  {
    $this->forums[ $r['id'] ] = $r;
  }
   
        }
  $run = 1;
  foreach ($this->cats as $cat_id => $cat_data)
        {if (! $cat_data['state'] )
        {
          continue;
        }
         
            foreach ($this->forums as $forum_id => $forum_data)
            {
    if ($forum_data['read_perms'] != '*')
    {
      if ( ! preg_match( "/(^|,)".$ibforums->member['mgroup']."(,|$)/", $forum_data['read_perms'] ) )
      {
      continue;
      }
    }
     
                if ($forum_data['category'] == $cat_id AND $forum_data['parent_id'] == '-1')
                {
                $forums[$cat_id][] = $forum_data['name'];
                }
            }
             
            if (isset($forums[$cat_id]))
            {
            $cats[$cat_id] = $cat_data['name'];
    $order_val[$cat_id] = $run;
    $run++;
            }
        }
  $mid = "";
   
  if($order_cookie = $std->my_getcookie('catorder'))
  {$order = explode("p8o", $order_cookie);
  $run = 1;
  foreach($order as $v)
  {$order_val[$v] = $run;
    $run++;
  }
  }
   
  foreach($cats as $id => $name)
  {$select = $order_val[$id];
   
  $nos = "";
  $no = 0;
   
  while($no++ < count($cats))
  {if($no == $select)
    {$sel = " selected";}
    $nos .= "<option value='$no'$sel>$no</option>n";
    $sel = "";
  }
   
  $mid .= "<tr><td width='15%' valign='middle' align='center'>n<select name='order[{$id}]' class='forminput'>n$nos</select>n</td>n";
  $mid .= "<td width='85%' valign='middle'><b>$name</b>n<br>Forums: ";
  $mid .= implode(", ", $forums[$id]);
  $mid .= "n</td></tr>";
  }
  $output = <<<data
                   <td  colspan='2' class='category'><b>Category Order</b></td>
                 </tr>
     
     <form action="index.php" method="post" name='form1'>
                 <input type='hidden' name='act' value='UserCP'>
                 <input type='hidden' name='CODE' value='53'>
                 <input type='hidden' name='s' value='{$ibforums->session_id}'>
                 <tr>
                  <td class='row1' colspan='2'>Please select the order you wish for the categories to display on the main forum page.</td>
                 </tr>
                 <tr>
                   <td class='row1' align='left'>
       <table width='100%' cellspacing='5'>
       {$mid}
       </table></td>
                 </tr>
                 <tr>
                     <td class='row2' align='center' colspan='2'><input type="submit" name='change_email' value="Change Category Order" class='forminput'></td>
                 </tr>
                 </form>
data;
     
$this->page_title = "Category Order";
  $this->nav        = array( "<a href='".$this->base_url."&act=UserCP&CODE=00'>".$ibforums->lang['t_title']."</a>" );
  $this->output = $output;
 
}
 

Вот и все, пользуемся на здоровье.

----------
infix* - зашибательский weblog
Говори кратко, проси мало, уходи борзо

Всего записей: 930 | Зарегистр. 12-10-2001 | Отправлено: 11:04 13-02-2003 | Исправлено: kkhk, 18:09 13-02-2003
mira ilja

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как называется этот хак на агглийском. Скинь линку на ибсорс... Хочетса коменты почитать.

Всего записей: 22 | Зарегистр. 30-01-2003 | Отправлено: 12:53 14-02-2003
kkhk



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mira ilja не знаю как по английски, у меня на винте вся база хаков и как он называется точно не помню, но вроде User Order Categories


----------
infix* - зашибательский weblog
Говори кратко, проси мало, уходи борзо

Всего записей: 930 | Зарегистр. 12-10-2001 | Отправлено: 16:00 14-02-2003
mira ilja

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ок... поищу...  
И еще. для какой версии хаки тоже надо писать !

Всего записей: 22 | Зарегистр. 30-01-2003 | Отправлено: 16:20 14-02-2003
kkhk



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mira ilja у тебя как со зрением? вроде в названии топика написано.
Попробуй еого потестировать, у меня постоянный глюк вылазиет после установки, сортировка все это хозяйство появляется, а вот затем главная страница не грузится, вот и прошу чтобы потестили.


----------
infix* - зашибательский weblog
Говори кратко, проси мало, уходи борзо

Всего записей: 930 | Зарегистр. 12-10-2001 | Отправлено: 06:47 15-02-2003 | Исправлено: kkhk, 06:52 15-02-2003
H_e_r_m_i_t



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Гм....Решил протестировать:
 
parse error, unexpected '{'  in

Код:
if($order_cookie = $std->my_getcookie('catorder'))  
  {  $order = explode("p8o", $order_cookie);  
  foreach($order as $v)  
  {if(!is_numeric($v))  
    {continue;}  
    $order_f[] = "c.id='$v' DESC";  
  }  
  $order_f[] = 'c.position';  
  $order = implode(",", $order_f);  
  }  
  else  
  {$order = "c.position";}  

 
На ibplanet такого хака так и не нашел...

Всего записей: 950 | Зарегистр. 26-04-2002 | Отправлено: 12:09 09-05-2003 | Исправлено: H_e_r_m_i_t, 12:10 09-05-2003
H_e_r_m_i_t



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мде.. Странный хак. Поставить удалось (проблема была в function do_forum_order()  которая долго ругалась на  $DB->query и двойные ковычки), главная страница загрузилась, а вот правильно отсортировать не удалось: как в насторойках не задаю он по своему сортирует...

Всего записей: 950 | Зарегистр. 26-04-2002 | Отправлено: 20:57 11-05-2003
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Invision Board » Хак » сортировка форумов для версии 1.1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru