Скрипт сворачивания комментариев на хабре

    Добрый день всем. Я насчёт комментариев к статьям и их длинных и глубоких веток обсуждений, которыми они часто наполняются. Не знаю, как к ним относятся остальные участники сообщества, но у меня часто начинает плавиться мозг от объемов переписок между участниками и отсутствия возможности хоть как-то снизить этот поток информации.

    Потому и был написан маленький юзерскрипт, добавляющий две простых фичи:
    1. Возможность свернуть-развернуть ветки обсуждений;
    2. При открытии страницы, автоматически будут свёрнуты все комментарии выше третьего уровня, за исключением тех веток, где есть непрочитанные вами сообщения, а также тех случаев, когда вы переходите к какому-то конкретному комментарию в статье через ссылку на него.

    Пример нового заголовка комментария, ответы к которому были свёрнуты:


    Таким образом, мы автоматически отфильтровываем глубокие ветки обсуждений, что сильно облегчает беглый анализ комментариев, но, при желании, мы можем быстро развернуть какую-то из веток и почитать остальные комментарии, если тема оказалась интересной.

    Скринкаст работы скрипта



    Установить скрипт, а также посмотреть исходный код, можно здесь:
    greasyfork.org/ru/scripts/6744-habrahabr-collapsible-comments

    Чтобы установить скрипт, надо иметь небольшой плагин к браузеру:
    Для Google Chrome надо будет установить расширение Tampermonkey.
    Для Firefox, как я знаю — Greasemonkey.

    P.S. Вообще, если я просто не в теме насчёт чего-то из основного функционала хабрахабра, облегчающего чтение большого количества комментариев, то прошу прощения: я тут новичок, и еще не так много знаю.

    P.P.S Если есть желание автоматически скрывать другой уровень веток (первый, например), то в самом начале скрипта есть переменная HIDE_LEVEL, через неё и можете теперь установить тот уровень комментариев, который вам хочется скрыть. Скриншот.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 35
    • 0
      Имхо лучше оставлять текст комментария, который сворачивается.
      Это ожидаемое пользователем поведение.

      P.S. Неожиданная картинка к посту :)
      • 0
        Просто хороший пример большой беседы, которая теперь свёрнута по умолчанию)

        Насчёт «оставлять текст комментария, который сворачивается» — так оно и работает, скриншот просто маленький)
      • 0
        А можно опцию — чтобы все коменты по-умолчанию были свернутыми?
        • 0
          Если хабравчане оценят и тоже захотят подобную вещь — попробуем подумать, как это сделать каким-то простым способом) может даже подскажет кто-то идею)

          Я лично люблю простоту, не хочется сильно усложнять скрипт и расширять его множеством дополнительного функционала.
          • 0
            Не знаю, оценят ли. Я же стараюсь по возможности отказаться от комментирования. Но, как видите, не всегда выходит ) Вот и предложил — совмещая полезное с бесполезным ))
          • 0
            На метаязыке так:
            if(options.hideAllComments){
              $('#comments >.comment_item').hide();
              $('#comments .title').on('click', function(e){if(e.target === e.currebtTarget) $('#comments >.comment_item').toggle();}) //лучше тогглить класс globalhide каждого элемента
            }
            
            • 0
              Так-то, чтобы реализовать эту фичу — достаточно пару строк в коде скрипта поправить. Другое дело, как сделать так, чтобы там какие-то настройки хранились) без написания кучи кода.
            • +1
              В общем, я придумал простое решение без написания кучи кода. Обновите скрипт. Потом зайдите в редактирование его исходного кода, там в самом начале есть переменная HIDE_LEVEL, вот через неё и можете теперь установить тот уровень комментариев, который вам хочется скрыть. Скриншот.
              • 0
                Огромное спасибо! Сейчас буду тестировать =)
                • 0
                  HIDE_LEVEL 1,2… работают, но вот полностью скрыть видимо не работает — ни 0 ни -1.
                  • 0
                    Полностью скрыть не выйдет) да и зачем?
                    • 0
                      Чтобы не втягиваться в бесполезные (в основной своей массе) дискуссии. Одной силы воли не хватает =)
                      • 0
                        Тогда Вам нужно что-то более сильное, чем сворачивание комментариев.
                        Кардинальное решение:
                        var remove = function(){ $(this).remove(); };
                        $('#comment_text')
                          .click(remove)
                          .keydown(remove)
                          .change(remove);
                        

                        Если не поможет, то можно привязаться к кнопке «написать» и при её нажатии удалять текст комментария (потеря написанного комментария гораздо обиднее, чем исчезающее поле). Ещё можно с вероятностью 1/4 удалять из текста комментария некоторые символы или добавлять новые.
                        • 0
                          Ну в принципе я вижу инструмент (tampermonkey) — и могу с ним сам реализовать что-нибудь.

                          Что качается вашего скрипта — один сайд эффект заметил (не уверен что это реально исправить) — обновление и навигация по новым комментариям рушится.
                          • 0
                            Если Вы и правда про мой (а не автора поста) микроскрипт, говорите, то удаление поля ввода можно заменить на установку его в readonly.
                            • 0
                              Пардон, не думал что кто-то еще кроме saggid ответит, даже не глянул =)
                            • 0
                              Можете более подробно описать? У меня вроде нормально всё.
                • 0
                  Спасибо! Добавил еще на гиктаймс, там тоже скрипт работает.
                  • +1
                    И вам спасибо, обновил скрипт, добавил ему поддержку гиктаймс)
                  • +1
                    Спасибо большое, и очень бы хотелось дожить до того момента, когда на самом хабре реализуют что-то подобное.
                    • 0
                      Пожалуйста) Рад, что это помогло кому-то тоже)
                    • 0
                      Рискую быть заминусованным, но мне вот и так хорошо…
                      На ЖЖ комменты сворачиваются и постоянно разворачивать их неприятно, к тому же там они не разворачиваются на клиенте, а подгружаются с сервера, это 1-2 секунды тормозов.

                      Если на Хабре/ГТ и будут такое внедрять — пусть будет опцией!
                      • –1
                        Здесь всё проще) Вся огромная беседа, при непроходимости, в один клик разворачивается.
                      • 0

                        Шикарная вещь, поражён, что это ещё не встроено в функционал по умолчанию. А он ещё работает? А то я поставил себе в хром (точнее, яндекс браузер) и ничего не происходит.

                        • 0

                          Если честно, я как-то подзабросил это дело, сам забил на этот скрипт через время. Вполне возможно что он не работает уже как надо) Думаете, есть смысл поднять архивы и попробовать оживить его?

                          • 0

                            Ну вот меня, например, эта проблема мучает давно. Недавно чаша переполнилась и я полез искать решение. Ваш скрипт нашёл сразу. Больше ничего не нашёл. Получается, что он — единственная надежда страждущих :) Так что да, думаю, что он будет очень полезен для коммьюнити.

                            • +1

                              Ну что же, обновил скрипт для хабра текущей версии) Немного вёрстка изменилась, скрипт не работал как надо. Теперь работает.


                              Можете установить себе его новую версию отсюда же: https://greasyfork.org/ru/scripts/6744-habrahabr-collapsible-comments

                              • 0

                                Ура! Заработало! Чёрт возьми, это прекрасно. Спасибо огромное! :)

                                • +1

                                  Пожалуйста :)

                                  • 0

                                    Хм, а зачем он по умолчанию сразу сворачивает все ветки? Можно это настроить?

                                    • 0

                                      вы можете отредактировать код скрипта, там есть переменная, которую можно задать как вам удобнее: image

                              • 0
                                Спасибо. Полезная штука.
                                • 0

                                  Реквестируйте нативную имплементацию от авторов хабрахабра )

                                  • 0

                                    Уже, но они даже не посчитали нужным ответить. Поддержка у них аховая, конечно.

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