Архив рубрики: WordPress

Statt zu schlafen

Учёт домашних доходов с расходами — сплошное расстройство. Теперь вот вместо того, чтоб спать, пытаюсь вспомнить, что же умею делать за деньги, потому что на одну зарплату прокормить семью вообще нереально.

Могу:

  • Программировать на Перле — как древние CGI-приложения, так и современные, с использованием фреймворков Mojolicious, Dancer, Catalyst.
  • Программировать на PHP: в основном допиливать существующие приложения, а не писать с нуля что-то большое.
  • Настраивать CMS Drupal и WordPress, а также дорабатывать их темы оформления.
  • Настраивать и дорабатывать Open Journal Systems, включая реализацию многоязычности имён — делал это в OJS 2.4.2, 2.4.7.1, 2.4.8.1, думаю, и в Open Conference Systems смогу реализовать.
  • Кроссбраузерно верстать веб-страницы.
  • Немножко программировать на Руби (в том числе, с использованием Ruby on Rails) — наверное, на юниорском уровне.
  • Немножко программировать на ЯваСкрипте — как голый JavaScript, так и с jQuery.
  • Постоянно внушать коллегам необходимость использования багтрекера и системы контроля версий.
  • (хоть и не считаю это основными профессиональными навыками) фотографировать, петь, аккомпанировать на шестиструнной гитаре, водить легковой автомобиль, быть Дедом Морозом, набирать ноты в MuseScore и LilyPond — медленно, но красиво.

1000 рублей

Хочу от 15 USD / 1 kRUB в час.


Statt zu schlafen (нем.) — вместо того, чтобы спать

Из одной бочки разливали

