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