Заранее прошу прощения за ошибки и не намеренные нарушения правил при составлении тем подобного рода!
Сборка OpenStore
При создании типа матриала "product" или любого класса товаров по умолчанию отображаются следующие поля рядом с основной фотографией товара:
Цена
"Язнаю где дешевле"
Термины "Торговая марка"
Артикул
Вес
Товар в наличии
Оценки
Вопросы по товару
Подписка на отзывы
Кнопка добавления в корзину
Хочу добавить еще поля с доп. информацией, как со словаря, так и поросто текстовые поля относящиеся к этому классу товара.
Поля типа "формат книги", "количество страниц" и т.д. к типу материалла "книга" я добавил, но они не отображаются.
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; ?>
- моя удачная попытка отображения поля веса книги, но этот код я взял с самого шаблона ноды который был в нем прописан для тех, кто захочет добавить это поле для отображения
Итого: что нужно для добавления доп. поля на страницу с товаром? и что нужно, что бы сменить название "Торговая марка" на "автор" при отображении терминов из словаря?
Заранее благодарю за помощь!
Комментарии
Выведи нужные термины в шаблоне ноды с помощью такого кода:
<?php if (count($taxonomy)):
// заменить 8 номером нужного словаря
$terms = taxonomy_node_get_terms_by_vocabulary($node, 8);
$items = array();
if ($terms) {
foreach ($terms as $key => $term) {
$items[] = l($term->name, taxonomy_term_path($term), array('attributes' => array('rel' => 'tag', 'title' => $term->description)));
}
print '<span>' . implode(', ', $items) . '</span>' ;
}
endif; ?>
и не совсем понял зачем ты полез в preprocess_common.inc если все нужные данные ты можешь получить с страницы ноды, достаточно ее только распечатать и посмотреть переменные
Благодарю за помощь!
Поле появилось. Только с опозданием. Не знаю с чем это связанно.
А как вывести простое текстовое поле относящееся к этому типу материалла?
И как поменять/вставить заголовок при выводе поля из таксономии?
в шаблоне ноды сделай print_r($node) посмотри что тебе нужно и поставь условие что когда выводить
например:
<?php if($node->type == 'news'): ?>
здесь делаем то что нам нужно при этом типе материала
<?php endif; ?>
не совсем понял про какой заголовок идет речь.
*под заголовком подразумевалось название выводимого значения. В данном примере это "Артикул"*
Артикул: VB12
Для тех полей, которые я вывел по указанной тобой подсказке получилось самостоятельно напечатать заголовок с помощью echo, но для значений, которые были по умолчанию в шаблоне эти названия прописанны в файле prerpocess-а, и именно "Торговая марка"(trademark)... в нем это название прописанно на англицком, а на сайте выводилось на русском языке (видимо как то автоматически делается перевод, но как я не понял)... так вот вместо trademark ввел "Автор" в итоге вместо этого там появилась абракадабра, причину этого я тоже не смог выявить и поэтому написал английскими буквами ABTOP(abtop)...
Хотел почитать про взаимодействие шаблона и preprocess но ничего не смог найти...
Вопрос по вставке поля из выбранного типа ноды:
<?php if($node->type == 'news'): ?>
/*Каким образом тут вывести поле принадлежащее этой ноде, к примеру поле количества страниц книги (field_pages)?*/
<?php endif; ?>
как создать шаблон для определенного типа материала знаете?
если нет то в папке с темой создаете файл с название 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) и все поля для этой ноды будут доступны!