Тема: Вывести текст только на товарах определённого бренда

Добрый день.
Подскажите пожалуйста, возможно ли вывести определённый текст в карточке товара в зависимости от бренда который присвоен товару? Шаблон Unishop.

Thumbs up Thumbs down

2

Re: Вывести текст только на товарах определённого бренда

Вариантов много, но все нужно допиливать.
1) делаете свой шаблон товара и подставляете в нужный товар.
2) дополнительные поля и заполняете в нужном товаре.
3) создаете виджет и выводите в нужном товаре.
Предугадывая Вашу ситуацию, Вам нужно создать виджет  и вывести его через оператор if с проверкой на бренд в нужном товаре.

А вообще-то, вопрос не развернут.

3

Re: Вывести текст только на товарах определённого бренда

Дык через конструкцию {if}...{/if} и все.

Thumbs up Thumbs down

Re: Вывести текст только на товарах определённого бренда

А как в конструкции {if}...{/if} проверить соответствие бренда необходимому?
По типу если бренд = "тест", то выводим "текст".

Thumbs up Thumbs down

5

Re: Вывести текст только на товарах определённого бренда

У Вас получилось?

Дмитрий Балюк пишет:

А как в конструкции {if}...{/if} проверить соответствие бренда необходимому?
По типу если бренд = "тест", то выводим "текст".

Поделитесь пожалуйста.
И название виджета = названию бренда у Вас?

6

Re: Вывести текст только на товарах определённого бренда

Самое простое:

{if $brand->getName() == 'вписываем_название_бренда'}
...
{/if}

Можно канеш и через ID бренда сравнивать, а не через имя, потому что неизвестно как будут обрабатываться бренды на кириллице:

{if $brand->getId() == 'вписываем_ID_бренда'}
...
{/if}

Thumbs up Thumbs down

7

Re: Вывести текст только на товарах определённого бренда

Спасибо, но такая конструкция не чем не отличается если просто сделать под бренд отдельную tpl.
Можно ли как-то  сделать проверку на

{if $brand->getId()

и наличие такого же виджита? Но, это надо перебрать массив виджетов?
Короче проще сделать tpl под бренды; беда в том, что через импорт товара tpl не внесешь.

8

Re: Вывести текст только на товарах определённого бренда

Вы хотите сделать проверку на проверку? ))

Опишите конкретно, что и где (на какой странице вы хотите выводить) - текст выводящийся только на карточку товара конкретного бренда или что-то другое?

А то я не очень понимаю смысла этих манипуляций... еще и виджет какой-то...

Thumbs up Thumbs down

9 Отредактировано Олег (20-01-2017 17:31:23)

Re: Вывести текст только на товарах определённого бренда

Есть некий блок текста, который бы хотелось добавить на страницу товара, в зависимости от бренда. И потом его часто менять.
В само описание товара вносить этот текст не вариант, т.к. часто меняется, через импорт это тоже много  времени.

Мысль была такова:
создать виджет Адидас;
внести в него текст или др.;
потом через IF  в товаре под брендом Адидас его вывести;

Но, брендов больше 1-го и виджетов тоже больше 1-го.
На тесте пока такой вариант

{widget($model->getBrand()->getName())}

При совпадении бренда с виджетом - виджет выводится. Не нравиться, то, что оформление нужно засовывать в виджет

10 Отредактировано Andrei_Ts (20-01-2017 18:31:19)

Re: Вывести текст только на товарах определённого бренда

Если я правильно понял задачу...

Т.к. брендов больше 1-го, например 50 штук, в "Дополнительных полях" создаете доп. поле для Типа - Бренд, затем заполняете для всех нужных брендов это поле (страница редактирования бренда -> дополнительные данные) и выводите его. Только вот конструкция

{echo ShopCore::app()->CustomFieldsHelper->_getOneCustomFieldsByName('textytext','brand', $model->getId())['field_data']}

не срабатывает - я сделал по аналогии с выводом доп полей для товара - не работает. Осталось спросить у суппорта как выводить доп поле бренда. Спросите у суппорта - как вывести в шаблоне доп поле бренда и тогда соорудим полный "костыль" так сказать ))

А с оформлением - несложно, но только после того как будет ясно с методом вывода доп поля бренда. И никаких виджетов не надо будет )) Все уложится в 5-6 строчек.

Thumbs up Thumbs down

11

Re: Вывести текст только на товарах определённого бренда

Поддержка пишет:

В файле \templates\unishop\shop\brand.tpl в нужном месте вставьте конструкцию

{$f = ShopCore::app()->CustomFieldsHelper->getOneCustomFieldsByNameArray('brend', 'brand', $model->getId())}
{$f.field_name}:{$f.field_data}

