[РЕШЕНО] Как вывести наименование типа материала

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

Комментарии

Аватар пользователя hypnoser hypnoser 5 февраля 2012 в 16:47

"valname" wrote:
Добавить вывод в node.tpl.php: http://api.drupal.org/api/drupal/modules--node--node.tpl.php[/quote]

Вывожу - <?php print $type?>

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

Аватар пользователя valname valname 5 февраля 2012 в 17:21

Ну, я так еще не делал, но вот что сейчас нашел здесь http://drupal.org/node/54059:

Quote:

Place this at the top of your node.tpl.php:


<?php
  $type 
= (node_invoke($node->type'node_name'));
?>

and then call


<?php print $type ?>

where you want it inline.

this gives you the content type label rather than the module name, so it's much better than the traditional hack: <?php print $node->type ?>

It works for me!"

Аватар пользователя Dimosaur Dimosaur 5 февраля 2012 в 19:00

Используйте в теле ноды или блока

<?php

$node = menu_get_object('node');
if ($node) {
print (node_type_get_type($node)->name);
}

?>

или напрямую из бд

<?php

$query = db_select('node', 'n');
$query
->fields('n', array('type'))
->condition('nid', arg(1));
$query
->fields('nt', array('name'))
->innerJoin('node_type', 'nt', 'n.type = nt.type');
$result = $query->execute();

foreach ($result as $row) {
print ($row->name);
}

?>

Аватар пользователя hypnoser hypnoser 3 марта 2012 в 15:50

А еще вопросик. В ноде тип показывается, а вот если перейти по ссылке какого-нибудь тега, в списке всех материалов тип пропадает. Как побороть? Помогите пожалуйста.

Аватар пользователя Dimosaur Dimosaur 3 марта 2012 в 22:23

Ф-ция menu_get_object "ловит" объект ноды или юзера с урла, поэтому работает если урл ноды типа node/%node (даже если изменен модулем Path). Но, например, в шаблоне node.tpl.php вашей темы объект $node доступен всегда. Поэтому можете код

<?php
print (node_type_get_type($node)->name);
?>

перенести в шаблон node.tpl.php и он будет работать при любом отображении нод. В теме Бартик можно сделать, например, так:

<?php
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
print (node_type_get_type($node)->name); // Свой код
print render($content);
?>