Система адресации постов и вложений
Есть серьёзные недостатки...
- 1
- 2
Пару раз уже поднимал этот вопрос. Вопрос серьёзный. Если его не решить, это скомпрометирует форум. Но, кажется, решения лежат в области модернизации основ форума: его структуры данных. Вот и думаю: может быть, и не начинать этот разговор? Интересно, что админ скажет? Не может быть, чтобы разработчик не знал об этих проблемах...
--
В любом случае, вот, одно из моих предложений: каждому посту присваивать три url:
Вместо одной сегодняшней (в правом верхнем углу) для каждого поста нужны три типа ссылок (или три текстовых поля, содержащих эти url):
1) По идентификатору поста. При этом в броузере пост должен открыться отдельной страницей или фреймом. То есть, должно открываться только это отдельное сообщение. Эта же ссылка будет использоваться в наборах, создающих виртуальные темы: каждый пользователь сможет надёргать сообщения из разных форумов, и, с помощью форумского движка — разместить их на веб-странице. Древовидная навигация покажет не только краткое описание каждого поста, но и пиктограммку соответствующего сайта (откуда пост был взят). При этом допускается использовать даже локальные ссылки (например, на пост с локального жёсткого диска, или из кэша).
2) Ссыль на страницу, где в данный момент расположен соответствующий пост. При этом, адрес этой ссылки не должен идентифицировать эту тему (в общем, не должен специфицировать родительский раздел). Движок сам определит эту родительскую тему.
3) Ссылка на тему, где пост был опубликован или какое-то время присутствовал. Вот в этой ссылке идентификатор темы присутствовать обязан! Если движок, получив такой адрес, не обнаружит указанного в нём поста, он выдаст страницу с индикацией в ней пустого места (даже если обычно соответствующая страница этот след поста не отображает). По этой индикации можно понять: куда перемещён пост, когда удалён, и в чём была причина этой движухи.
--
4) И ещё один особый тип гиперссылок можно выделить отдельным пунктом: это множественная ссылка на фрагменты сообщений. Переход по каждой такой ссылке осуществляется в два этапа: сначала 'прыгаем' к навигационному дереву ссылок. Вторым шагом, выбирая какой-либо узел этого дерева, переходим к соответствующему фрагменту html-страницы.
О возможности выбрать на 'чужой' странице произвольный фрагмент: (#1) — Как сгенерировать ссылку на произвольный фрагмент веб-страницы?
_1_ написал(а):
При этом в броузере пост должен открыться отдельной страницей или фреймом. То есть, должно открываться только это отдельное сообщение.
Уже не раз писал, что в форуме этого не будет. В подавляющем большинстве случаев это не нужно рядовым пользователям (а в ряде случаев и вводит их в ступор, вызывая непонимание, как перейти к полной теме, сам не раз ругался, сталкиваясь с подобным на форумах, работающих на двух популярных коммерческих движках). Кроме того, если кто-то вздумает скачать сайт wgetом или Teleportом или еще чем-то подобным большой форум, это запросто может положить сервер (или сильно замедлить, не говоря уж о траффике), а с точки зрения SEO это откровенно вредно.
_1_ написал(а):
Эта же ссылка будет использоваться в наборах, создающих виртуальные темы: каждый пользователь сможет надёргать сообщения из разных форумов, и, с помощью форумского движка — последовательно разместить их на веб-странице.
Идея виртуальных тем — в принципе хорошая. Но только в пределах отдельно взятого форума. А за его пределы информацию можно просто скопировать, если уж так хочется.
И в принципе, виртуальные темы можно реализовать иначе, создав, например, тег вида [post=идентификатор], позволяющий импортировать содержимое одного поста в другой (правда, это сразу же появятся дополнительные запросы к базе).
_1_ написал(а):
При этом, адрес этой ссылки не должен идентифицировать эту тему (в общем, не должен специфицировать родительский раздел). Движок сам определит эту родительскую тему.
В принципе, даже сейчас ссылки вида /раздел/тема/post-номер.htm можно заменить что-то вроде /posts/номер.htm, причем с технической точки зрения сделать это сравнительно легко. Но реально при заходе на них будет делаться 301-ый редирект на тему, в которой данное сообщение находится в данный момент с промоткой к нужному сообщению, а не отдельное сообщение. Пожалуй, включу это в список возможных доработок.
_1_ написал(а):
Ссылка на тему, где пост был опубликован или какое-то время присутствовал. Вот в этой ссылке идентификатор темы присутствовать обязан! Если движок, получив такой адрес, не обнаружит указанного в нём поста, он выдаст страницу с индикацией в ней пустого места (даже если обычно соответствующая страница этот след поста не отображает). По этой индикации можно понять: куда перемещён пост, когда удалён, и в чём была причина этой движухи.
Идея хорошая, но слишком сложно реализуемая. Точнее основная сложность в том, чтобы не учитывать эти сообщения в нумерации страниц. Иначе, скажем, при разрезании 20-страничной темы, скатившейся в последних 5 страницах преимущественно в ругань будет получаться 5 страниц сообщений вида "Это сообщение было перенесено туда-то" или "сообщение удалено". Вряд ли пользователям форума понравится листать по несколько страниц подряд подобного.
Критикуя — предлагай, предлагая — обосновывай!
4xpro.ru — мой личный сайт-мультиблог на Intellect Board.
4X_Pro написал(а):
Идея хорошая, но слишком сложно реализуемая. Точнее основная сложность в том, чтобы не учитывать эти сообщения в нумерации страниц. Иначе, скажем, при разрезании 20-страничной темы, скатившейся в последних 5 страницах преимущественно в ругань будет получаться 5 страниц сообщений вида "Это сообщение было перенесено туда-то" или "сообщение удалено". Вряд ли пользователям форума понравится листать по несколько страниц подряд подобного.
Сложности можно обойти сразу с двух сторон:
1) Невзрачными спойлерами (даже без текста). Они наглядно покажут следы былой активности, но без акцента.
2) Указывать только те спойлеры отсутствующих постов, чьи идентификаторы явно присутствуют в url (например, в качестве параметров).
Может возникнуть вопрос об обратных ссылках: откуда ссылаются на конкретный пост, тему или вложение?
Как решить эту задачу?
Наверное, можно через расширенный синтаксис поисковика?
Но движок форума должен предоставлять такую информацию при помощи собственных инструментальных средств.
Аналогично, он должен быть в состоянии ответить: где (в каких постах) фигурирует файл или рисунок, прикреплённый к конкретному сообщению.
Пять лет назад я решил эту задачу локально…, при помощи такого вот "кубика-рубика" (см. вложения)
каждая кнопочка уже в своей надписи информирует, сколько раз тот или иной информационный объект используется
- как главный,
- как подчинённый,
- и как связь между главным и подчинённым.
Подробности можно просматривать, нажав соответствующую кнопку.
-
/image001.jpg (25 Кб) -
/rubik.jpg (12 Кб)
Как по ссылке предпросмотра картинки определить пост, где она опубликована?Например, картинка
имеет ссылку www.intbpro.ru/f/up/1/pr/240x180/286-82fe5a6a9e64.PNG
Как найти полную версию этой картинки?
Самый простой способ: задать огромные размеры предпросмотра.
Например: www.intbpro.ru/f/up/1/pr/24000x1/286-82fe5a6a9e64.PNG
-- при этом картинка будет показана "в полный рост" (но не увеличена сверх своего реального размера).
-
Способ №2
алгоритм:
1) скопировать адрес превьюшки ( http://intbpro.ru/f/up/1/pr/240x180/286-82fe5a6a9e64.png )http://www.intbpro.ru/f/up/1/286-82fe5a6a9e64/zng52EDD.png
2) в этой строке удалить блок ( /pr/240x180, и вместо .png поставить «слэш»), в результате, получен адрес каталога (папки)
3) попытаться загрузить этот адрес; при этом, рисунок будет загружен на локальный диск
4) скопировать имя этого рисунка (в данном случае, zng52EDD.png), и добавить его к имени каталога (адрес каталога получен в п.2 ); это и есть адрес полноформатной картинки (но не её исходное имя): http://www.intbpro.ru/f/up/1/286-82fe5a6a9e64/zng52EDD.png — обратите внимание: результирующее имя не равно исходному. Но полученный графический адрес можно использовать внутри тегов ( [img] ... [/img] )
Исходное имя (если оно не латиницей) бывает намноого длиннеее: www.intbpro.ru/f/up/…и).PNG
-
Остался вопрос: как найти (пост), где опубликован файл?
4X_Pro написал(а):
Идея виртуальных тем — в принципе хорошая. Но только в пределах отдельно взятого форума. А за его пределы информацию можно просто скопировать, если уж так хочется.
Если автор изменит свой пост на 'чужом форуме', то в 'копиях' эти изменения не отобразятся.
Вообще, в технологиях сегодняшних форумов нет трёх важных компонентов:
1) Взаимная интеграция (единое информационное пространство).
2) Платёжно-оценочные сервисы.
3) Плавающая навигация (сетевым деревом) и виртуальные темы

