Раздел форума:
Доброго времени суток.
Магазин одежды на Drupal 7. Есть страница Product Display, к ней привязано несколько товаров Commerce, у каждого товара есть несколько фото и атрибут цвет.
Подскажите как в ноде product display вывести фото всех привязанных к ней товаров в виде галереи(большое фото и несколько маленьких), чтобы при выборе цвета фото менялось.
Например product display футболка, связанные товары: футболка красная(1 фото), футболка синяя(1 фото). На странице ноды должно отображаться обе фотографии, а при выборе атрибута цвет первым должно становиться фото товара свыбранным цветом.
Похожих вопросов очень много, но нигде нет ответа. Такое вообще возможно реализовать на Commerce?
Добавить комментарий
Это стандартный функционал
Это стандартный функционал commerce kickstart:
https://www.drupal.org/project/commerce_kickstart
https://drupalcommerce.org/commerce-kickstart-2
Вы можете его повторить с помощью модуля commerce fancy attributes:
https://www.drupal.org/project/commerce_fancy_attributes
Вот видео о том как его настроить:
https://vimeo.com/44308580
Спасибо за ответ.
Спасибо за ответ.
Но это не совсем то. Наверно я не очень понятно объяснил. Попроую еще раз.
Есть страница pdroduct display(фотболка), с ней связаны 3 товара: футболка синяя, футболка красная и футболка белая. У каждого товара есть фото(минимум одно).
Так вот мне нужно, чтобы на странице product display выводились сразу изображения всех трех связанных с ним товаров в виде галереи(одно большое изображение, а остальные превью), а при выборе атрибута цвет(например синий) фото синей футболки выводилось большим, а остальные оставались превьюшками.
Я понимаю, что это легко сделать, если поле фото товара находится в ноде, а не в товаре коммерса, но в таком случае при выборе цвета не будет меняться фото и не правильно будет работать импорт.
вот тут работает имеено так как нужно: http://www.bonprix.ua/style/dzhinsy-shirokij-uzkij-obem-253358/?type=image&return=ref
Нашел еще несколько тем с похожими вопросами, но без решения:
https://drupalcommerce.org/discussions/3038/displaying-all-images-referenced-products-product-display-node
http://www.drupal.ru/node/107854
Заранее благодарю за помощь.
Видимо придется использовать
Видимо придется использовать кастом как здесь:
https://drupalcommerce.org/discussions/3038/displaying-all-images-refere...
Только помимо этого еще нужно добавить первому изображению из продуктов класс наподобии start-photo-product-id, на которое будет становиться галерея при переключение товаров. Например здесь:
Но скорее всего так просто во вьюс не получится отдельному row добавить такой класс и нужно будет выводить изображения кастомным образом, а не через Views.
Также еще нужно добавить и продукт поле фотографий, если нужно чтобы были одинаковые фотографии для продуктов, но не привязанные к конкретному продукту, а к нескольким.
Спасибо!
Спасибо!
Я пока новичок в Drupal, да и в принципе в веб-разработке. Подскажите, как именно это использовать.
Страница продукт-дисплей выводится без views, обычным шаблоном tpl.php + display suite ds-reset.
Насколько я понимаю этот код нужно встроить в шаблон, и при этом заранее загрузить все связанные фото всех связанных товаров.
/**
Этот хук изменяет вывод ноды продукт-дисплей, его нужно добавить в свой модуль. Почитайте про написание своих модулей:
http://drupalbook.ru/content/razrabotka-modulei-dlya-drupala
В этом коде нужно будет поменять
На имя вашего дисплея, скорее всего это full.
На имя вашего поля, которое в продукте.
Доброго времени суток.
Доброго времени суток.
Прочитал, посмотрел, до сих пор победить так и не получилось. Подскажите куда смотреть и где искать.
Создал модуль, вставил туда этот код:
После включения модуля ничего не меняется, ни ошибок ни предупреждений, ничего:(
Может существует какой-нибудь модуль или софтина для пошаговой отладки?
function HOOK_entity_prepare
HOOK нужно заменить на имя своего модуля.
Контент тип проверьте возможно у вас product
Поле связи которое у вас в контент типе на коммерцовский продукт.
Имя поля которое в коммерцевском продукте
Проверьте, подставьте ваши значения названия типов материалов и полей.
В очередной раз спасибо!
В очередной раз спасибо!
ничего не работало из-за названия функции. теперь посыполась целая куча ошибок типа:
Если я правильно понимаю проблема в языке, точнее в его неопределенности. Товары и дисплеи импортируются через Feeds, вот только у дисплеев значение ru, а у товаров или ' ' или und(при пересохранении). В настройках feeds и там и там язык установлен русский.
Подскажите в каком направлении искать решение?
У вас несколько языков на
У вас несколько языков на сайте? Если нет, то переключайте все на und (неопределенный язык). Если несколько языков то нужно вместо und писать $node->language, тогда префикс будет выставляться автоматически.
Добрый день!
Добрый день!
Так и не получается реализовать вывод всех фото.
Язык один. Очистил весь контент, создал пару товаров и продуктдисплей для них(без feeds). У товаров язык - und, у продуктдисплея - ru. Ошибки ушли, но фото так и не работают, точнее отображаются как обычно.
Может я что-то упустил и в код модуля что-то еще нужно добавить?
Последовательность действий была такая:
1) Создал chudo.info
2) Создал chudo.module
вставил в него этот код:
3) поменял значения на свои
4) активировал модуль и почистил кэш
Если язык один, то можете
Если язык один, то можете использовать LANGUAGE_NONE, код станет меньше.
$photos_field_name я правильно понял, что у вас поля картинок называются одинаково в product display и commerce product?
Мне кажется нужно записывать в переменную $entity, сейчас так:
$display
->{
$photos_field_name
}[
$product_field_language
][] =
$image
;
Попробуйте добавлять в $entity:
$entity
->{
$photos_field_name
}[
$product_field_language
][] =
$image
;
Нет,
Нет,
в commerce product - field_product_photo
а в product display - field_photo
Но я бы не хотел использовать в product display поле фото. То есть чтобы оно было только в commerce product, если это конечно возможно.
Тогда должно быть $entity-
Тогда должно быть $entity->field_photo.
Спасибо за помощь!!!
Спасибо за помощь!!!
В конечном итоге заработал такой код:
Но выяснилось что гораздо проще сделать тоже самое через Views.