AsmBB

Power
Login Register

Фильтрация вывода

#15787 (ツ) ecolog
Created 25.03.2019, read: 809 times

Здравствуйте. Как добавить фильтрацию тем и сообщений в теме по новизне(по возрасту), по количеству сообщений, по популярности? Как расширить возможности поиска? Как создать sitemap.xml файл? Как создать RSS файл? С Уважением Владимир.

#15788 (ツ) johnfound
Created 25.03.2019, read: 804 times
ecolog

Здравствуйте. Как добавить фильтрацию тем и сообщений в теме по новизне(по возрасту), по количеству сообщений, по популярности? Как расширить возможности поиска? Как создать sitemap.xml файл? Как создать RSS файл? С Уважением Владимир.

Фильтрация тем

Сообщения в теме и темы в списке тем и так всегда отсортированы в порядке новизны. Новые темы располагаются в начале списка, а новые сообщения в конце темы.

Сообщения в теме, вообще то нельзя фильтровать или сортировать подругому, потому что все сообщения логически связаны именно в порядке публикования. Поэтому и удаление сообщения из темы это довольно ответственное действие.

Какие темы будут в списке тем, определяется в соответствующего SQL запроса – файл threadlist.sql. Этот запрос сначала обрабатывается в процессоре шаблонов (обратите внимание на команды [case:[special:variant]]. Специальная команда [special:variant] имеет значения от 0 до 3 в зависимости от адреса запроса (URL):

 0 - запрашивается список всех тем: '/'
 1 - запрашивается список всех тем с ограниченным доступом (LAT) для данного пользователя: '/(o)/'
 2 - запрашивается список всех тем с неким ярлыком: '/some_tag/'
 3 - соответствeно, все LAT с данным ярлыком: '/(o)/some_tag/

Конечно, эти варианты можно расширить. Для этого надо доработать SQL запрос и логика вычисления значения [special:variant] или использовать другие внутренние параметры и команды процессора шаблонов.

Поиск

AsmBB использует полнотекстовый поиск SQL (расширение fts5). Возможности поиска очень большие – у него собственный синтаксис, которого можно увидеть на сайте SQLite.

Поиск можно делать по заголовок темы, содержание сообщении, имя потребителя и по ярлыки темы.

А вообще то, поиск нуждается в написания некоторого руководство или по крайней мере небольшой справке по синтаксису.

Специальные файлы:

Чтобы возвращать специальные файлы типа sitemap.xml и RSS надо сделать примерно следующее:

Включается команда "!rss" с списке в commands.asm:

PHashTable tablePostCommands, tpl_func,                 \
        "!markread",        MarkThreadRead,             \
        "!post",            PostUserMessage,            \
        "!edit",            EditUserMessage,            \
        "!edit_thread",     EditThreadAttr,             \
        "!del",             DeletePost,                 \
        "!by_id",           PostByID,                   \
        "!history",         ShowHistory,                \
        "!restore",         RestorePost,                \
        "!echoevents",      EchoRealTime,               \ 
        "!search",          ShowSearchResults2,         \
        "!rss",             RSSFeed

А потом создается файл rss.asm в котором процедура:

proc RSSFeen, .pSpecial
begin
  ; здесь синтезируем rss и возвращаем потребителю...
end

Можно посмотреть как сделано в других случаях. Достаточно просто например написана команда !users_online

Ну и конечно файл rss.asm должен включится с include "rss.asm" в начале engine.asm`.

AsmBB v2.9 (check-in: 6d407831308ba556); SQLite v3.31.1 (check-in: 3bfa9cc97da10598);
©2016..2020 John Found; Licensed under EUPL. Powered by Assembly language Created with Fresh IDE