Здравствуйте.
Установил CCK, добавил различные типы полей (в частности, fileField и imageField). Создал произвольный тип материала.
Проблема вот в чем. Страничка отображается немного не так, как хотелось бы. Возникла мысль создать шаблон для данного типа материала, но возникает вопрос - как из шаблона можно получить доступ к содержимому добавленых мною полей?
Есть название и описание - это практическе у всех типов нод.
В файле node.tpl.php есть такой кусок кода:
<?php
<div class="content clear-block">
<?php print $content ?>
</div>
?>
Насколько я понял, этот кусочек и выводит все содержимое. А мне надо, получается, вывести его (содержимое) по частям. У меня еще есть три поля и картинка (помимо описания). Вот хотелось бы, чтобы картинка и те три поля выводились более компактно, Такое вообще возможно?
Не приведет ли кто-нить примерчик, как это реализовать?
Комментарии
Через template.tpl.php (Content Templates)
<?php
} h2
<style type="text/css">
h1
{
font-family: Arial, Helvetica, Sans-Serif;
font-size: 18px;
font-style: italic;
font-weight: bold;
text-align: left;
color: #298321;
{
font-family: Arial, Helvetica, Sans-Serif;
font-size: 16px;
font-style: normal;
font-weight: bold;
text-align: left;
color: #298321;
} h3
{
font-family: Arial, Helvetica, Sans-Serif;
font-size: 12px;
font-style: normal;
font-weight: bold;
text-align: left;
color: #298321;
float: left;
} TABLE {border: none !important;}
TD {border: none !important;}
</style>
<?php
//заголовок
echo '<table<tr><td><h1>', $node->field_lat_plant[0]['view'],
'</h1></td></tr>',
'<tr><td><h2>',$node->field_rus_plant[0]['view'],'</h2></td></tr>',
'</table>';
//таблица
echo '<table border = "1" width="100%">',
'<tr valign = "center">',
'<td rowspan="9" align = "center" valign = "center" width = "200" height = "200">',
$node->field_foto_plant[0]['view'],
'</td>',
'<td width = "140"><h3>Высота:</h3></td>',
'<td>',
$node->field_height_plant[0]['view'],' см',
'</td>',
'</tr>',
'<tr>',
'<td><h3>Ширина:</h3></td>',
'<td>',
$node->field_weight_plant[0]['view'],' см',
'</td>',
'</tr>',
'<tr>',
'<td><h3>Освещение:</h3></td>',
'<td>',
$node->field_light_plant[0]['view'],' Вт/л',
'</td>',
'</tr>',
'<tr>',
'<td><h3>Температура:</h3></td>',
'<td>',
$node->field_temp_plant[0]['view'],' C',
'</td>',
'</tr>',
'<tr>',
'<td><h3>Жесткость воды:</h3></td>',
'<td>',
$node->field_gh_plant[0]['view'],' dgH',
'</td>',
'</tr>',
'<tr>',
'<td><h3>Кислотность воды:</h3></td>',
'<td>',
$node->field_ph_plant[0]['view'],
'</td>',
'</tr>',
'<tr>',
'<td><h3>Скорость роста:</h3></td>',
'<td>',
$node->field_speed_plant[0]['view'],
'</td>',
'</tr>',
'<tr>',
'<td><h3>Условия содержания:</h3></td>',
'<td>',
$node->field_condition_plant[0]['view'],
'</td>',
'</tr>',
'<tr>',
'<td><h3>Растет над водой:</h3></td>',
'<td>',
$node->field_paludarium_plant[0]['view'],
'</td>',
'</tr>',
'</table>',
'<table border = "1" width = "100%">',
'<tr>',
'<td align = "justify">',
$node->content['body']['#value'],
'</td>',
'</tr>',
'</table>';
?>
Есть модуль Contemplate. Можно использовать его, или просто подсмотреть как выводить все отдельно, и запихнуть готовое вместо переменной content
«Есть модуль Contemplate. Можно использовать его, или просто подсмотреть как выводить все отдельно, и запихнуть готовое вместо переменной content»
Этот модуль надо ставить дополнительно? Хотелось бы поменьше модулей. В остальном, думаю, это то, что мне нужно. А где еще помимо модуля contemplate можно вмешаться в процесс обработки контента?
P. S. Спасибо всем за отзывы.
как вариант использовать display suite
там можно управлять через админку
Как вариант: в модуле посмотреть все ваши переменные, затем скопировать все необходимое в ваш node.tpl.php, далее отключить Contemplate
Есть продвижения...
Набрав наобум в node.tpl.php такой код
Я получил распечатку массивчика, который связан с моим полем. Подумав еще немного, написал строку
И вот оно нарисовалось - значение поля. Теперь остается получить заголовок поля, текст ноды и все... задача решена.
Либо... что-то сделать с настройками отображения картинки.
Установил модуль contemplate, посмотрел в нем интересующие меня переменные. Удобнее, чем с помощью print_r($node) ковырять. Спасибо, проблема вроде решена.
Уболтал)))
Переменные удобнее смотреть, если ставить модуль [module=devel]. Тогда на странице с материалом рядом со ссылками Просмотр и Редактировать появляется ссылка Devel.
Я сам правда бьюсь с проблемой темизации ноды. Из вопросов несколько:
1. у материала cck поле связанное со словарем таксономии и в нем несколько значений. мне нужно чтобы выводились все значения (которые будут ссылками на материал), через запятую.
2. если мне нужно "перекроить" полностью вывод всей ноды, а в ней около 10 полей и картинки и taxonomy_fields, как мне правильнее переписать вывод? при чем не использовать conteplate.