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


#631

А контроллер админский или витринный? Если админский, то проблема в авторизации

Спасибо, разобрался )

Подскажите еще пожалуйста, сделал кастомную страницу для админки по средствам модуля, администратору она досупна, а как сделать доступ к ней через vendor.php? Сейчас выдает 403 access denied.

Спасибо!


#632

Спасибо, разобрался )

Подскажите еще пожалуйста, сделал кастомную страницу для админки по средствам модуля, администратору она досупна, а как сделать доступ к ней через vendor.php? Сейчас выдает 403 access denied.

Спасибо!

Нужно в модуле создать файл schemas/permissions/vendor_multivendor.post.php и записать в него:

$schema['controllers']['ВАШ_КОНТРОЛЛЕР']['modes']['ВАШ_МОД'] = array (
    'permissions' => true,
);

return $schema;


#633

Нужно в модуле создать файл schemas/permissions/vendor_multivendor.post.php и записать в него...

Спасибо! Помогло, только нужно еще выключить/включить модуль, чтоб post controller заработал )


#634

Спасибо! Помогло, только нужно еще выключить/включить модуль, чтоб post controller заработал )

Все схемы кэшируются, можно было просто очистить кэш


#635

Здравствуйте.

Сделал кнопку "в корзину" в каталоге.

Как мне правильно поменять текст кнопки с использованием языковой переменной?

Нужно в [module_id]/overrides/blocks/list_templates/grid_list.tpl присвоить значение параметру but_text, но как правильно присвоить ему значение языковой переменной?

Пробовал but_text=_("buy') - не выходит!


#636

Здравствуйте.

Сделал кнопку "в корзину" в каталоге.

Как мне правильно поменять текст кнопки с использованием языковой переменной?

Нужно в [module_id]/overrides/blocks/list_templates/grid_list.tpl присвоить значение параметру but_text, но как правильно присвоить ему значение языковой переменной?

Пробовал but_text=_("buy') - не выходит!

Извиняюсь!

Работал с файлом [module_id]/blocks/product_list_templates/product_multicolumns.tpl


#637

Извиняюсь!

Работал с файлом [module_id]/blocks/product_list_templates/product_multicolumns.tpl

Используйте but_text=__("ВАША_ПЕРЕМЕННАЯ"), а саму переменную добавьте в админке через переводы.


#638

Используйте but_text=__("ВАША_ПЕРЕМЕННАЯ"), а саму переменную добавьте в админке через переводы.

Благодарю!


#639

Здравствуйте.

Создал контроллер и два mode. Соответственно есть две страницы.

Задача, в админке при отправке формы сделать переход с первой на вторую.

Первая содержит форму


{capture name="mainbox"}

{if “ULTIMATE”|fn_allowed_for && $runtime.company_id}
{assign var=“company_id” value=$runtime.company_id}
{/if}

{include file=“pickers/products/picker.tpl” data_id=“added_products” input_name=“label_print[product_ids]” no_item_text=__(“text_no_items_defined”, ["[items]" => __(“products”)]) type=“links” company_id=$company_id placement=“right”}

{/capture}

{capture name=“buttons”}

{include file="buttons/button.tpl" but_text=__("live_preview") but_name="dispatch[label_print.update]" but_role="submit-button"}
{/capture}

{include file=“common/mainbox.tpl” title=__(“products”) content=$smarty.capture.mainbox buttons=$smarty.capture.buttons select_languages=$select_languages}

Вторая выводит результат.

И вот при выводе (адрес второй страницы задаю в атрибуте action формы), нет половины меню админки (есть только валюты, языки и пользователи)

Причем, если вызвать страницу через адресную строку, то все нормально.

В чем может быть дело?

Спасибо.


#640

Причем, если вызвать страницу через адресную строку, то все нормально.

В чем может быть дело?

Спасибо.

У вас форма постом уходит, а при запуске в браузере используется метод GET. Cкорее всего в этом проблема. Попробуйте поменять метод или делайте редирект после обработки данных формы в контроллере


#641

У вас форма постом уходит, а при запуске в браузере используется метод GET. Cкорее всего в этом проблема. Попробуйте поменять метод или делайте редирект после обработки данных формы в контроллере

Спасибо огромное! Часа два с этим мучился. Интересно почему так происходит?

Еще пробовал вариант отправки формы через ссылку с классом cm-submit, форма не отправляется (данные до контроллера не доходят), хотя на странице редактирования товара используется именно этот метод отправки.


#642

делайте редирект после обработки данных формы в контроллере

А может есть для этого функция стандартная?


#643

А может есть для этого функция стандартная?

Посмотрите любой контроллер. Код такой нужно использовать

return array(CONTROLLER_STATUS_REDIRECT, 'label_print.update');

#644

Посмотрите любой контроллер. Код такой нужно использовать

Да работает. Только вот так, наверное нельзя сделать:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($mode == 'update') {
        $products_ids = empty($_REQUEST['label_print']['product_ids']) ? array() : explode(',', $_REQUEST['label_print']['product_ids']);
    $print_data = array();

    foreach ($products_ids as $k) {
        $product_data = db_get_hash_array("SELECT product_id, product_code FROM ?:products WHERE product_id = ?i", 'product_id', $k);
        $print_data += $product_data;
    }
    Tygh::$app['view']->assign('print_data', $print_data);
    return array(CONTROLLER_STATUS_REDIRECT, 'label_print.update');
}

}

Данные обработки теряются. Я их в return могу добавить? У меня получилось что обработка, а затем редирект на тот же контроллер только без отправки формы с потерей результатов обработки.


#645

Здравствуйте.

Подскажите, пожалуйста, как сделать, чтобы при изменении опции товара в каталоге его цена пересчитывалась автоматически, так же, как и на странице товара?


#646

Да работает. Только вот так, наверное нельзя сделать:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($mode == 'update') {
        $products_ids = empty($_REQUEST['label_print']['product_ids']) ? array() : explode(',', $_REQUEST['label_print']['product_ids']);
    $print_data = array();

    foreach ($products_ids as $k) {
        $product_data = db_get_hash_array("SELECT product_id, product_code FROM ?:products WHERE product_id = ?i", 'product_id', $k);
        $print_data += $product_data;
    }
    Tygh::$app['view']->assign('print_data', $print_data);
    return array(CONTROLLER_STATUS_REDIRECT, 'label_print.update');
}

}

