Содержимое ноды не выводится на главной вообще. Помогите.
Прислано: atm
чт, 18/03/2010 - 11:24
Приветствую всех.
У меня такая проблема - на сайте belankov.com/work/drupal не отображается контент ноды при выводе на главной странице тизерами. Шаблон создавал сам с нуля.
Вот содержимое node.tpl.php:
<?php<div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?>">
<?php if ($picture) {
print $picture;
}?>
<?php if ($page == 0) { ?><h2 class="title"><a href="<?php print $node_url?>"><?php print $title?></a></h2><?php }; ?>
<span class="submitted"><?php print $submitted?></span>
<div class="taxonomy"><?php print $terms?></div>
<div class="content"><?php print $content?></div>
<?php if ($links) { ?><div class="links">» <?php print $links?></div><?php }; ?>
</div>?>Что не так? Почему содержимое ноды не выводится?
- atm's blog
- Для комментирования войдите или зарегистрируйтесь
Напишите в node.tpl.php строчку:
<?php
print '<pre>'.print_r($variables,false).'</pre>';
?>Думаю, все станет понятно.
- Для комментирования войдите или зарегистрируйтесь
Спасибо за ответ, но я не понял. Вот что я знаю про вывод контента: если переменна $page равна нулю, то мы в состоянии вывода тизеров и выводим переменную $content, в которой и находится контент страницы (все содержимое).
Пожалуйста объясните мне про "pre" и "$variables, false".
- Для комментирования войдите или зарегистрируйтесь
Пожалуйста объясните мне про "pre" и "$variables, false".
Вы что, полезли в друпал, не зная про PHP и HTML?
- Для комментирования войдите или зарегистрируйтесь
Наверное все таки:
<?php print '<pre>' . print_r($variables, true) . '</pre>';?>
А делает этот код следующее:
выводит значение массива $variables прям на экран, в "нормальном" для просмотра виде.
- Для комментирования войдите или зарегистрируйтесь
Я знаю синтаксис и основные понятия PHP. HTML знаю хорошо, но видимо не на столько.
Прошу прощение за школярство - уже прочитал про тег "pre". А "$variables, false" что то запрещает я так понимаю?
То есть в тег "pre" нужно заключить вывод "$content"? А что делать с "$variables, false"?
- Для комментирования войдите или зарегистрируйтесь
Попробовал так:
<?php<div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?>">
<?php if ($picture) {
print $picture;
}?>
<?php if ($page == 0) { ?><h2 class="title"><a href="<?php print $node_url?>"><?php print $title?></a></h2><?php }; ?>
<span class="submitted"><?php print $submitted?></span>
<div class="taxonomy"><?php print $terms?></div>
<div class="content"><?php print '<pre>' . print_r($content, false) . '</pre>';?></div>
<?php if ($links) { ?><div class="links">» <?php print $links?></div><?php }; ?>
</div>?>и так (изменил false на true):
<?php<div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?>">
<?php if ($picture) {
print $picture;
}?>
<?php if ($page == 0) { ?><h2 class="title"><a href="<?php print $node_url?>"><?php print $title?></a></h2><?php }; ?>
<span class="submitted"><?php print $submitted?></span>
<div class="taxonomy"><?php print $terms?></div>
<div class="content"><?php print '<pre>' . print_r($content, true) . '</pre>';?></div>
<?php if ($links) { ?><div class="links">» <?php print $links?></div><?php }; ?>
</div>?>Все так же осталось.
- Для комментирования войдите или зарегистрируйтесь
Прости по друпалу пока не могу тебе подсказать - сам только начал учить.
Но, зная php: Тот код, что подсказали выше - это не из разряда "вставить туда и все получится", а только чтобы посмотреть значение $variables и проанализировав исправить уже свой код. Видимо этого достаточно чтобы стало все понятно :) . Удачи.
- Для комментирования войдите или зарегистрируйтесь
natbampo, спасибо =) и тебе удачи в изучении Drupal. Можем обменяться опытом пиши в личку.
Ребята, ну как же всетаки решить проблему эту? Я вроде бы когда делал свой шаблон, всю начинку node.tpl.php скопировал из стандартного шаблона.
- Для комментирования войдите или зарегистрируйтесь
Ребята, ну как же всетаки решить проблему эту? Я вроде бы когда делал свой шаблон, всю начинку node.tpl.php скопировал из стандартного шаблона.
Вам дали чтобы проверить есть ли вообще у вас переменная контент, вы проверили?
- Для комментирования войдите или зарегистрируйтесь
Я не понимаю. Переменна $content же глобальная и стандартная - как $title, который выводит загаловок ноды.
- Для комментирования войдите или зарегистрируйтесь
я могу одной строчкой сделать, что не будет такой глобальной переменной.
И ещё раз: Вам код дали чтобы Вы проверили есть ли вообще у вас переменная $content, вы проверили?
- Для комментирования войдите или зарегистрируйтесь
1) Какой из двух кодов? С true или с false который?
2) Куда его вставлять?
- Для комментирования войдите или зарегистрируйтесь
Сорри, я выхожу из этого топика.
С таким подходом, эту проблемы вы продолжите решать в одиночестве
- Для комментирования войдите или зарегистрируйтесь
RxB, стоило мне почитать мануал по функции print_r, я понял все.
Нет, эта функция не выводит ничего, значит переменная $content пуста.
- Для комментирования войдите или зарегистрируйтесь
Так делал:
<?php
print '<pre>' . print_r($content, true) . '</pre>';
?>?
- Для комментирования войдите или зарегистрируйтесь
Да. В сходном коде на belankov.com/work/drupal можете смотреть.
Что дальше?
- Для комментирования войдите или зарегистрируйтесь
Наверное все таки:
<?php print '<pre>' . print_r($variables, true) . '</pre>';?>
Ваша правда. Постоянно путаю этот параметр.
стоило мне почитать мануал по функции print_r, я понял все.
Нет, эта функция не выводит ничего, значит переменная $content пуста.
Отлично! Прогресс "на лице". А теперь, все таки, выведите так же переменную $variables.
- Для комментирования войдите или зарегистрируйтесь
http://belankov.com/work/drupal/
вот что получилось
- Для комментирования войдите или зарегистрируйтесь
И что? Вам еще разжевать? Или и так поймете?
- Для комментирования войдите или зарегистрируйтесь
Разжуйте пожалуйста. По моему нет ничего постыдного в том что я не знаю что дальше делать. По аналогии с функцией print_r, которую я не удосужился погуглить.
- Для комментирования войдите или зарегистрируйтесь
По аналогии с функцией print_r, которую я не удосужился погуглить.
В том то и дело.
Вот еще две подсказки:
1.
не отображается контент ноды при выводе на главной странице тизерами
2.
http://api.drupal.ru/api/function/template_preprocess_node/6
- Для комментирования войдите или зарегистрируйтесь
Все перекопал. И так пробовал и эдак.
Вообще не понимаю вот чего:
эта строчка исключает название ноды (ссылкой) из полного представления ноды (не-тизера):
<?php if (!$page) { ?><h2 class="node_title"><a href="<?php print $node_url?>"><?php print $title ?></a></h2><?php }; ?>
Но название линком же выводится.
Не получается в итоге.
API почитал - там стандартный файл в modules/node node.tpl.php похож на мой. И вывод $content такой же..
- Для комментирования войдите или зарегистрируйтесь
Но ведь не стараетесь же! Правда? Вы пробовали в редакторе ноды нажать кнопочку "Отделить тизер от основного текста"?
- Для комментирования войдите или зарегистрируйтесь
Стараюсь я. А в редакторе я и без знания всего этого мог сделать. Я в курсе про сепаратор тизера, но ведь автоматом должен выводиться контент, кол-во символов которого определено в настройках публикации (где можно выбрать, сколько символов будет выводиться в тизере).
- Для комментирования войдите или зарегистрируйтесь
Стараюсь я.
Пока не вижу.
автоматом должен выводиться контент, кол-во символов которого определено в настройках публикации
Должен. Но ведь Вы подали себя, как программиста, а значит, должны были за то время, пока я перемещался с работы домой, выяснить, какая функция формирует тизер. Выяснили?
- Для комментирования войдите или зарегистрируйтесь
node_teaser($body, $format = NULL, $size = NULL)
- Для комментирования войдите или зарегистрируйтесь
Вы делаете успехи! Осталось поигратся с этой функцией и выяснить, почему она может возвращать пустую строку ;)
- Для комментирования войдите или зарегистрируйтесь




Комментарии