Импорт s9y в wordpress

Больше историческая запись. Давно зародилась идея перевести текущий журнал на wordpress. В s9y совсем примитивная система борьбы с нежелательными сообщениями (junk). Небольшое сообщество пользователей, небольшой набор дополнений.

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

Однако процесс перехода не оказался таким простым как первоначально предполагалось. Хотелось сохранить историю комментариев, сохранить предыдущие гипертекстовые ссылки, ссылки на RSS ленту. Большим подспорьем послужило дополнение для импорта s9y в wordpress, которое потребовалось допиливать напильником. В частности при его текущем алгоритме некорректно мигрируют комментарии, вызывая ошибки duplicate violation.

Несколько десятков прогонов миграции и результат не заставил себя ждать. По времени вышло в районе 4-6 часов. Из некритичного хочется перенести стили.

CSS: pre + overflow

Очередной этап дневника пройден. Исправлен неприятный жук в CSS, из-за которого дневник разъезжался по швам в современных браузерах (firefox 3.x, konqueror, …). Верстальщики советовали явно указать ширину элемента <pre> через CSS, что не применимо по соображениям масштабируемости на различные разрешения экранов. Пришлось потратить в общей сумме около трех часов, чтобы найти решение, включая размещение и просмотры отзывов на weblancer.net.
Решение было найдено в явном задании table-layout для центрального элемента. Более детально решение рассмотрено на stackoverflow.com, за что ему отдельное спасибо.

Протестированные браузеры:

  • Mozilla Firefox 3.0.15
  • Konqueror 3.5.9
  • Opera 9.27
  • IE 6.0
  • Epiphany 2.22.2

Для истории как это выглядело ДО и как стало ПОСЛЕ
Feedback are welcome.

s9y GeSHi

После подключения к движку дневника дополнения GeSHi валидность XHTML была перечеркнута кучей ошибок следующего вида

Line 149, Column 54: document type does not allow element "div" here; missing one of "button", "ins", "del" start-tag

…bash geshi" style="text-align: left"><span style="color: #7a0874; font-weight

В зависимости от активности использования данного дополнения на страницах блога validator.w3.org сообщал от 5 до 20 ошибок (см. снимок экрана). Ошибка была связана с тем, что после элемента <pre> вводимого мною в ручную следовал элемент <div>, который добавлял GeSHi. Например,

<pre><div class="bash geshi" style="text-align: left"><span style="color:

Таким образом оформлено большинство постов, связанных с copy&paste текста, требующие моноширинного шрифта. В ход пошла крупная артиллерия в виде анализа исходного кода. Как оказалось, GeSHi поддерживает три режима обрамления

[geshi lang=php]    /**
     * The type of header to use. Can be one of the following
     * values:
     *
     * - GESHI_HEADER_PRE: Source is outputted in a "pre" HTML element.
     * - GESHI_HEADER_DIV: Source is outputted in a "div" HTML element.
     * - GESHI_HEADER_NONE: No header is outputted.
     *
     * @var int
     */
    var $header_type = GESHI_HEADER_PRE;
[/geshi]

По умолчанию $header_type установлен в использование элемента <pre>. Однако в файле serendipity_event_geshi.php тип выставляется в GESHI_HEADER_DIV, о чем также свидетельствует вышеприведенная ошибка. Поскольку все посты в моем случае были обрамлены элементом <pre> и дополнение nl2br отключено для постов я остановил свой выбор на режиме GESHI_HEADER_NONE. Однострочная заплатка:

[geshi lang=php]--- plugins/serendipity_event_geshi/serendipity_event_geshi.php.orig    2009-03-30 13:23:13.000000000 +0400
+++ plugins/serendipity_event_geshi/serendipity_event_geshi.php 2009-03-30 13:35:13.000000000 +0400
@@ -188,7 +188,7 @@
             $showln = (strtolower(substr($matches[2],-1)) == 'y') ? TRUE : FALSE;
         }
         $geshi = new GeSHi($matches[3], $geshilang, $pathtogeshi);
-        $geshi->set_header_type(GESHI_HEADER_DIV);
+        $geshi->set_header_type(GESHI_HEADER_NONE);
         if ($showln)
             $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
         // Have to get rid of newlines.[/geshi]

После этого валидность верстки вернулась к своим истокам. Обидно, что авторы дополнения GeSHi не вынесли функциональность изменения режима обрамления в настройки.

История дневника

Бестолковые боты сделали свое грязное дело. Отныне в комментариях появилось обязательное наличие captchи.
Все изменения связанные с дневником вынес в отдельную категорию «История дневника»

Оформление blog(a) #2

С предыдущего измения стиль блога претерпел очередные измения. Основным из них можно назвать удаление из стиля тега <pre> явно заданной ширины элемента. Теперь даже на небольших разрешениях блог должен корректно масштабироваться (пример). На текущий момент проблема по прежнему остается на старом ослике IE, но, к сожалению, я не знаю как ее решить (any ideas are welcome).

ps: Итоговый патч для темы blue.

UPD: webmasters comments are welcome 😉

Оформление blog(a)

Изменил оформление страниц. Что было ДО, что стало ПОСЛЕ. Основная цель — удобство прочтения. Возможно, покажушь ретроградом, но, на мой взгляд, максимальная близкое к plain text оформление максимально подходит для чтения.
В качестве бонуса дописал в стили описание для тега <code>. side effect(ом) получил поломанные заметки, т.к. <code> использовался вовсе не по назначению в них. Сижу ремонтирую.