Данные обработки теряются. Я их в return могу добавить? У меня получилось что обработка, а затем редирект на тот же контроллер только без отправки формы с потерей результатов обработки.

Попробуйте так

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($mode == 'update') {
        fn_save_post_data('label_print');
        return array(CONTROLLER_STATUS_REDIRECT, 'label_print.update');
    }
}

if ($mode == ‘update’) {
$label_print = fn_restore_post_data(‘label_print’);
$products_ids = empty($label_print[‘product_ids’]) ? array() : explode(’,’, $label_print[‘product_ids’]);

    $print_data = array();

    foreach ($products_ids as $k) {
        $product_data = db_get_hash_array("SELECT product_id, product_code FROM ?:products WHERE product_id = ?i", 'product_id', $k);
        $print_data += $product_data;
    }
    Tygh::$app['view']->assign('print_data', $print_data);

}


Здравствуйте.

Подскажите, пожалуйста, как сделать, чтобы при изменении опции товара в каталоге его цена пересчитывалась автоматически, так же, как и на странице товара?

Вы в каком шаблоне каталога показываете опции?


#647

Попробуйте так

Спасибо!!! Так все работает.

Не знал я о таких готовых функциях. Разработчикам надо мануал по функциям сделать, какая за что отвечает. Многие вопросы по разработке отпадут (по крайней мере у меня :grin: ).

Еще раз спасибо.


#648

Спасибо!!! Так все работает.

Не знал я о таких готовых функциях. Разработчикам надо мануал по функциям сделать, какая за что отвечает. Многие вопросы по разработке отпадут (по крайней мере у меня :grin: ).

Еще раз спасибо.

а пока скудные комментарии к функциям и fn_print_r чтобы понять что функция хочет на входе и выдает на выходе )

Спасибо eComLabs а то ж некоторые вещи методом тыка не очень даются уразуменимю )


#649

а пока скудные комментарии к функциям и fn_print_r чтобы понять что функция хочет на входе и выдает на выходе )

Спасибо eComLabs а то ж некоторые вещи методом тыка не очень даются уразуменимю )

Это точно.

Хочется услышать официальное мнение.


#650

Попробуйте так

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($mode == 'update') {
        fn_save_post_data('label_print');
        return array(CONTROLLER_STATUS_REDIRECT, 'label_print.update');
    }
}

if ($mode == ‘update’) {
$label_print = fn_restore_post_data(‘label_print’);
$products_ids = empty($label_print[‘product_ids’]) ? array() : explode(’,’, $label_print[‘product_ids’]);

    $print_data = array();

    foreach ($products_ids as $k) {
        $product_data = db_get_hash_array("SELECT product_id, product_code FROM ?:products WHERE product_id = ?i", 'product_id', $k);
        $print_data += $product_data;
    }
    Tygh::$app['view']->assign('print_data', $print_data);

}

Вы в каком шаблоне каталога показываете опции?

products_multicolumns