| 
				
					| yura3d | Отправлено: 23 апреля 2009 — 14:21   |  
					| 
 
  ExBB Team
 ExBB Developer
 ExBB Mods Author
 
  
 Покинул форум
 Сообщений всего: 3394
 Дата рег-ции: Февр. 2009
 Откуда: Минск, Беларусь
 Репутация: 353
 
 
 
 
  
 | spirit пишет:Очень большая необходимость сортировки тем по алфавиту! Помогите пожалста!!! Вобщем сделал возможность сортировки тем в разделе по некоторым критериям (название, описание, имя первого/последнего авторов, количество ответов, дата последнего ответа). Сортировать можно как по возрастанию, так и по убыванию. Для добавления этой возможности на свой форум необходимо проделать следующие изменения. Открываем файл forums.php, находим строку:
 
 CODE:uasort($topics,"sortByPinnedPostdate"); И заменяем её строками:
 
 CODE:// Topics sort for ExBB FM 1.0 RC2 by yura3d, http://www.exbb.org/$fm->_Strings(array('sort' => 'postdate', 'order' => 'desc'));
 $_sort_columns = array('name', 'desc', 'author', 'posts', 'postdate', 'poster');
 if (!in_array($fm->input['sort'], $_sort_columns))
 $fm->input['sort'] = 'postdate';
 switch ($fm->input['sort']) {
 case 'name': case 'desc': case 'author': case 'poster':
 $sort_type = 's';
 break;
 default:	$sort_type = 'd';
 }
 $_sort = array(
 'column'	=> $fm->input['sort'],
 'type'		=> $sort_type
 );
 uasort($topics, '_sort');
 if ($fm->input['order'] == 'desc') $topics = array_reverse($topics, TRUE);
 $sorting = '';
 foreach ($_sort_columns as $column)
 $sorting .= '<option value="'.$column.'"'.(($column == $fm->input['sort']) ? ' selected="selected"' : '').'> '.$fm->LANG['SortBy_'.$column];
 $ordering = '<option value="asc"> '.$fm->LANG['SortOrderAsc'];
 $ordering .= '<option value="desc"'.(($fm->input['order'] == 'desc') ? ' selected="selected"' : '').'> '.$fm->LANG['SortOrderDesc'];
 //uasort($topics,"sortByPinnedPostdate");
 Далее находим строки:
 
 И под ними вставляем:
 
 CODE:function _sort($a, $b) {global $fm, $_sort;
 
 if ($_sort['type'] == 's') {
 if ($fm->_RuLocale)
 return strcasecmp($a[$_sort['column']], $b[$_sort['column']]);
 else
 return strcmp($fm->_StrToLower($a[$_sort['column']]), $fm->_StrToLower($b[$_sort['column']]));
 }
 else if ($_sort['type'] == 'd') {
 return $a[$_sort['column']] - $b[$_sort['column']];
 }
 }
 Теперь открываем файл language/russian/lang_front_forums.php, находим строку:
 
 CODE:$this->LANG['FilterByAuthor']	= 'автору'; И после неё добавляем строки:
 
 CODE:$this->LANG['SortBy']			= 'Сортировать по:';$this->LANG['SortBy_name']		= 'названию темы';
 $this->LANG['SortBy_desc']		= 'описанию темы';
 $this->LANG['SortBy_author']	= 'имени автора';
 $this->LANG['SortBy_posts']		= 'количеству сообщений';
 $this->LANG['SortBy_postdate']	= 'дате последнего сообщения';
 $this->LANG['SortBy_poster']	= 'имени последнего автора';
 $this->LANG['SortOrderAsc']		= 'в порядке возрастания';
 $this->LANG['SortOrderDesc']	= 'в порядке убывания';
 Теперь открываем файл templates/InvisionExBB/forum_body.tpl, находим строки:
 
 CODE:<input type="submit" value="ok" onClick="return Formchecker(this.form)" class="forminput" /></form>
 {$resetfiltr}   
 И заменяем их строками:
 
 CODE:{$resetfiltr}   {$fm->LANG['SortBy']}<select name="sort">
 {$sorting}
 </select>
 <select name="order">
 {$ordering}
 </select>   
 <input type="submit" value="ok" onClick="return Formchecker(this.form)" class="forminput" />
 </form>   
 На этом всё. Если Вы пользуетесь скином, отличным от InvisionExBB, то изменения в Вашем скине нужно делать по аналогии.
 |  
					|  |  |  |