kosilko: Блог

Главные вкладки

Падучая болезнь друпала или PDO?

29 апреля 2011 в 14:23

Как подавить PDOException, который ложит сайт? При любой мало-мальской ошибке в запросе к БД семерка выпадает в аут. Шестерка как-то обходилась ворнингом и продолжающейся работой остальных органов сайта, а тут блин приступ истерики и пошливсена*уй Smile

Ошибка CSS

20 февраля 2010 в 1:03

Просто ради интересу, попробуйте кто-нить присоединить этот CSS-файлик к какой-нибудь своей теме (стандартным методом путем правки конфига *.info), со включенным сжатием CSS-файлов в админке. У меня с ЭТИМ - тупо белый экран. Файлик был более полон, это я его обрезал до минимума, необходимого для того что-бы у чюдо-CMS съехала крышка. Возможно что у меня конфиг PHP особенный, не знаю, с таким сталкиваюсь второй раз, в первом случае там были закомментированные тэги HTML, но здесь-то что ещё? В подробности вдаваться уже желания нету. Я так понимаю, кошерно-православные регекспы фильтрующие CSS при кэшировании как были написаны левой ногой три года назад, так и остались священно-нетронутыми несмотря на отчаянные вопли в issues (может быть)). ИМХО конечно. И так пол-вечера убил на это вот гавно Sad Хотя, веселенький эффект, самое то если возникнет желание кинуть кому-нибудь подлянку -)

Для тех, кого беспокоит количество запросов к БД

2 апреля 2009 в 14:47

Недавно обнаружил, что переводы можно содержать не в БД, а файле settings.php, строки прописанные в нем будут иметь преимущество над строками в БД. Таким образом, если поместить туда все строки из базы, то после этого можно совсем отключить модуль locale, и существенно сократить количество запросов, при этом имея полностью русский интерфейс. В общем, в результате у меня родилось такое решение:

выполняем такой код (экспорт из БД в php-массив):

<?php
if($r db_query('
SELECT s.source, s.location, t.translation  
FROM {locales_source} s 
INNER JOIN {locales_target} t 
ON s.lid=t.lid AND s.source<> t.translation  AND t.language=\'ru\' AND s.textgroup=\'default\' 
GROUP BY t.translation
LIMIT 0,10000'
)) {
$t = array();
while (
$rs=db_fetch_object($r)) {
    
$rs->location explode(':',$rs->location);// вычисляем файл-ичточник из записи типа "имя_файла:номер строки"
    
$file_ext drupal_strtolower(trim(strstr(trim($rs->location[0]),'.'))); // узнаем расширение файла-источника перевода
    
if ($file_ext!='.info' && $file_ext != '.install')  // исключаем .info и .install файлы
{
        if (
        !isset(
$t[$rs->source])
        &&
        
trim($rs->source)!=''&&trim($rs->translation)!=''&&$rs->source!=NULL&&$rs->translation!=NULL //проверяем на всякий случай на предмет пустых строк
        
) {
            
$t[$rs->source] = $rs->translation;
        }
    }
}
echo 
'$conf[\'locale_custom_strings_ru\'] = ';
var_export($t);
echo 
';';
die;
}
?>

Сообщение "каталог бла бла бла был создан"

16 марта 2009 в 19:16

При первом вызове картинки из пресета imagecache, модуль создает каталог в подпапке imagecache/. И при этом выводится сабжевое сообщение. Для любого юзера, кто первым обратился к картинке. Не знаю кому как, а меня эта ситуация задрала - ну ладно я админ на сайте, но на кой хрен это нужно знать первому попавшемуся пользователю? Тем более, для обычных посетителей это выглядит странно.. что за каталог, какой такой имагекыш?? В общем, вывернуться удалось довольно таки просто:

новые тенденции в выборе сотрудников

11 марта 2009 в 15:05

цитата из одного обьявления о поиске программистов:

Описание:
От кандидатов требуется - примеры работ,
если есть аккаунт на "Хабре" - ссылку на личную страницу, резюме.

Я наверное отстал от жизни. Это так модно сейчас - если программер, то аккаунт на Хабре?

Для тех, кто юзает path_auto

21 ноября 2008 в 18:43

Вот, накропал тут, может кому пригодится такое решение...

function phptemplate_menu_item_link($link) {
         static $aliases = array();
         if (!isset($aliases[$link['href']])) {
                $aliases[$link['href']]=url($link['href']);
        }
         if ($_SERVER['REQUEST_URI']!=$aliases[$link['href']] && strpos($_SERVER['REQUEST_URI'],$aliases[$link['href']].'/')===0) {
         $link['localized_options']['attributes']['class']=isset($link['localized_options']['attributes']['class'])?$link['localized_options']['attributes']['class'].' parent':'parent';
        }
  return theme_menu_item_link($link);
}

Что делает код:
Если мы зашли по ссылке 'catalog/novosti/2008/', и при этом у нас отображены ссылки как на 'catalog/novosti/2008/', так и на 'catalog/novosti', то для ссылки, урл которой 'catalog/novosti' будет добавлен CSS-класс "parent". Таким образом, путем последующей правки файла стилей мы сможем реализовать подсветку ссылок по принципу логической вложенности, при этом ссылки могут находиться в разных меню и блоках.

Энто уязвимость или мне так показалось? =)

21 октября 2008 в 19:34

кто нибудь пробовал вводить в поля, где используется autocomplete символы типа "../../../../../" ?
А к примеру, "../../../includes/заведомо_существующий_файл" , да особенно под мозиллой файерфоксом ?

Интересно, как это реализовано?

11 октября 2008 в 16:00

Не помню, чтоб встречал такую штуку. Изменён цвет выделяемого текста и его бэкграунда. Проверил в Опере, IE7 и FF. По адресу http://www.darkorbit.ru/ в правом блоке - кликаем кнопку "Инфо", и там появляется этот текст. Как это реализовано, кто знает?

Добавление материалов в определенный термин

22 сентября 2008 в 14:57

задача: по ссылке вида 'node/add/тип_материала/номер_термина' должна открываться форма добавления материала с заранее выбранным желаемым термином таксономии.
решение: в собственном модуле пишем:

Полное отключения поля "тема" в комментах

8 сентября 2008 в 22:54

Проблема:
В настройках материала, если отключить опцию "Поле темы комментария" - то тема комментария будет все равно формироваться автоматически из тела сообщения, и при этом будет успешно выведена в списке комментов, как ни в чем ни бывало.
Решение:
В файле comment.tpl.php (предварительно скопированном в папку нашей темы из папки modules/comment) заместо