Вопросы по разработке и модификации CS-Cart

Добрый день.

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

Вроде бы обычная ситуация, но никак не получается.

В базе данных есть код, состоящий из html + парочки javascript:

Если выводить в smarty через nofilter, то выводятся скрипты, но не выводится html. Как следствие - ничего не работает.

{$my_var nofilter}

Если выводить в smarty просто переменную, то не выводит вообще ничего:

{$my_var}

Не нашел ответа в официальной документации.

Как же вывести полностью мое значение?

Распишите подробнее, как вы сохраняете значение вашей переменной и как пытаетесь его вывести.

Добрый день.

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

Вроде бы обычная ситуация, но никак не получается.

В базе данных есть код, состоящий из html + парочки javascript:

Если выводить в smarty через nofilter, то выводятся скрипты, но не выводится html. Как следствие - ничего не работает.

{$my_var nofilter}

Если выводить в smarty просто переменную, то не выводит вообще ничего:

{$my_var}

Не нашел ответа в официальной документации.

Как же вывести полностью мое значение?

Надо, конечно, на месте смотреть. Может быть HTML выводится, но начинает работать скрипт и отваливается, поэтому html не видно?

Вскипел мозг!

Задача передать переменную $header_class из default_template.tpl в sidebox_general.tpl

sidebox_general.tpl родительский шаблону default_template.tpl

в default_template.tpl пишу:

{assign var="header_class" value="hidden" scope="parent"}

в sidebox_general.tpl переменной не видно :confused: Что я делаю не так?

Вот из feature_comparison.tpl переменную $hide_wrapper почему то видно в sidebox_general.tpl , хотя принцип тот же.

У вас точно sidebox_general.tpl указан для Основного контента?

http://prntscr.com/9p3ihc

У вас точно sidebox_general.tpl указан для Основного контента?

Точно. Указана "Обычная секция", это и есть sidebox_general.tpl Все тэги, классы все от sidebox_general.tpl Но при распечатке (fn_print_r) видно что переменная не уходит за пределы default_template.tpl

Может как-то есть возможность отследить почему она дальше к родителю не идет?

А попробуйте scope в global установить, изменится что-нибудь?

А попробуйте scope в global установить, изменится что-нибудь?

Да, влияет на все sidebox_general.tpl на странице, как и должно быть, а надо только на главное содержимое.

Попробовал с фильтром original.tpl, там все работает, а в вертикальном меню dropdown_vertical.tpl - нет.

Ничего не понимаю. Можно как то посмотреть порядок подключения шаблонов?

Да, влияет на все sidebox_general.tpl на странице, как и должно быть, а надо только на главное содержимое.

Попробовал с фильтром original.tpl, там все работает, а в вертикальном меню dropdown_vertical.tpl - нет.

Ничего не понимаю. Можно как то посмотреть порядок подключения шаблонов?

Используемые шаблоны можно посмотреть, пройдя по ссылке Дизайн > Шаблоны > Шестеренка > Перейти к витрине в Режиме Дизайна.

В общем ситуация такая. Переменная с атрибутом scope видна только в локальном и непосредственно родительском шаблоне. А так как порядок подключения шаблонов: sidebox_general.tpl => view.tpl => default_template.tpl ,то в sidebox_general.tpl переменные из default_template.tpl не видны.

Итого

{assign var="header_class" value="hidden" scope="parent"}

надо писать в шаблон view/products/view.ptl

Кстати, это нормальное поведение smarty или это настройка smarty такая?

Имеется ввиду значение scope = parent, конечно

Надо, конечно, на месте смотреть. Может быть HTML выводится, но начинает работать скрипт и отваливается, поэтому html не видно?

Дело в самом смарти. Он почему-то обрезает HTML.

Код, который нужно вывести, тупо берется из ячейки БД.

Скриптов, которые бы повлияли, нет.

Может неправильно использую синтаксис смарти?

Как можно тупо взять и 100% вывести через смарти содержание ячейки БД.

Где именно вывожу?

В темплейте в хуке index:scripts

{foreach from=$config.host_params key=k item=v}
        {if $v.param_type == 'S' || $v.param_type == 'CS'}
            {$v.param_value nofilter}
        {/if}
    {/foreach}

Дело в самом смарти. Он почему-то обрезает HTML.

Код, который нужно вывести, тупо берется из ячейки БД.

Скриптов, которые бы повлияли, нет.

Может неправильно использую синтаксис смарти?

Как можно тупо взять и 100% вывести через смарти содержание ячейки БД.

Где именно вывожу?

В темплейте в хуке index:scripts

