Новый сайт, теперь на вордпрессе

Я начал вести сайт давно, где-то в 2000 году. Сперва это были простые странички, шапка с навигацией и iframe с подгружаемым html файлом. Одна из страниц была с записями происходящего, некое подобие блога (тогда ещё небыло слова блог).

Потом, когда я заканчивал институт и занялся веб-дизайном, понял, что пора переделывать сайт. Начал делать вторую версию. Он мне быстро разонравился — я понял что это тупиковый способ вести сайт. Поэтому я сделал новый — тупо страницу с огромной иллюстрацией и списком ссылок на картинки, просто чтобы где-то их хранить, а блог стал вести в LiveJournal, он набирал популярность и был элитным роскошеством по инвайтам.

Когда мы организовались в студию, сайты со сложным программированием мы с коллегами делали на дотнете и пхп. Для простых сайтов иногда на языке Parser — по сути внедряющаяся в html разметка кодом, добавляющая циклы, функции, шаблоны и работу с базой данных. Это вполне себе язык, простой как бейсик, но уже тогда он слабо развивался. Достаточный минимум с известными ограничениями. Я его выбрал за простоту, чтобы сделать себе сайт, откладывать уже не хотелось. Сперва там были только галереи с картинками.

ЖЖ стал потихоньку отмирать, я написал на сайте простой блог, стал дублировать записи туда. Сайт я совершенстовал и менял часто, иногда даже чаще чем писал в блог на этом сайте. Были периоды, когда я раз в месяц достаточно сильно менял оформление, просто для развлечения. Потом я начал улучшать блог. И это оказалась ужасная мука — мне захотелось сделать тэги. Сперва, разумеется, я сделал просто (заповедь разработчика: «сначала сделай просто, чтоб жило во времени, и потом улучшай») — приписывал к записи БД поле «tag», и вот все мои посты обзавелись возможностью иметь один тэг (правильнее назвать это Рубрикой).

Начал делать нормальную структуру тэгов: таблица уникальных записей, таблица уникальных тэгов и таблица соответствий записи к тэгу. Много соответствий у записи — много тэгов. Это оказалось задачей посложнее, но её я сделал.

А вот третье усложнение мне далось не до конца. На вид просто — надо было сделать, чтоб при редактировании тэгов у записи в блоге они правильно перезаписывались. Оказалось что это не простая задача. На Parser она превращалась в головоломку на подобие языка Brainfuck. Кратко — в момент сохранения записи мне надо было проверить все ли тэги в порядке, появились ли новые, записать новые, выбрать старые, удалить старые, проверить появились ли после этого неиспользуемые тэги, удалить неиспользуемые, проверить тэги на дубликаты а соответствия на повторения. И всё это с синтаксисом, не предназначенным для сложной логики (массивы, например, обходятся с помощью указателя).

Вот например кусочек месива. Можно разглядеть цикл в цикле с проверками и ползанием указателем по массиву:

# Ищем дубликаты в таблице пост-тэг
# если находим дубль который ещё не записали 
#в таблицу на удаление, то дописываем

^for[i](0;$all_tagblog){
 ^all_tagblog.offset[set]($i)
 $check_id($all_tagblog.id)
 $check_post_id($all_tagblog.post_id)
 $check_tag_id($all_tagblog.tag_id)
 ^for[j]($i;$all_tagblog){
 ^all_tagblog.offset[set]($j)
 ^if( ($all_tagblog.id != $check_id) && 
 ($all_tagblog.post_id eq $check_post_id) && 
 ($all_tagblog.tag_id eq $check_tag_id) ){
 ^if(!^tagblog_to_delete.locate[id;$all_tagblog.id]){
 ^tagblog_to_delete.append[$all_tagblog.id]
 }
 } 
 } 
}

Написал. Кода получалось много, больше чем остального сайта. Но, иногда срабатывало не правильно!

На поиск ошибки меня уже не хватило. Я не настоящий программист, а упорный веб-дизайнер. И главное — стало очевидно, что пора менять инструмент. В студии мы тем временем уже сменили дотнет с пхп на Symfony, а симфони сменили на Ruby-on-rails, а простые сайты стали делать на WordPress и Drupal.

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

Выбор прост — уже сейчас вордпресс некто не догонит по скорости роста, хотя он и далёк от совершенства. В нем неудобно работать с тысячью записей (а заводить из них custom post type давно можно, но всё ещё рано), неудобная работа с медиафайлами и много чего нет «из коробки». Но, всё, что в нем уже реализовано, закрывает 90% необходимых потребностей, чем сильно экономит время.

За три дня я легко мигрировал контентом (благодаря тому что на старом сайте у меня был RSS) и оформлением (весь CSS и куски для темплейтов давно продумал). Потом, 5 дней в борьбе за правильный вывод и доводка.