Пишу модуль: нужно вывести термины просматриваемой ноды

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

Аватар пользователя fit fit 4 декабря 2012 в 18:12

Столкнулся с проблемой при написании своего модуля.
Мне нужно сделать проверку на наличие у текущей ноды определенного термина в определенном словаре. Сломал всю голову, как это сделать именно в модуле?

Комментарии

Аватар пользователя kopernik21187 kopernik21187 5 декабря 2012 в 1:55

не вижу ничего сумбурного. $result как видно из кода возвращается из функции taxonomy_select_nodes. или не видно? как узнать nid текущей ноды вам виднее должно быть, вы же модуль пишете. вообще же зависит от того какой хук вы обрабатываете, как правило nid текущей ноды можно узнать из объекта $node, который передается в функциях хука. на будущее: вы хотя бы код модуля приводите и поподробнее описывайте проблему, здесь телепатов нет.

Аватар пользователя fit fit 5 декабря 2012 в 13:32

kopernik21187 wrote:
не вижу ничего сумбурного. $result как видно из кода возвращается из функции taxonomy_select_nodes. или не видно? как узнать nid текущей ноды вам виднее должно быть, вы же модуль пишете. вообще же зависит от того какой хук вы обрабатываете, как правило nid текущей ноды можно узнать из объекта $node, который передается в функциях хука. на будущее: вы хотя бы код модуля приводите и поподробнее описывайте проблему, здесь телепатов нет.

Согласен с вами, не посмотрел внимательно.

У меня пока есть такое начало:

<?php
function mydiscount_cart_item($op, &$item) {
global $user;
profile_load_profile($user);
$userdiscount = $user->profile_discount;
$percentload = $item->price/100 * $userdiscount;
$item->price = $item->price - $percentload;
}
?>

Из поля профиля пользователя берется размер скидки, который вычитается из цены товара.
Теперь пытаюсь сделать условие, что бы скидка не срабатывала, если у товара есть термин "Скидки" (что бы не делать скидку на еще одну скидку).
Так же пытался найти хук для ubercart, что бы делать проверку на cost (как альтернатива первому варианту с термином таксономии), но что-то безуспешно:

<?php
function mydiscount_product($op, &$item) {
$outcost = $item->cost;
}
if ($outcost == '0.00000'):
?>

<?php
function mydiscount_cart_item($op, &$item) {
$item->price = $item->price;
}
?>

<?php else: ?>

<?php
function mydiscount_cart_item($op, &$item) {
global $user;
profile_load_profile($user);
$userdiscount = $user->profile_discount;
$percentload = $item->price/100 * $userdiscount;
$item->price = $item->price - $percentload;
}
?>
<?php endif; ?>

з.ы. прошу прощения за быдлокод, пока просто пробую все варианты, что сработает, а потом уже причесывать буду.

Аватар пользователя Chyvakoff Chyvakoff 5 декабря 2012 в 9:07
// Implements hook_nodeapi
// http://api.drupal.org/api/drupal/developer!hooks!core.php/function/hook_...
function my_module_nodeapi(&$node, $op) {
if(($op == 'view') || ($op == 'load')){
$terms = $node->taxonomy;
//тут foreach`ем перебирай переменную $terms.
//В ней все термины всех словарей,прикрепленных к текущей ноде.
// Если найдешь свой термин - добавь в объект ноды то что тебе нужно, потом выведешь в шаблоне.
}
}