{foreach from=$config.host_params key=k item=v}
        {if $v.param_type == 'S' || $v.param_type == 'CS'}
            {$v.param_value nofilter}
        {/if}
    {/foreach}

Этот хук находится между тегами

{scripts}

и

{/scripts}

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

Добрый день.

Что-то не могу понять. Есть массив $options настроек модуля:

Array
(
    [new_sticker] => Array
        (
            [6613] => Array
                (
                    [object_id] => 6613
                    [name] => new_sticker_image
                    [section_id] => 305
                    [section_tab_id] => 307
                    [type] => E
                    [edition_type] => ROOT
                    [position] => 0
                    [is_global] => N
                    [handler] => 
                    [parent_id] => 0
                    [description] => Изображение стикера
                    [tooltip] => 
                    [object_type] => O
                    [value] => sticker.tpl
                    [section_name] => tcs_stickers
                    [section_tab_name] => new_sticker
                    [variants] => Array
                        (
                        )
            )

        [6614] => Array
            (
                [object_id] => 6614
                [name] => show_new_sticker_time

Как получить доступ к значениям через smarty

Делаю так

{fn_print_r($options  //а вот дальше проблема//  .section_tab_name.object_id  //это не то//)}

Откуда берутся ключи массива 6613, 6614? И есть ли возможность распечатать не значение ключа, а его "исходную переменную" что ли, иногда не очевидно откуда берется ключ массива. (надеюсь не бред написал :-) )

Спасибо.

Ключ видимо автоматом подставляется при выборке из базы и равен он айдишнику объекта (стикера).

{$options.new_sticker.6613|fn_print_r}

или

{foreach from=$options.new_sticker item=sticker key=key}
    {$sticker|fn_print_r}
{/foreach}

Ключ видимо автоматом подставляется при выборке из базы и равен он айдишнику объекта (стикера).

Опять же доступ только по конкретному имени ключа.

Видимо есть какой то стандартный алгоритм т.к это настройки аддона из файла addon.xml


template
sticker.tpl
input
30

new_sticker это id секции настроек, но по

{$options.section_id|fn_print_r}

в файле sticker.tpl пусто. Может это section_name или name_section ?

Можно попробовать конечно перебором массива $options ,но я думаю есть решение проще, ведь в модулях же как-то же вызывают настройки модуля в нестандартном шаблоне, таких модулей полно.

Так, напишите, что вы хотите получить в шаблоне sticker.tpl?

Так, напишите, что вы хотите получить в шаблоне sticker.tpl?

Шаблон включает файл: common/attach_images.tpl

Шаблон должен добавлять картинку стикера, т.к типов стикеров несколько, а плодить кучу шаблонов не хотелось бы, то туда надо передать $new_sticker.6613.description. и подставить в название настройки (название

Помимо этого common/attach_images.tpl еще требует image_name image_pair image_object_id вот это вообще непонятно откуда брать? Может в видео есть, но я не видел.

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

В новом модуле YML нужно внести изменение - в поле Код поставщика должно быть значение из поля 1c_code таблицы cscart_products.

?dispatch=yml.offers_params

[attachment=10696:image.png]

В старом модуле я разобрался, а тут проблема ...

image.png

Шаблон включает файл: common/attach_images.tpl

Шаблон должен добавлять картинку стикера, т.к типов стикеров несколько, а плодить кучу шаблонов не хотелось бы, то туда надо передать $new_sticker.6613.description. и подставить в название настройки (название

Помимо этого common/attach_images.tpl еще требует image_name image_pair image_object_id вот это вообще непонятно откуда брать? Может в видео есть, но я не видел.

Почему тогда перебором нельзя?

Данные по картинке вы можете получить функцией fn_get_image_pairs (app/functions/fn.images.php)

Почему тогда перебором нельзя?
{foreach from=$options item=stickers key=key}
    {$stickers|fn_print_r}
{/foreach} 

Все равно не могу добраться до настроек, все равно упираюсь в значения [6613] ...

Array
(
    [6613] => Array
        (
            [object_id] => 6613
            [name] => new_sticker_image
            [section_id] => 305
            [section_tab_id] => 307
            [type] => E
            [edition_type] => ROOT
            [position] => 0
            [is_global] => N
            [handler] => 
            [parent_id] => 0
            [description] => Изображение стикера
            [tooltip] => 
            [object_type] => O
            [value] => sticker.tpl
            [section_name] => tcs_stickers
            [section_tab_name] => new_sticker
            [variants] => Array
                (
                )
    )

[6614] => Array
    (
        [object_id] => 6614
        [name] => show_new_sticker_time