< от 4X_Pro:
nikola2278 написал(а):
… Вставка ссылки на пост из которого берется цитата.
Рассматривал такой вариант еще когда делал BBCodes, но пока отказался. Основная сложность — в определении номера страницы, на которой находится цитируемое сообщение (который, к тому же, у разных пользователей может быть разным в зависимости от выставленного в настройках числа сообщений на страницу). Для этого нужно либо дополнительный запрос делать к базе (что является очень плохим решением, так как если на странице двадцать цитат, число запросов на эти 20 и вырастет), либо рушить структуру URLов, т.е. вместо /раздел/тема/post-номер.htm делать что-то вроде /posts/post-номер.htm с последующим редиректом в тему.
Номер сообщения в базе — так и планировалось. Но, как я уже писал не раз, вывода одного сообщения на страницу не будет в прицнипе.
AJAX-запрос для предпросмотра редактируемых сообщений уже есть! Аналогичным способом можно сделать запрос для 'индивидуального' просмотра существующего поста.
У каждого поста должно быть выпадающее меню с тремя типами ссылок (). Если пользователь применяет эти ссылки неправильно, то его за это наказывать (как сейчас Вы наказываете каждого новичка, отключая ему саму возможность применять гиперсылки)). Но остальным-то зачем мешать, лишая их разнообразия ссылочных воможностей?
--
Вот, конкретный пример ненужных наказаний:
ПнБ в моей заглавной теме ошалел от банов, и совсем не к месту разместил в ней свой пост (#6)
Совсем удалять его сообщение я бы не хотел... Но и отвечать на него в той теме - значит, испортить её.
Выходом было бы переместить ненужное сообщение (++ ответы на него), или частично скрыть его в невидимой под-ветке (чтоб в той теме остался лишь малозаметный 'след' со ссылкой). Это будет ссылка третьего типа (п.3), но, к сожалению, такие ссылки в этом форуме пока не возможны.
- 1
- 2
У вас нет прав для отправки сообщений в эту тему.