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, то изменения в Вашем скине нужно делать по аналогии. |
|
|
|