пятница, 5 июля 2013 г.

Drupal 5, Ubercart 1, UC_Recurring

Вчера надо было добавить продажу членства на достаточно старом сайте на Drupal 5. Хотел было настроить UC_Recurring, но оказалось, что на пятерке этот модуль поддерживает оплату через Authorize.net, а этот сервис для приема платежей по определенным причинам не подходит владельцу проекта. Пришлось остановится на использовании uc_roles. Проект UC_Recurring выпилили из ядра Ubercart 2, так что врядли он вообоще юзабелен до третьей версии.

понедельник, 24 июня 2013 г.

Прощай Ubuntu, здравствуй Debian!

Долгое время на моем ноуте стояла Kubuntu, так как KDE - это единственная достойная внимания графическая оболочка для работы. Мне в KDE нравится все: и дизайн, и интегрированность компонентов и общий подход к дизайну приложений.

В последнее время из рядов Canonical стали приходить тревожные новости: Unity вместо гнома, Mir - вообще что-то из ряда вон выходящее. Вместо того, чтобы сделать свою тему оформления и набор плагинов для Gnome и сливать наработки в общий котел, ребята из Canonical решили сделать свой Gnome с блекджеком и шлюхами Unity. Дальше - больше... не прошло и года, как им понадобился свой дисплейный менеджер - Mir....


На мой взгляд фрагментация сильно вредит экосистеме свободных проектов.Я не очень разбираюсь в мире дисплейных менеджеров, может и имело смысл делать свой... Но какой смысл был в разработке Unity -- хоть убей понять не могу.

В общем я решил что поддерживать велосипедостроение в Ubuntu  я больше не буду и пересел на Debian.

четверг, 14 февраля 2013 г.

Автоматическое создание обратных ссылок BackReference

Суть задачи: есть ноды определенного типа в которых есть поле entity reference, которое ссылается на другие ноды этого же типа. При  создании такой ноды можно выбрать другие материалы, которые при просмотре созданного материала будут видны как ссылки типа see also (или похожие материалы). 
Нужно чтобы при добавлении ссылки на материал (назовем его дочерним материалом) в родительский материал - создавалась обратная ссылка в дочернем материале (ссылка, которая ссылается на родительский материал).

Нашел отличный видео-урок: http://dev.nodeone.se/en/creating-multiple-back-links

Ну и ссылка на видео напрямую: 

вторник, 5 февраля 2013 г.

Как в Drupal 7 подменить один пункт меню другим

Иногда необходимо, чтобы вместо вызова стандартного обработчика для какого-нибудь пункта меню, вызывался обработчик для другого меню.

Нашел пример как это делается в модуле User

menu_set_active_item('user/' . $user->uid);
return menu_execute_active_handler(NULL, FALSE);

четверг, 19 января 2012 г.

Moogento_PickPack

Клиенту нужен был модуль, был выбор из 3-4-х. Выбрали самый "фичастый", купили.
Заглянул в код.... мама дорогая! В одном методе 3000 строк. Писал явно индус(ы).

вторник, 17 января 2012 г.

Как в Magento получить controller, action, router, module

Иногда необходимо узнать, какой конкретно контроллер вызывается. Это можно легко определить из любого шаблона (.phtml):
// Controller
print $this->getRequest()->getControllerName();
// Router
print $this->getRequest()->getRouteName();
// Action
print $this->getRequest()->getActionName();
// Module
print $this->getRequest()->getModuleName();

четверг, 17 июня 2010 г.

Проблема с кэшированием блоков в Drupal

Сегодня пытался решить проблему с одним блоком на сайте клиента. Суть проблемы в том, что есть форма и она не должна кэшироваться, то есть должна, но вместе со страницей.
В block api есть возможность отключить кэширование для отдельного блока посредством указания  
$block[$id]['cache'] = BLOCK_NO_CACHE

Проблема в том. что если с самого начала этот параметр отсуствовал, то изменения не запоминаются и блок все равно кэшируется.

Ситуацию можно спасти запустив SQL код:
UPDATE blocks SET cache = -1 WHERE module = 'your_module_name';

Если у модуля несколько блоков и только один требует отмены кэширования, то в запрос нужно добавить параметр delta