Внимание! Форум временно закрыт. Все вопросы вы можете задать на странице MaxSite CMS в Github

Вложенные комментарии

koreec
Сообщений: 21
Зарегистрирован: 16 фев 2009, 08:09

Вложенные комментарии

Сообщение koreec » 16 фев 2009, 08:12

Очень бы хотелось иметь возможность создавать вложенные комментарии. имеющаяся возможность вставить цитату - это не совсем то.

poison
Сообщений: 8
Зарегистрирован: 11 фев 2009, 16:06

Re: Вложенные комментарии

Сообщение poison » 16 фев 2009, 12:54

Полностью поддерживаю :)

Аватар пользователя
Arsenal
Сообщений: 121
Зарегистрирован: 02 фев 2009, 09:52

Re: Вложенные комментарии

Сообщение Arsenal » 16 фев 2009, 16:58

Я хочу сделать древовидные комментарии для своего проекта.
Но не знаю теории.

Хочу чтобы были типа как каменты к яндекс.фоткам.
Т.е. если комментариев много, то создается пагинация их.

Расскажите мне алгоритм, я сделаю.

Аватар пользователя
MAX
Администратор
Сообщений: 3179
Зарегистрирован: 31 янв 2009, 19:02

Re: Вложенные комментарии

Сообщение MAX » 16 фев 2009, 21:07

Если в теории, то так. Помимо формы комментария внизу, должны быть ссылки «ответить» после каждого комментария. При нажатии этой ссылки открывается форма, аналогично нижней, только сразу под выбранным комментом. В этой форме, по идее должно быть дополнительное поле «comments_parent_id», которое и содержит id этого комментария.

Отправка происходит как обычно, только, как ты понял есть поле comments_parent_id, которое и записывается в базу.

При выводе же комментариев строится дерево на основе comments_parent_id.

Для меня самая сложность - это форма возле каждого коммента. Есть правда пара вариаций.

Первая - убрать стандартную форму комментариев вообще. Появляться она будет только по ссылке/кнопке «Оставить комментарий» в виде всплывающего слоя (типа лайтбокса).

Вторая вариация - это выпадающий селект в форме комментария. Когда комментатор кликает на «Ответить» смотрится id-комментария и селект выбирает этот комментарий (автор, дата). По мне так этот вариант не очень удобен.

Аватар пользователя
Saturn
Сообщений: 10
Зарегистрирован: 05 фев 2009, 15:20

Re: Вложенные комментарии

Сообщение Saturn » 17 фев 2009, 08:36

я как-то на портале одном делал так (тогда еще не использовал jquery, поэтому так грубо):
форму одну делаем и прячем в скрытый слой. в ней прописываем в <input type=hidden id="%ID%">. в функции javascript, которая вызывает форму коммента, вставляем в код формы вместо %ID% нужный id-ник коммента и по нажатию отправить отправляем её скрипту.
а вообще с помощью jquery можно формы строить налету и не страдать фигнёй.
"Блажен король, но кружка с пивом
Любого сделает счастливым"
(c) Роберт Бернс

Аватар пользователя
Arsenal
Сообщений: 121
Зарегистрирован: 02 фев 2009, 09:52

Re: Вложенные комментарии

Сообщение Arsenal » 20 фев 2009, 01:09

Вы меня не правильно поняли, потому что я не правильно выразился.

Что касается пользовательского интерфейса - у меня глаза есть :D , я вижу как реализовано все на яндексе, на других сайтах, использующих древовидные каменты, с этим у меня нет проблем, я знаю как реализовать.

Единственная и главная сложность для меня - это построение этого дерева...

Есть у нас к примеру таблица

id id_parent
1 0
2 0
3 2
4 2
5 1
6 3

начиная отсюда у меня возникают сложности. Как построить теперь древовидные каменты. Ткните носом в хороший алгоритм построения.

Аватар пользователя
Arsenal
Сообщений: 121
Зарегистрирован: 02 фев 2009, 09:52

Re: Вложенные комментарии

Сообщение Arsenal » 20 фев 2009, 01:29

Вот нашел по теме вывода деревьев

мне как раз нужно выводить для последнего заказа дерево категорий каталога

Изображение

так что проблема вывода актуальна, сейчас изучаю

Аватар пользователя
MAX
Администратор
Сообщений: 3179
Зарегистрирован: 31 янв 2009, 19:02

Re: Вложенные комментарии

Сообщение MAX » 20 фев 2009, 01:37

Только рекурсией. Пример: mso_cat_array().

Но вообще в идеале можно сделать так. Одним запросом получаются все комментарии страницы (как сейчас). После этого на основе полученных данных создается новый массив, который строится (рекурсивно, есно) так, чтобы вверху были с id_parent=0, а все его потомки в элементе childs=>array(...).

После этого на основе этого массива строится ul-список с помощью mso_create_list().

Аватар пользователя
Arsenal
Сообщений: 121
Зарегистрирован: 02 фев 2009, 09:52

Re: Вложенные комментарии

Сообщение Arsenal » 20 фев 2009, 01:44

К сожалению когда в институте учили деревья и графы я прогуливал (работал).
Оказывается вполне практичная штука.

Посмотрел mso_cat_array, получается если 100 рубрик, то делается 100 sql запросов?
В принципе при наличии кеширования терпимо, но с комментариями наверняка не прокатит.

Если получить весь список комментариев, а потом рекурсией пройти средствами php, так будет быстрее, но тогда не сделаешь пагинацию как в яндекс.фотках

admin писал(а):Только рекурсией. Пример: mso_cat_array().

Но вообще в идеале можно сделать так. Одним запросом получаются все комментарии страницы (как сейчас). После этого на основе полученных данных создается новый массив, который строится (рекурсивно, есно) так, чтобы вверху были с id_parent=0, а все его потомки в элементе childs=>array(...).

После этого на основе этого массива строится ul-список с помощью mso_create_list().

Аватар пользователя
Elf
Сообщений: 35
Зарегистрирован: 05 фев 2009, 00:00

Re: Вложенные комментарии

Сообщение Elf » 20 фев 2009, 09:02

В рекурсии можно учесть всё, даже пагинацию.
Делал вывод деревьев в меню движка ДЛЕ.
Да пребудет с вами СЕТЬ!


Вернуться в «Старые неактуальные темы»

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron