Техническая сторона проекта Все бланки

 

 

 

 

 

 

 

Как и любая хорошая идея, идея создания сайта пришла после того, как я пытался найти нужный бланк для сдачи отчетности для ЧП. Стоит сказать, что украинские сборники бланков напоминают сайты конца девятосных годов, где искать приходится браузерным поиском по Ctrl+F. После недолгих раздумий, решил сделать сайт с простым названием «Все бланки»

Первая версия была написана буквально за два выходных. Структура была классической: сущность «Бланк», которая привязана к сущностям «Категория» и «Гос орган». С виду все было красиво, код — по правилам. Но когда я начал сам наполнять каталог, понял насколько это не удобно и криво с точки зрения контент менеджера. Пришлось внести изменения.

В результате осталось две сущности «Категория» и «Бланк». Вторая соответственно привязана к первой. Категория работает с помощью дерева и может иметь несколько корней. В админке иммеется возможность сделать неограниченное число привязок от категории к бланкам. На данный момент имеется два корня в категориях — собственно «Категория бланка» и «Гос орган бланка» (второй пока что не показывается во фронтенте).

У каждого бланка стандартный набор атрибутов, метатеги вводятся вручную.

При загрузке файла система отдает человеческое название браузеру например «Договор на создание полиграфической продукции.rtf», а не «file_0023.rft». Однако данный функционал оказался несколько нетривиален по реализации. Пришлось использовать определение пользовательского браузера, чтобы отдавать название файла в правильной кодировке и urlencode.

При на каждой странице просмотра бланка, устанавливается заголовок Last modified. О нем написано в помощи Яндекса для вебмастера и есть хорошая статья на хабре. Сказано — сделано, причем одной строчкой:

header("Last-Modified: ".gmdate("D, d M Y H:i:s", strtotime($model->updated))." GMT");

Только в моем случае проблемой оказалось, что неправильно пишется дата в updated и все документы были помечены датой изменения еще в апреле, из-за чего Яндекс особо сайт не жаловал.

Аудитория сайта — 90% Украина, оставшиеся 10% — российские пользователи, по всей видимости залетные.
Вопреки статистике, что в Украине больше почитают Гугл, 80% занимает Яндекс, 11% гугл и оставшиеся 9% разные местные поисковики.

Техническая сторона:
Движок сайта, разумеется, самописный. В качестве фреймворка был выбран Yii.  С ним знаком достаточно давно, проблем не возникло, работает быстро и незаметно.
На рабочем сервере весь js и css сжимается с помощью пакера CClientScriptMinify.
Для определения браузера пользователя используется библиотека Browser.php — очень и очень функциональная.
Многие статически куски кешируются с помощью APC.

  • http://rmcreative.ru/ Sam Dark

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

    Жаль, что только для Украины. На Россию расшириться нет планов?

    • http://sergebezborodov.com Serge Bezborodov

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

      Спасибо за отзыв!