где brend - название Вашего доп.поля , которое Вы создали для бренда.

Но здесь выведет конкретное доп.поле и на стр. всех брендов, ну или в том бренде, шаблон которого изменю.

12 Отредактировано Andrei_Ts (28-01-2017 12:56:28)

Re: Вывести текст только на товарах определённого бренда

Покопавшись в классе CustomFieldsHelper, можно вывести следующую рабочую конструкцию для вывода содержимого доп поля текущего бренда (т.е. на страничке карточки товара которого сейчас юзер находится):

{$brand = $model->getBrand()}
{$d = ShopCore::app()->CustomFieldsHelper->getOneCustomFieldsByNameArray('textytext', 'brand', $brand->getId())}
{$d.field_label} - {$d.field_data}

Вместо textytext впишите своё доп поле (не метку, а именно название на латинице то которое дали при создании это доп поля) - а второй строчкой выводится метка поля (т.е. то как оно должно называться на странице сайта) и собственно содержимое поля. Уже оформление форматируется как угодно.

Проверял на своей демо-площадке - все работает и выводится как надо.

P.S. И скажите суппорту что в первой строчке кода надо передавать не ID продукта, а ID бренда ))

Thumbs up Thumbs down

13

Re: Вывести текст только на товарах определённого бренда

Всем привет! Столкнулся с похожей проблемой. У меня вместо кнопки купить идет реферальная ссылка.
До этого хранил ссылку в поле MetaKeywords бренда и получал ее вот таким способом

          <a href="{echo $model->getBrand()->getMetaKeywords()}" target="_blank">
          <button class="product-buy__btn product-buy__btn--buy">
          <span>{tlang('Add to Cart')}</span>
          </button>
          </a>
 

после обновления на 4.12 эта конструкция перестала работать, да и появилась возможность сделать все правильно через доп поле бренда. Создал доп поле бренда reflink. Но не могу понять как к нему обратиться.

Особенность в том, что это нужно использовать как на странице товара, так и в категории.

Подскажите пожалуйста

Thumbs up Thumbs down

14

Re: Вывести текст только на товарах определённого бренда

kerega пишет:

Создал доп поле бренда reflink. Но не могу понять как к нему обратиться.
Особенность в том, что это нужно использовать как на странице товара, так и в категории.

Если на странице товара - то по способу описанному мною постом выше. Если на странице категории - то тут зависит от того, какой шаблон Вы используете, точнее, как в нем в category.tpl выводится список товаров. Выкладывайте код category.tpl - будем смотреть.

Thumbs up Thumbs down

15

Re: Вывести текст только на товарах определённого бренда

Стандартный шаблон Unishop. Сам код кнопки находится в стандартном файле product_buy.tpl
вот весь код файла

{$in_cart = getAmountInCart('SProducts', $model->firstVariant->getId())}
{$in_stock = $model->firstVariant->getStock()}
<div class="product-buy">
    <!-- Items in stock -->
    <div class="product-buy__available {$parent_modifier} {echo $in_stock > 0 ? '' : 'hidden' }">

        <div class="product-buy__buttons {echo $in_cart > 0 ? 'hidden' : '' }">
            <a href="{echo $model->getBrand()->getMetaKeywords()}" target="_blank">
                <button class="product-buy__btn product-buy__btn--buy">
                    <span>{tlang('Add to Cart')}</span>
                </button>
            </a>
        </div>
    </div>


</div>

Я выше написал, что реализация через getMetaKeywords перестала работать - беру свои слова обратно. Все работает.
Т.е. нужно понять как вместо значения поля MetaKeywords бренда получить значения доп. поля reflink

Thumbs up Thumbs down

16

Re: Вывести текст только на товарах определённого бренда

{$in_cart = getAmountInCart('SProducts', $model->firstVariant->getId())}
{$in_stock = $model->firstVariant->getStock()}

{$brandy = $model->getBrand()}
{$d = ShopCore::app()->CustomFieldsHelper->getOneCustomFieldsByNameArray('reflink', 'brand', $brandy->getId())}

<div class="product-buy">
    <!-- Items in stock -->
    <div class="product-buy__available {$parent_modifier} {echo $in_stock > 0 ? '' : 'hidden' }">

        <div class="product-buy__buttons {echo $in_cart > 0 ? 'hidden' : '' }">
            <a href="{$d.field_data}" target="_blank">
                <button class="product-buy__btn product-buy__btn--buy">
                    <span>{tlang('Add to Cart')}</span>
                </button>
            </a>
        </div>
    </div>
</div>

Thumbs up +1 Thumbs down