Постраничное разбиение комментариев
В SVN появился функционал постраничного разбиения комментариев к топикам. Данная возможность будет очень полезной для крупных сайтов, где количество комментов к одному топику может спокойно перевалить за 1000.
Для включения постраничности в конфиге появились два параметра:
Для перевода существующих комментариев в режим use_nested = true необходимо запустить конвертацию/восстановление структуры дерева по адресу — /admin/restorecomment/. Если комментариев много, то процесс конвертации может затянуться, поэтому не забудьте на время выставить в php.ini большой лимит выполнения php скриптов. После конвертации появится сообщение — restore ok.
Ссылка на изменения — trac.lsdev.ru/livestreet/changeset?new=1015%40trunk&old=1006%40trunk
Не забудьте выполнить SQL патч — trac.lsdev.ru/livestreet/browser/trunk/install/convert_0.4.2_to_0.4.3.sql
Для включения постраничности в конфиге появились два параметра:
$config['module']['comment']['use_nested'] = true;
$config['module']['comment']['nested_per_page'] = 50;
Первый переводит комментарии в режим дерева (nested set), второй задает число корневых элементов на одну страницу. Если значение nested_per_page = 0, то разбивки на страницы не будет, будет просто использоваться nested set для построения дерева.Для перевода существующих комментариев в режим use_nested = true необходимо запустить конвертацию/восстановление структуры дерева по адресу — /admin/restorecomment/. Если комментариев много, то процесс конвертации может затянуться, поэтому не забудьте на время выставить в php.ini большой лимит выполнения php скриптов. После конвертации появится сообщение — restore ok.
Ссылка на изменения — trac.lsdev.ru/livestreet/changeset?new=1015%40trunk&old=1006%40trunk
Не забудьте выполнить SQL патч — trac.lsdev.ru/livestreet/browser/trunk/install/convert_0.4.2_to_0.4.3.sql
86 комментариев
сегодня займусь экспериментом с установкой. Надеюсь все станет хорошо.
Наконец-то «горячие» темы с тремя сотнями комментариев под крылом перестанут выглядеть монстрами из старого ужастика.
А еще для полноты картины покажите, какой конструкцией выводится пагинация в tpl.
PS Также возникает ошибка:
Notice: Undefined index: count in ...../classes/actions/ActionBlog.class.php on line 657
Тестируя, на Денвере, получилось установить. Все отлично и все нравится! Спасибо макс, то что нужно :)
Нюанс,
max_execution_time = 30; Maximum execution time of each script, in seconds
ставим 600
memory_limit = 128M; Maximum amount of memory a script may consume (128MB)
ставим больше, иначе, как у меня выдало ошибку в течении работы скрипта, пришлось запускать заново.
После, возвращаем показатели назад.
Сначала не понял как оно «дробит» на страницы по количеству комментов,
( $config['module']['comment']['nested_per_page'] = 50; )
оказывается, что функционал считает «ветви», точнее «корневые элементы».
Топик получается в разбивке, допустим, на 2 страницы (1, 2 страница):
Комментарии датированы, сверху-вниз,
1 страница: с 15 июля по 26 декабря
2 страница: с 10 мая по 15 июля
А д.б. наоборот. Это только у меня?
на первой странице самые последние комменты
Хм… У меня обратная ситуация — на первой странице более старые комментарии, а на последующих — более новые.
При этом, комментарий так и находятся в «состоянии добавления» («затененный», с вращающимся «loader'ом»). Новый комментарий становится видимым только при обновлении страницы браузером.
Понимаю, что какая-то проблема с аякс, но «куда копать» не знаю. Можете что-то посоветовать?
По добавлению, что на этой строчке trac.lsdev.ru/livestreet/browser/tags/0.4.2/classes/actions/ActionBlog.class.php#L789? Такое чувство, что там прописан 'json' в результате не законченного ранее проведенного апдейта.
Но, теперь при добавлении комментария выскакивает красное аякс'овское окошко об ошибке (англ. «пожалуйста, повторите еще раз»).
При «браузерном» обновлении страницы комментарий появляется…
Принято последние комментарии переносить не на первую страницу, а на последнюю.
Макс, можно настроить, чтобы это выдавало вот так:
www.championat.ru/football/_euro/article-65267.html
тогда уже по этой логике, нужно выдачу комментариев(старые-новые) строить не "сверху-вниз", а "снизу-вверх"
:(
Логика следующая (схематически, для трех страниц): ↑\↑\↑ (стрелочками указано направление от новых к старым).
Т. е. — новый коммент помещается в самый низ 1-й страницы, при этом перемещая верхний коммент с самого верха 1-й страницы в самый низ 2-й страницы и т. д. по цепочке…
ort, может, этим вариантом и сделать, как люди ниже в комментах просят? И область комментирования самого топика переместить снизу наверх. А после коммента топику кидать юзера на последнюю страницу. Да, будет без аякса, не однообразно, но зато удобно.
Держать на первой странице самые новые комментарии можно только в том случае, если комментарии идут снизу вверх. Иначе при переходе на другую страницу в мозгу у человека идет логический разрыв. Он и так мозг напрягает, чтобы понять, что такое лайвстрит, рейтинг и блоги, такими комментами его вообще добить можно и он уйдет с сайта навсегда.
иначе мозг не у всех но вынесет, и будуд долбать не тебя, а меня, думая что это я такое придумал :)
Навык чтения комментов у человека уже выработался, нельзя его ломать. У лайвстрита главная фишка — легкость, все на кончиках пальцев — дизайн, аяксовые комменты, общее юзабилити — все легко, все летает, приятно. А эти комменты в концепцию резко добавляют стресс.
кнопка Комментировать д.б. после Комментариев, имхо
Здесь, имхо, единственным вариантом является отказ от древовидной структуры при использовании постраничности.
PS Или все-таки каким-то образом можно совместить кнопку апдейта с постраничностью? Возможно, вопрос и глупый, но я пока новичок в LS.
не встречал ресурсов с таким функционалом
дай возможность, пользователю выбирать, сделай переменную в конфиге — чтобы можно было вывести и так и так
То что на сайте выдача комментов д.б. вот так — www.championat.ru/football/_euro/article-65267.html
это привычно для большинства, я понимаю — что можно заставить «переучиться», но мне кажется это лишнее. Ты видел моих дам.
То что номер страницы с последними комментами имеет номер «1», так это норма для ЛС — посмотри какой номер страницы у списка топиков с последними из них, верно, тоже «1»
я не хочу и с тобой спорить, но уже писал, ты не читаешь:
ведь топики именно так и выводятся.
2) разбивка на страницы по устоявшемуся, привычному виду д.б.:
Форма вывода (только!) сверху-вниз
Старые комменты — 1 страница
Новые комменты — последующие страницы (2,3, т.д.)
При открытии именно Топика — выводится 1 страница с комментами
При клике на «Прямой эфир» — выводится страница та, на которой размещен коммент(исходя из ветви)
1. прежнего вывода комментов — сверху-вниз
2. прежней нумерации страниц — самое свежее на первой странице
В итоге для пользователя ничего не меняется, всё как и раньше.
чтобы самое свежее на последующих,
и все будет просто Замечательно! И хлопцы сыты и кони запряжоны :)
Очень-очень важно.
Время комментариев по страницам — от конца к началу.
Время комментариев внутри страницы — от начала к концу.
Ведь в списке топиков так и есть: последний топик в самом верху.
То есть когда последний комментарий оказывается на последней странице.
издеваеетесь??! не нужно таких шуток! убить жизнь на сайте)?
Единственный способ не скакать во времени — делать последний коммент на последней странице. Пи по умолчанию именно последнюю страницу комментариев под постом открывать.
если в одну страницу смотреть, то достаточно нажимать на циферку справа, что бы увидеть все новые комментарии.
А в постраничном режиме? надо пройтись по всем страницам и увидеть что там новое? на каждой? а если страниц 30, и на каждой по 3 новых коммента? как мне их увидеть все?
Наверное есть смысл делать комментарии вообще без деревьев, просто по дате.
Или вытаскивать на первые места те ветки комментариев, в которых произошли изменения, но тогда очерёдность беседы превратится в еще больший ужас…
вообще не очень понятно, нафига нужна эта постраничность, когда можно просто сразу сворачивать ветки и грузить их аяксом например нажав на плюсик, как в жж. хотя там и постраничность есть /*чешет затылок*/
еще новей комментарий
новый комментарий
— ответ
— ответ
и т.д. и по чуть чуть начинают уходить в архив на вторую и третью страницу. Кто ответил на второй странице там же и получает ответы, своего рода вынос мозга, но иначе никак, постепенно по мере поступления новых комментариев ветка будет смещаться еще глубже и искать ее еще сложней будет, остаётся надежда на почтовые уведомления, кстати при постраничности в почтовое уведомление урл передаст?
trac.lsdev.ru/livestreet/changeset/1014
я её сделал из-за одного крупного проекта на ЛС, где число комментов доходило до нескольких тысяч, что прямым образом отражалось на времени генерации страницы.
Но видел, не раз, комментов под 400, через один забитых фотками, в некоторых по несколько штук.
Не буду говорить о времени загрузки этой страницы через диал-ап, но трафик пользователей кто не имеет анлима, можно пожалеть. Плюсы от этой фичи есть. Проблема в вашем понимании, что вы не видели сайты на лс с реально активным комментированием.
Кому нужна эта опция, тот включит, а процентов 99 — даже и не подумают, по причине ненужности. Зачем волноваться тогда?
да вот, через неделю перехожу на 0,4,2 и там будет юркин «Поток» (который требовали усиленно пользователи и которым мне пришлось нагружать randomtoy'я)
сидел и дуумал, что будет с топиками, которые будут постоянно на виду. Этож придется постоянно «пасти» когда отключать комментирование, чтобы топик нормально загружался…
А тут Орт, вчера, мегачеловек. С функционалом разбивки. Мечты сбываются :)
Ваш пример с четырьмя сотнями картинок также не выдерживает никакой критики, поскольку для подобных ситуаций разумные люди давно используют паттерн ленивой загрузки. Странно, что в сообществе разработчиков мне приходится говорить о таких прописных истинах. На дворе 2010 год, пора бы уже прекратить думать категориями конца девяностых.
Впрочем, в ЛС и так есть что покритиковать, некоторые вещи реализованы, мягко говоря, странно. Другое дело, что говорить об этом смысла нет — всё равно критика не будет услышана.
В этом движке самым поразительным образом сочетаются интересные элегантные решения и элементарный непрофессионализм. Чтобы не быть голословным и предупредить возможные вопросы, предложу обратить внимание на то, как реализованы комментарии и добавление в избранное.
Собственно пагинацию можно переделать по типу микроблогов/твиттера без больших усилий.
Не могу также сказать что мне нужен/ненужен такой функционал. Собственный сервер позволяет не думать о нагрузке в 500-700 комментариях, даже с видео роликами.
И представьте себе каким образом отслеживать эти ответы, если функция (та же кнопка апдейта) не поддерживается?
PS ort, в следующем апдейте сделай, плиз, возможность редактирования комментов. Сильно не хватает этой фичи.
Все же будет удобно читать первыми самые лучшие комментарии…
pix.am/CSuvl.JPG
max_execution_time = 300000;
memory_limit = 10280M;
на втором часу работы перестройки комментариев появляется ошибка
Fatal error: Out of memory (allocated 1772617728) (tried to allocate 6144 bytes) in Z:\home\ls\www\forum\engine\lib\internal\ConfigSimple\Config.class.php(179): runtime-created function on line 1
Подскажите как избежать этой ошибки. С учетом уже существующих настроек вряд ли действительно не хватает памяти.
БД сайта >200Mb, треды комментариев — от 300 до 2000, 500 в среднем.
Что делать? Может, есть standalone-решение, чтоб остановить все разделы сайта и отдать все ресурсы на перестройку?