Как на главную к брендам вывести описание из админки?

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

MadDog
MadDog
Репутация: 2
Сообщения: 15
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #1 MadDog » 03.12.2019, 10:19

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

Код: Выделить всё

 <div class="block padding">
         {$lang->brands}|????? что сюда писать чтобы описание вывести из бренда?
      </div>




2 И как сделать так чтобы ВСЕ! бренды выводились, без условия, что если товар есть.

Большое спасибо всем кто поможет

wnemy M
wnemy M
Возраст: 29
Репутация: 5
Сообщения: 18
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #2 wnemy » 03.12.2019, 10:30

{foreach $all_brands as $brand}
{$brand->description} //описание
{$brand->annotation} //краткое описание
{/foreach}

MadDog
MadDog
Репутация: 2
Сообщения: 15
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #3 MadDog » 03.12.2019, 11:06

О соединилось. спасибо!
Мне, право, не удобно настаивать. но очень надо)

А как сделать так чтобы ВСЕ! бренды выводились, без условия, что если товар есть. Сейчас они выводятся если только к ним подцеплен товар. Интуитивно чувствую что надо что то убрать, но убираю что-то не то и роняю сайт( Не судите строго, я только учусь

Код: Выделить всё

{if $all_brands}
       <div class="fn_all_brands all_brands block">
            {foreach $all_brands as $b}
                <div class="fleft">
                    <a class="all_brands_link" href="{$lang_link}brands/{$b->url}" data-brand="{$b->id}">
                        {if $b->image}
                            <div class="brand_image">
                                <img class="brand_img" src="{$b->image|resize:250:250:false:$config->resized_brands_dir}" alt="{$b->name|escape}" title="{$b->name|escape}">
                            </div>
                            <span>{$b->name|escape}</span>
                        {else}
                            <div class="brand_name">
                                <span>{$b->name|escape}</span>
                            </div>
                        {/if}
                    </a>
                </div>
            {/foreach}
{/if}

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #4 zyxer » 03.12.2019, 11:18

вызов ф-ции так же выглядит {get_brands var=all_brands visible_brand=1}?
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

wnemy M
wnemy M
Возраст: 29
Репутация: 5
Сообщения: 18
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #5 wnemy » 03.12.2019, 11:24

MadDog, не знаю какую вы версию используете, но в версии 3.3.0 бренды выводятся даже если в них нет товаров. Посмотрите в админке (/backend/index.php?controller=BrandsAdmin) может активность отключена

MadDog
MadDog
Репутация: 2
Сообщения: 15
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #6 MadDog » 03.12.2019, 15:29

Версия 2.3.4
такого урла нет по нему ничего не открывается, но есть /backend/index.php?module=BrandsAdmin
Я пока лайт мучаю. Активность естессно включена)

2 zyxer да вызов функции именно так и выглядит. бренды появляются если хоть 1 товар зацепить к ним.

Добавлено спустя 30 минут 11 секунд:
Скачала последнюю версию в файле main.tpl отличий никаких нет 100% совпадение.
Более того при удалении всех товаров отвалились и все бренды, соответственно, если к ним не зацеплен товар они не отображаются и в новой версии)

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #7 zyxer » 03.12.2019, 16:15

Попробуйте в view/View.php в методе get_brands_plugin() убрать
if(!isset($params['visible'])) {
$params['visible'] = 1;
}
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

MadDog
MadDog
Репутация: 2
Сообщения: 15
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #8 MadDog » 03.12.2019, 16:41

ЕЕЕЕЕЕЕЕЕЕЕЕЕ работает!!
Только не смейтесь)) НО)) Осталось понять почему я
Вставила вот это
{foreach $all_brands as $brand}
{$brand->annotation}
{/foreach}
перед закрывающимся </div> блока fleft

и теперь каждое из 5 описаний дублируется у всех брендов, то есть 5 брендов с описаниями и у каждого из них зацепилось в столбик 5 описания.
Я куда то не туда вставила? Я вставила не то? Не тем концом?
Учебник смарти уже открыт, но на это надо время, а штуку эту заставить работать хочется сейчас.

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #9 zyxer » 04.12.2019, 06:12

Тогда покажите весь код tpl файла
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

MadDog
MadDog
Репутация: 2
Сообщения: 15
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #10 MadDog » 05.12.2019, 18:08

Пока не удалось уговорить его не делать так

Код: Выделить всё

