Свободная веб-энциклопедия для любых IT-проектов на собственном движке

Введение


Когда я пытался продвигать свой последний проект (веб-чат), я столкнулся с тем, что о нем фактически негде написать. Ситуация касается не только wiki-проектов, а вообще всего рунета. Крупные сайты ведут такую политику, что Вы не можете написать о своем проекте — Вы должны либо купить рекламу, либо о Вас должен написать кто-то еще. Если рассматривать конкретно wiki-сайты, то даже на Лурк или Викиреальность попасть проблематично, не говоря уже о таком гиганте как Википедия. Хотя потом я нашел пару небольших wiki-порталов без цензуры, для которых написал два уникальных обзора на свой чат. Они меня и вдохновили на создание свободного wiki-ресурса для IT-разработок.

Зачем писать свой wiki-движок когда есть готовые?


Ну во-первых мне это было интересно. Создать готовый сайт по шаблону в несколько кликов — скучно и не заслуживает внимания аудитории. А новая разработка со своим интерфейсом вероятно активнее будет привлекать интерес. К тому же мне кажется проще написать код под определенные задачи с нуля, взяв за основу какой-либо фреймворк для упрощения разработки, чем переделывать нагромождения чужого кода под себя.

image

Подробнее о wikiclick.ru


Wikiclick.ru — это свободная веб-энциклопедия об IT-разработках. Здесь Вы можете написать о своем сайте, приложении, сервисе, игре или другой разработке, например о своем фреймворке или библиотеке и Ваша статья не будет расценена как спам. А навигатор автоматически создаст древовидное оглавление для Вашей страницы по h1-h6 заголовкам. На странице с Вашим проектом также будет доступно обсуждение в виде дерева комментариев. Созданную страницу можно будет найти в журнале версий, в поиске по сайту, выборке по указанным тегам, или в соответствующем разделе, к которому относится Ваша разработка. В обзоре проекта можно ограничиться лишь небольшим описанием, а сообщество со временем дополнит статью. Также Вы можете прикрепить картинки.

Сейчас модно делать мультиязычные сайты, но прошлый проект научил меня, что я понятия не имею как продвигать сайт в другой стране, и как его модерировать, когда знаешь только технический английский, поэтому я отбросил эту идею еще на старте. Хотя, возможно, я в дальнейшем реализую мультиязычность в самом движке.

О движке WikiClick


Сервер написан тяп-ляп — много дублирующегося кода, комментарии полностью отсутствуют, а некоторые строки написаны в обход методов фреймворка, например визуализация. Но в остальном я его причесал: он отлично работает и быстро настраивается под себя (если только Вас не смущает отсутствие админки). Вся разработка WikiClick заняла у меня около месяца.

Мне нравится, каким получился движок WikiClick — он компактный, красивый, быстро работает, код сервера уложился в 1000 строк. В журнал версий новая запись идет только в том случае если страница написана с другого ip или в другой день — этот механизм позволяет сохранять все ключевые версии страницы, не набирая кучу идентичных дубликатов с правками от одного пользователя. Свои комментарии сохраняются в сессию, и пока она не истекла, их можно отредактировать. Хорошая адаптивная верстка почти сходу налезла на мобильную версию. Обсуждение в виде дерева комментариев внизу страницы кажется более удобным чем на Википедии или на Лурке (Хотя я не являюсь активным участником этих проектов и мое мнение спорное). Использование HTML-кода в содержании страниц выглядит более гибким и скорее всего будет более привычно разработчикам. А навигатор по заголовкам получился гораздо проще тех, что я нашел в интернете, и работает на стороне клиента, не создавая нагрузку на сервер. Он выполнен на jquery и подходит для повторного использования, хотя требует от автора соблюдения последовательности заголовков:

if ($('.cords').length) {
  $h = 'h1, h2, h3, h4, h5, h6';
  $ah = $('article').find($h);
  if ($ah.length >=3) {
    $('.cords').html('<div>Справка</div><ul class="level0" data-level="0"><ul>');
    $ol = $('.level0');
    $str = '';
    $.each($ah, function(i, elm) {
      if (i < $ah.length-1) {			
        a = $ah.eq(i).prop('tagName'); b = $ah.eq(i+1).prop('tagName');
      }
      $(this).html('<selection id="H'+i+'">'+$(this).html()+'</selection>');
      $str += '<li><a href="#H'+i+'">'+$(this).text()+'</li>';
      if (i < $ah.length-1 && a>b) $str+='</ul>';
      if (a<b && !(a=='H1' && b=='H2')) $str += '<ul>';
      if (i == $ah.length-1) {
        for (i = parseInt($(this).prop('tagName').substring(1)); i>=3; i--) {
          $str += '</ul>';
        }
        console.log($str);
        $ol.html($str);
      }
    });
  }
}

