Пробема с выводом полей в ноде продукта

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

Аватар пользователя kazi kazi 1 февраля 2012 в 18:02

Заранее прошу прощения за ошибки и не намеренные нарушения правил при составлении тем подобного рода!
Сборка OpenStore

При создании типа матриала "product" или любого класса товаров по умолчанию отображаются следующие поля рядом с основной фотографией товара:
screen 1
Цена
"Язнаю где дешевле"
Термины "Торговая марка"
Артикул
Вес
Товар в наличии
Оценки
Вопросы по товару
Подписка на отзывы
Кнопка добавления в корзину

Хочу добавить еще поля с доп. информацией, как со словаря, так и поросто текстовые поля относящиеся к этому классу товара.
Поля типа "формат книги", "количество страниц" и т.д. к типу материалла "книга" я добавил, но они не отображаются.

PHP не валдею, поэтому свою проблему самостоятельно решить не могу.
Поиск, как в интернете, так и на форуме тоже не помог.

Насколько я понял все переменные, которые задаются в шаблоне ноды определяются тут: sites/all/modules/general/preprocess/preprocess_common.inc
Сам шаблон: sites/all/themes/frontend/templates/node-product-right.tpl.php

Единственно, что у меня получилось это добавить поле с весом товара.
Вот врагмент кода:

<?php print $show_terms_trademark?> - отображение "Производителя" из словаря
<?php print $show_product_sku?> - отображение артикула
<?php print $show_terms_formats?> - моя неудачная попытка отображения формата книги из словаря
<?php print $show_product_weight?> - моя удачная попытка отображения поля веса книги, но этот код я взял с самого шаблона ноды который был в нем прописан для тех, кто захочет добавить это поле для отображения

Итого: что нужно для добавления доп. поля на страницу с товаром? и что нужно, что бы сменить название "Торговая марка" на "автор" при отображении терминов из словаря?

Заранее благодарю за помощь!

Комментарии

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 1 февраля 2012 в 22:56

Выведи нужные термины в шаблоне ноды с помощью такого кода:


<?php if (count($taxonomy)):
    
// заменить 8 номером нужного словаря
    
$terms taxonomy_node_get_terms_by_vocabulary($node8);
    
$items = array(); 
    if (
$terms) {
        foreach (
$terms as $key => $term) {
            
$items[] = l($term->nametaxonomy_term_path($term), array('attributes' => array('rel' => 'tag''title' => $term->description)));
        }
        print 
'<span>' .  implode(', '$items) . '</span>' ;
    }
endif; 
?>

и не совсем понял зачем ты полез в preprocess_common.inc если все нужные данные ты можешь получить с страницы ноды, достаточно ее только распечатать и посмотреть переменные

Аватар пользователя kazi kazi 2 февраля 2012 в 17:48

Благодарю за помощь!

Поле появилось. Только с опозданием. Не знаю с чем это связанно.

А как вывести простое текстовое поле относящееся к этому типу материалла?
И как поменять/вставить заголовок при выводе поля из таксономии?

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 5 февраля 2012 в 2:08

в шаблоне ноды сделай print_r($node) посмотри что тебе нужно и поставь условие что когда выводить
например:


<?php if($node->type == 'news'): ?>
здесь делаем то что нам нужно при этом типе материала
<?php endif; ?>

не совсем понял про какой заголовок идет речь.

Аватар пользователя kazi kazi 6 февраля 2012 в 11:34

"kazi" wrote:

*под заголовком подразумевалось название выводимого значения. В данном примере это "Артикул"*
Артикул: VB12

Для тех полей, которые я вывел по указанной тобой подсказке получилось самостоятельно напечатать заголовок с помощью echo, но для значений, которые были по умолчанию в шаблоне эти названия прописанны в файле prerpocess-а, и именно "Торговая марка"(trademark)... в нем это название прописанно на англицком, а на сайте выводилось на русском языке (видимо как то автоматически делается перевод, но как я не понял)... так вот вместо trademark ввел "Автор" в итоге вместо этого там появилась абракадабра, причину этого я тоже не смог выявить и поэтому написал английскими буквами ABTOP(abtop)...

Хотел почитать про взаимодействие шаблона и preprocess но ничего не смог найти...

Аватар пользователя kazi kazi 6 февраля 2012 в 14:35

Вопрос по вставке поля из выбранного типа ноды:

<?php if($node->type == 'news'): ?>
/*Каким образом тут вывести поле принадлежащее этой ноде, к примеру поле количества страниц книги (field_pages)?*/

<?php endif; ?>

Аватар пользователя vitalii.stymkovskyi vitalii.stymkovskyi 6 февраля 2012 в 21:44

как создать шаблон для определенного типа материала знаете?
если нет то в папке с темой создаете файл с название node-****.tpl.php - где *** название типа материала, для уберкарта будет node-product.tpl.php, дальше смотрите ссылку Пример шаблона
теперь есть шаблон для этого типа материала, а значит мы делаем здесь все что захотим и это не отразится на других материалах.
Вывод полей:
Вывод поля с оформлением:


<?php print theme('content_field'$node->content['field_name']['field']); ?>

Вывод обычного поля ССК:


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

Вывод тела новости:


<?php print $node->content['body']['#value']; ?>

Вывод заголовка (названия, имени) поля CCK:


<?php print $node->content['field_name']['field']['#title'];?>

Делайте print_r($node) и все поля для этой ноды будут доступны!