День добрый, уважаемые!
Такой вопрос, туплю вввиду php-неграмотности.
При вставке <?php print $node->nid; ?> в блок сайта выводит
Notice: Undefined variable: node in eval()
Notice: Trying to get property of non-object in eval()
Notice: Undefined variable: node in eval()
Notice: Trying to get property of non-object in eval()
Notice: Undefined variable: node in eval()
Notice: Trying to get property of non-object in eval()
Notice: Undefined variable: node in eval()
Notice: Trying to get property of non-object in eval()
не могу понять, что именно ему не нравится, ведь переменная такая есть, в node.tpl.php нормально подхватывается...
Комментарии
какое отношение блоки имеют к node.tpl.php?
может переменная не объект ноды?
т.е. есть ли выше запись node=node_load(nid)? только со значками бакса, кстати, где он на андроиде?)
А как ей задать объект ноды? Пробовал так, но тоже не то...
<?php
$node = node_load($nid);
print_r($node);
?>
Да, с самим php все нормально, вставляя дефолтный код из примера /filter/tips (в самом низу), всёё срабатывает)
Блоки в моём случа имеют отношение к node.tpl.php потому, что я решил использовать переменную из этого файла, но как я понимаю, чего-то я не учёл... Тугадум, что сказать)
ноду надо где то взять - к примеру
http://api.drupal.org/api/drupal/modules%21node%21node.module/function/n...
а может нода не объект ?
или ещё какую фантастику придумаешь?
какое?
тогда остается убедиться, что в переменную действительно попадает объект ноды, а не попасть он туда может, если переменная nid содержит чтонибудь не то, к примеру слово "вобла" вместо индекса реальной ноды
омг, нода возвращаемая node_load именно объект, жжешь
Да, но в node.tpl.php есть кусочек кода div id="node-<?php print $node->nid; ?>, на который я и опирался в своих действиях. Значит nid срабатывает, разве нет?
да я сейчас про тот nid, который нужно передать в загрузчик ноды
только меня ваши вопросы немного смущают... если вопрос перефразировать в как вывести nid в шаблоне ноды, то на сколько помню тупо через переменную nid, если вы про это, и согласен с андедом, что общего у блоков с шаблоном самой ноды?
То есть, через переменную nid? Разве не через такой код?
<?php print $node->nid; ?>
Но меня интересует вывод не в шаблоне ноды, а именно в блоке - я хочу присвоить уникальный id="" элементу в блоке. Самое простое - задать ему через id="style-nid". А вот как прописать именно часть после дефиса, не до конца понимаю...
$node = node_load(arg(1));
print $node->nid;
}
cobanja искренне советую начать с ман по области видимости в php
только зачем $node->nid , если уже есть аргумент?
Пффф, всё оказалось действительно сложнее, чем я думал.
В итоге прикрутил
Xdiv id="vk_comments-<?php if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
print $node->nid;
}
?>"XX/divX
Xscript type="text/javascript"X
VK.Widgets.Comments("vk_comments-<?php if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
print $node->nid;
}
?>", {limit: 15, width: "985", attach: false});
X/scriptX
(не буду чистить, вдруг кому пригодится)
На отдельных страницах отрабатывает на ура, а вот на одной странице все nid куда-то исчезают...
Аааа, я понял. Это потому, что я не нахожусь непосредственно на странице с нодой, так?
Блин, я не стал ничего писать т.к. drupby уже все написал...
node_load($nid), т.е. вы загружаете ноду по её индексу, а потом из её объекта извлекаете этот же индекс, и все? для чего это нужно?))
<div id="vk_comments-<?php print (arg(0) == 'node' && is_numeric(arg(1))?arg(1):'возможно_пригодится';?>">
и т.д.Если быть точнее, то вы находитесь в самом блоке, который ничего общего (кроме глобальных переменных) со всей остальной частью сайта не имеет
Куда пропал и откуда? и где он вообще написан?
Xdiv id="vk_comments-<?php print (arg(0) == 'node' && is_numeric(arg(1)); ?>"XX/divX
Xscript type="text/javascript"X
VK.Widgets.Comments("vk_comments-<?php print (arg(0) == 'node' && is_numeric(arg(1)); ?>", {limit: 15, width: "985", attach: false});
X/scriptX
Пропал, в смысле его вообще нет)
Вы это делаете через админку? Т.е. в админке создали блок, указали формат ввода php, и в самом тексте блока пишите div, кроме того, указали выводить этот блок только при node/*? Если да
<div id="vk_comments-<?php print $nid;?>">
...
</div>
<?php endif; ?>
Блок прикреплен к каждому тизеру через cck. То есть, под каждым анонсом - вот такое поле с комментариями)
Внутри ноды всё получается просто отлично, а вот когда смотришь на страницу с анонсами, то под тизером просто пустое поле. Как-то так...
Бедный мой мозг.... так сказали бы раньше, что "блок" в данном случае - в понимании верстки(т.е. простое CCK поле) а не друпала, ибо у друпала понятие "блок" это совершенно иное, суть проблемы теперь ясна(вроде), когда вы смотрите тизеры, то в url nid'ом и не пахнет, потому и пусто, однако, это поле выводится как раз через шаблон ноды node--чтототам.tpl.php:
//выводим шаблон тизера
} else{
//выводим шаблон ноды
}
в нем у вас нода уже будет загружена, и получить nid труда не составит, в 6 это $nid, в 7 не помню, возможно как раз $node->nid, правда про 6 тоже уже не очень помню. И да, кстати, если div у вас по сути формируется внутри шаблона, а его наполняется содержимым явой, то само cck поле не нужно, ибо все это по сути идет простая верстка.
sg85, спасибо большое за помощь, скрутил свой node--.tpl.php - получилось, как надо)) Без Вас бы не справился) И извините за нервотрёпку - понял, что через сск не вариант пробовать такие вещи)
[РЕШЕНО]