P.S.: надеюсь, мой велосипед смог Вас заинтересовать (будем считать это бета-тестом).

Ссылки


wikiclick.ru
Проект на GitHub

Похожие публикации

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 11

    0
    Опыт показывает, что ресурсы (вики, форум) «обо всём» плавно превращаются в помойку, на которой Вася из Тамбова пишет «я сделал свою игру быки и коровы», а Коля из Сургута начинает гадить внутри статьи и рекламировать свой «хомяк на народе».
    Рано или поздно, на таком ресурсе становится некомфортно и приходится вырабатывать свод правил, добавлять модераторов и включать репрессии.
    Как планируется избежать подобного вектора развития?
      –1
      У меня принимаются все разработки.
      +1
      Комментарии на сайте про дроп тейб и алерт — это незапланированные тесты на безопасность или собственный прикол?
        0
        это кулхацкеры
        +1
        wikiclick.ru/dev/JS-MVC — чекайте, надеюсь правильно всё сделал и мой движок наконец-то кто-то увидит)
          0
          Дизайн интерфейса нравится. Приятно глянуть, особенно после омерзительных скруглений повсюду.

          Сам давно думал о разработке и запуске собственного вики-движка, но на PHP, потому что он уже настроен на сервере. А тут на JS, всё перенастраивать, эх. Но буду иметь ввиду, может хватит энтузиазма и на это.

          Ещё бы поддержку PostgreSQL!
            +1
            Рекомендую попробовать node.js с фреймворком express. на мой взгляд там все реализовано гораздо лучше чем в PHP, разработка на нем приятнее, а обучение не требует много времени, если уже знаешь js хотя бы на базовом уровне. Плюс для него много готовых плагинов для совершенно разнообразных штук.
              0
              Я всё ещё не понимаю зачем для статичных сайтов типа блогов, вики, лендингов и прочее поднимать «реалтайм» сервер, который всё равно будет скорее всего спрятан за nginx, если можно использовать для этих целей шаблонизатор, умеющий во всё, что нужно этим сайтам (БД, какие-нибудь внешние соединения, работа с файловой системой).

              Вот если нужен чат, если нужно мониторить котировки, например, или мессенджер делаем, или виджет самообновляющихся комментариев — вот там всё это было бы круто.
            0
            Был баг в алиасах, я пофиксил ссылки и заменил пробел (%20) на нижнее подчеркивание. Так что не пугайтесь если не можете найти свою статью, она доступна просто по другой ссылке — чекайте журнал изменений
              +2

              Аргументация "во-первых мне это было интересно" хороша для хобби-проекта. Если вы хотите, чтобы на него посмотрели, нужно хотя бы показать, что именно вам было интересно делать. "написан тяп-ляп — много дублирующегося кода, комментарии полностью отсутствуют, а некоторые строки написаны в обход методов фреймворка"? как-то сразу возникает вопрос — а не зря ли вы вообще потратили время при наличии такой массы wiki-движков?


              Извините, если прозвучало обидно. Хотел донести смысловую часть, а не эмоциональную.

                0
                Вы правы, это хобби-проект. На самом деле код не на столько плох, как вы думаете. Он компактный и в нем очень легко разобраться или внести изменения, а также прост в установке.

                Добавлю, что где-то неделю назад я залил последнюю версию движка на гитхаб, с админкой и всеми необходимыми админскими функциями, где также добавил возможность прикреплять картинки-превьюшки для статей, которые будут отображаться в поиске, а также в разделе статьи и фильтру по тегам. И еще в новой версии есть Закладки для страниц, и улучшены Умные Журналы, где в частности добавлены интерактивные ссылки на комментарии.

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

                Добавляем к этому:

                • грамотную простановку метатегов;
                • отсуствие url-дубликатов;
                • быструю загрузку страниц;
                • валидную верстку;
                • готовый robots.txt;

                и получаем отличную индексацию в русском сегменте страниц сайта на этом движке: можете убедиться в этом сами.

                Также в моем движке легко будет разобраться даже непрограммистам: ведь код сервера — это небольшой файл в 1200 строк, и для того чтобы внести правки нужно только найти соответствующий роутер. Для вышеприведенной ссылки это следующая строка кода:
                app.get('/'+encodeURIComponent('тег')+'/:tag/'+encodeURIComponent('страница_')+':page', TAG);

                Как видим, используется функция TAG для обработки этого URL, этот же метод будет использоваться для обработки URL /тег/хабр/ (который не явно выводит первую страницу).

                PS: интересно, когда веб-мастеры выбирают движок для сайта, они рассматривают вообще что-то кроме PHP?

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

              Самое читаемое