Might be interesting...

Wednesday, May 8, 2013

Plupload: при выборе файлов в Opera и IE ничего не происходит

Сколько раз перед вами ставилась задача создания загрузчика файлов? Сколько времени вы рассчитывали потратить на эту задачу? День?! Два?! Могу с уверенностью сказать, что даже за неделю написать что-то более-менее кроссбраузерное (учитываем мобильные браузеры) у вас не выйдет. Поэтому всегда есть смысл использовать качественные, проверенные временем и отлаженные готовые решения.

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

Версии с которыми я работал: Plupload 1.5.6 и Plupload 1.5.7.

Friday, February 22, 2013

Как отловить Fatal Errors в PHP

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

Программисты, которым не лень сделать пару кликов и ввести пару строк в файл .htaccess, на production окружении отключают вывод ошибок. Но а как быть, когда нужно вывести красивое сообщение пользователю, что что-то пошло не так, а разработчику, например, вывести trace выполненых операций?

На помощь приходит PHP функция register_shutdown_function. Напомню, что register_shutdown_function будет вызвана после выполнения скрипта, независмо от того выполнился он успешно, либо с ошибкой.

// callback function
function catchFatalErrors() {
    $error = error_get_last();
    // check if error is of type FATAL
    if (!empty($error['type']) && $error['type'] == E_ERROR) {
        ...
    }
}

register_shutdown_function('catchFatalErrors');

Saturday, July 7, 2012

WordPress: Выбираем посты только по Custom Field

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

Как вариант, будем хранить эту информацию в конкретном посте. Но забивать вручную в шаблоне идентификатор поста мы не будем, поступим следующим образом: добавим соотвествующий Custom Field для поста, по которому мы, соответсвенно, и будем в дальнейшем делать выборку.

Собственно код:
<?php query_posts('meta_key=is_action&meta_value=true'); ?>
<?php if (have_posts()) : ?>
 <?php while (have_posts()) : the_post(); ?>
В выборку попадут все посты, у которых установлен Custom Field "is_action"  в значении true.

Thursday, July 5, 2012

iFrame в TinyMCE или убираем очистку iFrame при вставке

После вставки iFrame в TinyMCE через HTML Source, при переходе в режим просмотра, iFrame удаляется. Что делать, если вы привыкли вставлять через iFrame ролики с YouTube , карты Google и так далее?

Необходимо просто расширить список доступных валидных элементов для вставки в редактор. За это отвечает параметр инициализации extended_valid_elements.

Собственно код:
tinyMCE.init({
...
extended_valid_elements : "iframe[name|src|framespacing|border|frameborder|scrolling|title|height|width]",
...
});

В квадратных скобках - атрибуты тега.

Таким же способом можно добавить вставку object, div, если они недоступны и т.д.

Friday, June 29, 2012

Изогнутая по правилам бумага = Бумажный самолетик

Для всех любителей попускать самолетики в офисе, да и не только.


Friday, June 1, 2012

Лето?! Дуров?!

Из-за абсолютно "летней" погоды лезут в голову странные мысли: быть может Дуров и Ко украли у белорусов не только детство и радость, они еще прихватили с собою лето?!