Переменные CCK

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

Аватар пользователя Bios Bios 2 октября 2008 в 8:12

Возникла такая вот проблема:

Создал новый тип нод, назвал его biog...

в нем 2 дополнительных поля с помощью ССК... field_title_en и field_title_fr...

Данные надписи являются переводами заголовка...

создал шаблон node-biog.tpl.php

А теперь вот такой вопрос как мне вывести значение этих двух новый полей??? (вариант

<?php print $content?>

не подходит...)

Может кто нибудь сможет помочь??? Спасибо!!

Комментарии

Аватар пользователя glu2006 glu2006 2 октября 2008 в 9:27

1й вариант

<?= $node->field_title_en[0]['view']?>

2й вариант

<?= $node->content['field_title_en']['#value'] ?>

В первом варианте получаете голое значение из БД
Во втором готовый ХТМЛ.

Аватар пользователя Bios Bios 2 октября 2008 в 9:55

А вы не вкурсе что в первом варианте вашего примера означает ноль???

В принципе для вывода можно сделать и одномерный массив а используется двумерный почему???

Аватар пользователя Bios Bios 2 октября 2008 в 10:56

Возник еще один вопрос..

Нужно изменять заголовок ноды в зависимости от языка...

Например если русский то заголовок без изменений.. Если английски то заголовку присваивается значение поля field_en_text[0]['value']...

Мой код не работает... При смене языка всегда выводится текст на русском:

<? echo $language->language; //проверяю текущий язык

if ($language->language != 'ru')
{
$title = $field_en_text[0]['value'];
}

?>

Где ошибка??

Аватар пользователя glu2006 glu2006 2 октября 2008 в 11:31

Bios wrote:
Возник еще один вопрос..

Нужно изменять заголовок ноды в зависимости от языка...

Например если русский то заголовок без изменений.. Если английски то заголовку присваивается значение поля field_en_text[0]['value']...

Мой код не работает... При смене языка всегда выводится текст на русском:

<? echo $language->language; //проверяю текущий язык

if ($language->language != 'ru')
{
$title =

$field_en_text[0]['value']

; /такой переменной НЕТ
}

?>

Где ошибка??

Внимательно посмотри на пост ниже, там как написано????
$title =

$node->field_en_text[0]['view']

; а вот такая ЕСТЬ )))

Какой смысл задавать вопросы и не внимательно читать ответы ))

Аватар пользователя Bios Bios 2 октября 2008 в 11:04

Сайт и так многоязычный...

А это будет такая фотогалерея...

Создаю ноду ввел заголовок на русском

а потом на английском и французском...

если на русском то выводится русский заголовок... И так далее...
Все работает с node_image (что то типа фотогалереи для ноды)...

Я кажется вам говорил уже что если все делать как положенно через переводы то при переводе на другой язык все изображения теряются... И приходится для каждого языка загружать одни и теже изображения...

Аватар пользователя Bios Bios 2 октября 2008 в 11:46
<?php print $field_en_text[0]['view'];?>
<?php print $field_en_text[0]['value'];?>
<?php print $node->field_en_text[0]['view']?>

Вы можете смеяться но все эти три строчки дают абсолютно одинаковый результат...

А вот эта строчка:

$title =$node->field_en_text[0]['view']

Абсолютно ничего не меняет... Такое чувство что после моего присвоения $title опять назначается значение на русском

Аватар пользователя glu2006 glu2006 2 октября 2008 в 11:52

Bios wrote:

<?php print $field_en_text[0]['view'];?>
<?php print $field_en_text[0]['value'];?>
<?php print $node->field_en_text[0]['view']?>

Вы можете смеяться но все эти три строчки дают абсолютно одинаковый результат...

А вот эта строчка:

$title =$node->field_en_text[0]['view']

Абсолютно ничего не меняет... Такое чувство что после моего присвоения $title опять назначается значение на русском

Они дают одинаковый результат потому что текстовое поле, а если бы там писались значения из массива, ты бы увидел разницу. Поэтому если уж просишь совета то и следуй ему в разумных конечно пределах. )) и попробуй присвоить вот так:
$node->title = $node->field_en_text[0]['view'];

Аватар пользователя glu2006 glu2006 2 октября 2008 в 12:38

а ты пробовал дебажить свою переменную $node что там выводится или тот-же титл? чего оно пишет??
или код покажи полностью нод тпл своей.

Аватар пользователя Bios Bios 2 октября 2008 в 12:37

ТУПИК

При отображении ноды типа node-biog.tpl.php заголовок берется из page.tpl.php и автоматом читает встроенный $title...

Его можно изменить но толк будет только тогда когда вы ставите галочку при создании материала ПОМЕСТИТЬ НА ГЛАВНУЮ

А когда вы открывает документ то все берется из TITLE (по умолчанию) и когда page.tpl.php его читает ему пофиг что вы хотите вместо него показать....

Может я ошибаюсь... Но надо переделывать page.tpl.php - что само по себе тупо... Так как изза какой то фотогалереи прийдется добавлять проверки на каждую страницу сайта... - лишние тормоза...

Аватар пользователя Bios Bios 2 октября 2008 в 12:52

olk wrote:
Поробуйте заголовок в node-xxx.tpl.php устанавливать через функцию drupal_set_title($title);

Очень такая интересная функция Wink

Первые тесты дают положительный результат, что ооочень радует )))

Сейчас поюзаю еще и отпишусь )))

Аватар пользователя Bios Bios 2 октября 2008 в 13:24

Вот решение надеюсь кому нибудь еще пригодится:
<?
if ($language->language != 'ru')
{
switch ($language->language) {
case "en":
$translate_title = $node->field_en_text[0]['view'];
break;
case "fr":
$translate_title = $node->field_fr_text[0]['view'];
break;
}
drupal_set_title($translate_title); // для правильного отображения при просмотре открытой ноды
$title = $translate_title; // для правильного отображения при просмотре на главной странице
}
?>

glu2006, direqtor, olk, Ромка - спасибо огромное все работает )))