{* Brand list *}
    {get_brands var=all_brands visible_brand=1}
    {if $all_brands}
       <div class="fn_all_brands all_brands block">
            {foreach $all_brands as $b}
                <div class="fleft">                                         
                            <div class="brand_image">
                                <img class="brand_img" src="{$b->image|resize:250:250:false:$config->resized_brands_dir}" alt="{$b->name|escape}" title="{$b->name|escape}">
                            </div>
                            <div class="h3">{$b->name|escape}</div>                                           
               
                            {foreach $all_brands as $brand}   
                             <div class="block_brands">                           
                             {$brand->annotation}
                             </div>
                            {/foreach}                     
                </div>
            {/foreach}
     
        </div>
    {/if}


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

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #11 zyxer » 05.12.2019, 18:28

Так уберите вложеный форыч
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

MadDog
MadDog
Репутация: 2
Сообщения: 15
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #12 MadDog » 05.12.2019, 20:53

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

Код: Выделить всё

{if $all_brands}
       <div class="fn_all_brands all_brands block">
            {foreach $all_brands as $b}
                <div class="fleft">                                         
                            <div class="brand_image">
                                <img class="brand_img" src="{$b->image|resize:250:250:false:$config->resized_brands_dir}" alt="{$b->name|escape}" title="{$b->name|escape}">
                            </div>
                            <div class="h3">{$b->name|escape}</div>                                           
               
                             
                             <div class="block_brands">                           
                             {$brand->annotation}
                             </div>
                                       
                </div>
            {/foreach}
     
        </div>
    {/if}

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #13 zyxer » 05.12.2019, 21:19

Вы перебираете как $b, а считывать пытаетесь с переменной $brand
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

MadDog
MadDog
Репутация: 2
Сообщения: 15
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #14 MadDog » 06.12.2019, 08:08

Я brand интуитивно на $b меняла и везде и по одиночке ничего не изменилось, или пропадает вообще, или без изменений.
может быть вот тут вместо закомментированного куска
if(!isset($params['visible'])) {
$params['visible'] = 1;
}

что то другое надо?

Вот так пропадает всё включая картинку

Код: Выделить всё

{foreach $all_brands as $brand}   
                             <div class="block_brands">                           
                             {$b->annotation}
                             </div>
 {/foreach}   



Вот так опять 25 описаний :)

Код: Выделить всё

{foreach $all_brands as $b}   
                             <div class="block_brands">                           
                             {$b->annotation}
                             </div>
                            {/foreach}   


Как же тяжело быть тупенькой))

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #15 zyxer » 06.12.2019, 08:41

давайте кратко расскажу как работают циклы:
Есть массив значений ($all_brands), и когда вы пишите {foreach $all_brands as $brand} вы с каждой итерацией цикла помещаете в переменную $brand одно значение, на которое смотрит указатель (один бренд).
Так вот, внутри этого цикла вам нужно работать с переменной $brand (или если вы написали {foreach $all_brands as $b}, тогда нужно работать с переменной $b). Вы выше писали где цикл {foreach $all_brands as $b} но поле annotation считывали из переменной {$brand->annotation} (которой нет)

Добавлено спустя 47 секунд:
Вам нужно чтобы код был таким

Код: Выделить всё

{if $all_brands}
       <div class="fn_all_brands all_brands block">
            {foreach $all_brands as $b}
                <div class="fleft">                                         
                            <div class="brand_image">
                                <img class="brand_img" src="{$b->image|resize:250:250:false:$config->resized_brands_dir}" alt="{$b->name|escape}" title="{$b->name|escape}">
                            </div>
                            <div class="h3">{$b->name|escape}</div>                                           
               
                             
                             <div class="block_brands">                           
                             {$b->annotation}
                             </div>
                                       
                </div>
            {/foreach}
        </div>
    {/if}
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS

MadDog
MadDog
Репутация: 2
Сообщения: 15
Зарегистрирован: 03.12.2019
С нами: 4 года 3 месяца

Сообщение #16 MadDog » 06.12.2019, 18:16

Я не знаю как Вас отблагодарить буквами. Вы очень помогли.
Спасибо за объяснение.
Пошла курить мануал по смарти.
Так переменные я подставляла, но ума второй цикл убрать не хватило, хотя это настолько очевидно, что даже обидно) Всё работает.

zyxer M
zyxer M
Возраст: 32
Репутация: 77
Сообщения: 419
Зарегистрирован: 03.02.2016
С нами: 8 лет 1 месяц
Откуда: Днепр

Сообщение #17 zyxer » 07.12.2019, 08:53

Если хотите обучаться, рекомендую сразу разобраться с PHP, а потом разобраться только с синтаксисом смарти ИМХО)
Всё сказанное мной, является лично моим мнением, и не является официальной позицией OkayCMS


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 26 гостей