iluhin: Блог

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

hook_term_path и $_get параметры в ссылке

29 ноября 2009 в 22:44

Привет всем.

Возникла следующая задача: есть вьюха, которая выводит exposed фильтры с результатами поиска по этим фильтрам (фильтры на термины таксономии из разных словарей). Охота определенные термины таксономии при выводе в ноде посылать на эту вьюху, соответствующим образом подготовив $_GET параметры.

Все бы ничего, но есть следующие трудности:
1. С помощью hook_link_alter все можно сделать ценой дополнительного запроса к БД на каждый термин таксономии, чтобы узнать к какому словарю он принадлежит. Не катит так как БД охренеет.
2. Очень удобно было бы сделать с помощью hook_term_path, но почему-то на каком-то этапе хорошо сформированный $_GET запрос превращается в кракозябры:
вместо "search/door?dtype=28&mnf=All&cnstr=All&mt_kr=All&clr=All&kmpl=All&upk=All"
мы видим "search/door%3Fdtype%3D28%2526mnf%3DAll%2526cnstr%3DAll%2526mt_kr%3DAll%2526clr%3DAll%2526kmpl%3DAll%2526upk%3DAll"

Вопрос - какая функция это проделывает, и можно ли как-то эту ситуацию исправить?

3. Еще вариант: hook_link + hool_link_alter: через hook_link зарегистрировать нужные ссылки, а с помощью hool_link_alter очистить то, что таксономия записала, но тоже не очень хороший вариант.

Какие варианты подскажете?

Ubercart 2. Расширение функциональности каталога.

28 ноября 2009 в 11:06

Привет всем.
Интересует следующая вещь: в ubercart есть стандартный модуль - uc_catalog, который реализует вывод продуктов разными способами. Функционала этого модуля для конкретного проекта не хватает. Необходимо добавить как минимум поиск по некоторым параметрам и вывод дополнительных нод (не продуктов) на страницы каталога, причем большая часть функционала каталога нужна.

Вопрос в том, как это лучше реализовать с точки зрения архитектуры drupal?

Я еще новичок, у меня пока следующие мысли:
- полностью скопировать модуль каталога и дописать свой функционал (не очень хорошо с точки зрения выхода новых версии уберкарта)
- оставить модуль uc_catalog нетронутым и расширить его с помощью хуков или каких-то средств друпала. Вот только с этим вопрос - с помощью каких хуков я могу это сделать? И еще вопрос - можно ли как-то в новом модуле использовать функции модуля uc_catalog, если они не являются хуками (для выбора продуктов из базы итд в модуле uc_catalog уже написаны функции, которые отлично работают, как эти функции можно использовать в своем модуле?).

Сайт компании, занимающейся коучингом.

9 июля 2009 в 22:27

Открытый портал - portalopen.ru.

Это первый мой сайт на друпале. Все собиралось из стандартных модулей. Чуток темизации. Ну еще написал малюсенький модуль для подсоса новых событий из гугл календаря.

Все это дело еле-еле ворочается на мастерхостовском тарифе "Эффективный". Кеширование только на файлах (cacherouter) и boost. Никаких memcached, apc итд хостингом не поддерживается, поэтому работает не очень шустро.

Вопрос на засыпку, сколько такой сайт примерно может стоить?

Views & Drupal 6. Добавляем таб "материалы пользователя" на страницу профиля.

15 апреля 2009 в 0:19

UPDATED! Так как написано ниже - делать не надо.
>а теперь удалите все изменения в ядре, и сделайте правильно
>все тоже самое в виде,
>вид - страница
>путь user/%/tracker
>меню - Menu tab (заголовок: Материалы пользователя)

По мотивам решил разобраться, как же все-таки сделать дополнительный таб на странице профиля пользователя.
Таб должен приводить нас к просмотру всех материалов пользователя.

Для начала создаем во Views новое представление.
Я сделал самое простое:
Style:
таблица

Поля:
материал: название;
материал: Updated\commented date

Аргументы:
user: uid, в настройках ставим Provide default argument -> User ID from URL

Сортировка: материал: Updated\commented date desc.
Представление сделали, теперь собственно создадим новый таб.
-----
Для этого нам понадобится заюзать hook_menu. Я пошел в модуль user (user.module) и просто в функции user_menu добавил нужный мне элемент:

<?php    
$items
['user/%user/tracker'] = array(
'title' => 'Материалы пользователя',
'page callback' => 'user_materials_load',
'page arguments' => array(1),
'type' => MENU_LOCAL_TASK,
'weight' => 3,
'access callback' => 'user_materials_tab_access',
);
?>

Соответственно там же добавил callback для вывода материалов (наш заблаговременно подготовленные view)

<?php
function user_materials_load()
{
    
$view views_get_view('view_user_materials');
    return 
$view->preview('default');
}
?>

cache router - проблема с кодировкой

14 апреля 2009 в 1:08

В попытках разогнать друпал установил Cache Router с кешированием на файлах.

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

В чем может быть проблема?

конфиг в общем-то стандартный:
$conf['cache_inc'] = './sites/all/modules/cacherouter/cacherouter.inc';
$conf['cacherouter'] = array(
'default' => array(
'engine' => 'file',
'path' => 'sites/default/files/filecache',
'static' => FALSE,
'fast_cache' => TRUE
)
);

Кстати, если делаю кеширование на БД, то все в порядке, единственно, иногда warnings выдает:
Missing argument 1 for dbCache::flush(). Но это при работе в админке в основном (на файлах тоже похожие ворнинги выдает).