Как и ожидалось, Open Conference Systems, якобы не имеющая русской локализации, при должном применении напильника вполне способна использовать великий и могучий. В каталоге lib/pkp даже можно найти русские локализационные XML-файлы. Вообще весь этот каталог lib/pkp — общий и для OCS, и для OJS, что видно по гитхабу. Правда, в свежей версии Open Journal Systems переводов всё-таки побольше. Похоже, OCS, как не особо активно развиваемый продукт, содержит в себе копию lib/php трёхлетней давности, во всяком случае файлы lib/php/locale/ru_RU/*.xml — как раз 2012 года. Надо провести эксперимент — подсунуть в древнюю OCS 2.3 переводы из свежей OJS 2.4.7-1 — скорее всего, хуже не будет. Я пока заметил только один недостаток, мешающий тупо скопировать локализационные файлы: “User Home” переведено как «Мои журналы» — как-то неправильно показывать такое на сайте конференции.

Кстати, коллеги, кто-нибудь пробовал использовать Open Conference Systems для создания сайтов конференций? WordPress и mojowka для этого плохо подходят (хотя можно и с ними — я так делал) — хочется всё-таки использовать специализированное решение, избежав при этом танцев по граблям.

Он и в третий раз ходил за ёлкой… И добыл её!

Давно хотел улучшить ильменский сайт, да всё руки не доходили. Уж подумывал и переписать совсем. Что только не пробовал — и тяжёлый перловый фреймворк Catalyst, и написанные на PHP системы управления сайтами — Друпал да ВордПресс. И всё никак не получалось дойти за какого-то осмысленного результата. В итоге всё свелось к переписыванию на Mojolicious::Lite — это всяко веселее, чем набор древних CGI-скриптов.

Начал в мае 2011 года — бросил. Подобрал в мае тринадцатого — снова бросил. Пришёл май пятнадцатого — снова взялся и как-то всё-таки дошёл до завершения первого этапа: воссоздал на моджо всю функциональность прошлого сайта, который был запущен ещё в 2003 году. Ну и перекрасил попутно. Свежий сайт да ещё и на новом железе с другими ОС и веб-сервером работает гораздо шустрее старого: отдаёт 50 разных страниц в секунду, а не две. Кстати, Друпал с ВордПрессом (правда, без нормального кэширования) работают ещё медленнее, чем старый сайт.

Новый сайт лежит на test.ilmeny.org, в выходные потестирую, в понедельник, наверное, запущу его вместо старого.

test.ilmeny.org

Если увидите на свежем сайте что-то неправильное — сообщите, пожалуйста.

P. S. Попутно выяснил: боевой режим в Mojolicious называется не production, как я почему-то думал, а deployment всё-таки production, но при запуске через Starman выставляется переменная окружения PLACK_ENV=deployment, которая с попадает в app->mode.

Из вордпресса в гугл-плюс — всем

WordPress умеет автоматически делать кросспосты посылать копии новых заметок в популярные социальные сети. С недавних пор к таким сетям добавился и Google+ (раньше для отправки заметок в гуглоплюс нужна была платная версия плагина Social Network Auto Poster). По умолчанию создаваемые в гуглоплюсе записи доступны не всем, а только френдам, точнее тем пользователям, кто включен в ваши круги. Я неоднократно пытался найти в вордпрессе способ изменить круг читателей — всё никак не мог. Оказалось, всё описано в документации — настройки публикации скрываются не в вордпрессе, в самом Google+, на странице Settings → Apps & activities.

MapBBCode — в вордпрессе

Для вставки использующих библиотеку Leaflet подвижных карт на сайт, работающий под управлением вордпресса, есть разные пути: можно, например, вставить нужный HTML-код прямо в текст страницы — оно будет работать (вот пример), но ковыряться в коде каждый раз, когда нужна карта — неудобно. Такой метод подойдёт лишь тогда, когда надо вставить одну карту и забыть о ней.

Если же карт много, можно воспользоваться монстрообразным плагином Leaflet Maps Marker — он многое умеет, но страшен. Меня пугает обилие кнопочек, ссылочек и призывов перейти на платную версию.

Нужен способ, позволяющий в удобном виде описывать карту и куда-нибудь эту карту вставлять. Питерский осмер Илья Зверев несколько дней назад написал библиотеку MapBBCode для встраивания карт на форумы. На форумах для форматирования текста часто используют команды разметки вида [tag]text[/tag], действующие аналогично тэгам языка HTML, основное их отличие, бросающееся в глаза — квадратные скобки вместо угловых. Подобный код используется и для описания карты в MapBBCode.

Такие же коды применяются и в вордпрессе — с их помощью можно, например, вставлять на страницы аудиозаписи, видеоролики, фотогалереи — подобная функциональность есть в могучем плагине Jetpack. Можно и карты вставлять — так сделано в уже упоминавшемся Leaflet Maps Marker.

Я попробовал минувшей ночью написать свой плагин — получилось. Теперь для того, чтоб вставить карту, достаточно написать

[map]55.16473,61.32601[/map]

вместо этого кода отобразится такая карта:

[map]55.16473,61.32601[/map]

Исходный код — https://github.com/shoorick/mapbb-wordpress, ZIP-архив — https://github.com/shoorick/mapbb-wordpress/archive/master.zip.

Смена шрифтов в теме Twenty Thirteen

В 2013 году в CMS WordPress появилась новая тема — Twenty Thirteen, которая достаточно хороша: написана с использованием HTML5, корректно ведёт себя на разных размерах экрана и не страдает обилием ненужных финтифлюшек. Но не обошлось и без ложки дёгтя: в теме используются взятые с Google Fonts шрифты Bitter и Source Sans Pro — они весьма хороши, но в них нет кириллицы. Понятно, что можно, создав дочернюю тему, поправить используемые в ней стилевые правила, указав нужные шрифты, однако хочется сделать всё правильно: и загрузить нужный шрифт, и избежать загрузки ненужного.

Поиск не дал готового решения (что, вообще-то, странно) — пришлось изобретать самому, руководствуясь тем, что нашлось. Итак, для замены шрифтов надо:

  1. Создать дочернюю тему;
  2. В стилевом файле style.css дочерней темы указать нужные шрифты;
  3. Отключить загрузку ненужных и добавить загрузку нужных шрифтов, добавив в файл functions.php дочерней темы такой код:
if ( ! function_exists('child_fonts_url')) {
    function child_fonts_url() {

        $fonts_url = '';

        $open_sans = _x( 'on', 'Open Sans font: on or off', 'child' );
        $open_sans_condensed
           = _x( 'on', 'Open Sans Condensed font: on or off', 'child' );

        if ( 'off' !== $open_sans || 'off' !== $open_sans_condensed ) {
            $font_families = array();

            if ( 'off' !== $open_sans )
                $font_families[] = 'Open Sans:400italic,400,700';

            if ( 'off' !== $open_sans_condensed )
                $font_families[] = 'Open Sans Condensed:300';

            $query_args = array(
                'family' => urlencode( implode( '|', $font_families ) ),
                'subset' => urlencode( 'latin,cyrillic' ),
            );
            $fonts_url = add_query_arg(
                $query_args,
                '//fonts.googleapis.com/css'
            );
        }

        return $fonts_url;
    } // function child_fonts_url
}

function disable_twentythirteen_fonts() {
    wp_deregister_style('twentythirteen-fonts');
}

add_action( 'wp_enqueue_scripts', 'disable_twentythirteen_fonts', 11 );
wp_enqueue_style( 'child-fonts', child_fonts_url() );

Здесь child — имя дочерней темы. Функция child_fonts_url списана с twentythirteen_fonts_url из темы Twenty Thirteen — изменены лишь используемые шрифты (имена шрифтов и переменных, список начертаний и наборов символов) да название функции.