1. spirit - 23 апреля 2009 — 11:28 - перейти к сообщению
Очень большая необходимость сортировки тем по алфавиту! Помогите пожалста!!!
2. yura3d - 23 апреля 2009 — 14:21 - перейти к сообщению
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");
$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:
/*
Functions
*/
Functions
*/
И под ними вставляем:
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']];
}
}
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'] = 'в порядке убывания';
$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}
</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>
<select name="sort">
{$sorting}
</select>
<select name="order">
{$ordering}
</select>
<input type="submit" value="ok" onClick="return Formchecker(this.form)" class="forminput" />
</form>
На этом всё. Если Вы пользуетесь скином, отличным от InvisionExBB, то изменения в Вашем скине нужно делать по аналогии.
3. spirit - 23 апреля 2009 — 18:57 - перейти к сообщению
Спасибо биг, проверю, отпишусь!
(Добавление)
И еще забыл сказать, что это должно быть доступно только админу, а у простых юзверей отображалось, в том порядке, как соответственно выставил админ...
(Добавление)
И еще забыл сказать, что это должно быть доступно только админу, а у простых юзверей отображалось, в том порядке, как соответственно выставил админ...
4. yura3d - 23 апреля 2009 — 19:13 - перейти к сообщению
spirit пишет:
И еще забыл сказать, что это должно быть доступно только админу, а у простых юзверей отображалось, в том порядке, как соответственно выставил админ...
У меня сделано так, что параметры сортировки могут выбирать все пользователи (по такому же принципу реализована эта функция в других форумах). По-умолчанию сортировка по дате последнего сообщения в порядке убывания (как было до установки мода).
5. - 23 апреля 2009 — 21:18 - перейти к сообщению
С сортировкой по "Названиию темы" что-то не то . У меня до буквы "А" попадают посты на букву "Ч", например.
6. yura3d - 25 апреля 2009 — 11:42 - перейти к сообщению
Сортировка по алфавиту сильно зависит от установленной на сервере локали. Если русская локаль не настроена на сервере, то сортироваться корректно будет только латиница
7. spirit - 30 апреля 2009 — 16:44 - перейти к сообщению
Спасибо за опреативность, а можно просто сделат так, чтобы новые темы добавлялись в конец а не в начало?
8. yura3d - 30 апреля 2009 — 18:49 - перейти к сообщению
spirit пишет:
Спасибо за опреативность, а можно просто сделат так, чтобы новые темы добавлялись в конец а не в начало?
Возможна сортировка по некоторым критериям (название, описание, имя первого/последнего авторов, количество ответов, дата последнего ответа).
9. spirit - 30 апреля 2009 — 18:53 - перейти к сообщению
yura3d пишет:
Возможна сортировка по некоторым критериям
Нет, вообще без всякой сортировки, просто новая тема - в конец списка, а не в начало.
10. yura3d - 30 апреля 2009 — 18:55 - перейти к сообщению
spirit пишет:
Нет, вообще без всякой сортировки, просто новая тема - в конец списка, а не в начало.
В данный момент нельзя. Да и вообще в чём смысл этого? Если новые темы будут добавляться в конец, то кто их увидит?
11. Pauk - 11 декабря 2010 — 00:58 - перейти к сообщению
спасибо за мод
(Добавление)
только вот если тем много то при перелистывание сортировка слетает
(Добавление)
только вот если тем много то при перелистывание сортировка слетает
12. drummer69 - 18 апреля 2011 — 14:22 - перейти к сообщению
Подскажите, как добавить сортировку "по дате создания темы".
Очень нужно, спасибо!
Очень нужно, спасибо!
13. variant0 - 3 марта 2014 — 18:52 - перейти к сообщению
drummer69 пишет:
Подскажите, как добавить сортировку "по дате создания темы".
Нужно.
14. variant0 - 4 марта 2014 — 14:18 - перейти к сообщению
Также нужна возможность запрещать сортировку тем в разделе пользователями, чтобы темы были отсортированы в том порядке, как настроено администратором. Это нужно, например, при создании раздела, где в топикстартере каждой темы публикуются очередные номера какой-то газеты, а последующие топики являются комментариями. Такие темы, естественно, должны быть отсортированы по дате создания темы (что соответствует порядку следования номеров публикуемой газеты) и никак иначе.
15. GreatALF - 22 мая 2014 — 09:02 - перейти к сообщению
Интересно, посмотрим