1,601

(65 ответов, оставленных в Вопросы по работе с системой)

Андрей надо подтянуть знания по формам и работе с массивами. smile

if (isset($_POST['userfields_arr'])){ //Если нужное поле пришло из запроса
   $order['userfields'] = serialize($_POST['userfields_arr']);   
}

Вот и всё.

1,602

(65 ответов, оставленных в Вопросы по работе с системой)

Ну так поменяйте его или объедините как

...
name="userfields_arr[моё поле]"
...
name="userfields_arr[моё поле 2]"

Тогда будете ловить переменную userfields_arr которая придёт как массив.
Это же элементарная отправка формы.

1,603

(65 ответов, оставленных в Вопросы по работе с системой)

Ну у Вас в POST 2 поля приходят. Соответственно, в массиве для сохранения нужно указать 2 поля.

$myarray = array(
    'current_val' => $_POST['current_val'],
    'name второго поля' => $_POST['name второго поля']
);

Правда есть ещё один момент. $_POST просто мной был использован для примера. Получение из POST лучше сделать системными средствами:

$имяпеременной = \RS\Http\Request::commonInstance()->request('имя переменно POST', TYPE_STRING);

Надеюсь последним кодом Вас не запутаю.

1,604

(12 ответов, оставленных в Вопросы по работе с системой)

Не за что smile

1,605

(12 ответов, оставленных в Вопросы по работе с системой)

Ого, как все сложно ) просто чтобы заменить надпись надо переопределять целый файл? А если в исходном файле появлятся какие то обновления, то получается они не будут работать? Так как будут перекрываться файлом my.inc.php ?

Причём здесь my.inc.php, мы этот вариант уже не рассматриваем. Вам нужно перегрузить шаблон с выводом способа доставки при заказе, чтобы его кастомизировать. Это нормальная практика, для всех магазинов которые хотят сделать под себя. Я правда не знаю, используете ли Вы модуль заказ на одной странице. Если да то там шаблон несколько другой.

1,606

(65 ответов, оставленных в Вопросы по работе с системой)

Вы меня не поняли.
Вы из POST получаете current_val, а не из заказа. У вас отправляется просто форма с полями и эти поля Вам нужно записать в заказ. Это первый момент. Т.к. у Вас поля добавлены через конфиг модуля магазин, то доп поля храняться в этом случае в сериализованном массиве. Сериализованный массив это массив с ключами в виде name полей и их значениями.

/**
* Действия перез записью заказа в БД
*/
public static function ormBeforeWriteShopOrder ($data) {
        
        /**
        * @var \Shop\Model\Orm\Order
        */ 
        $order = $data['orm'];//Получаем объект заказа
        $flag = $data['flag'];//флаг

        
        if (isset($_POST['current_val'])){ //Если нужное поле пришло из запроса
          $myarray = array(
             'current_val' => $_POST['current_val'];
          );
          $order['userfields'] = serialize($myarray);
       
        }
    }

А второй момент это момент с выводом значений. Вы просто в шаблоне у себя прописали поле. А как с выводом бы с выводом значения? Его надо самостоятельно подставлять в Вашем случае. В БД всё сохранится в поле userfields. И будет в сериализованном виде. Однако в заказе (\Shop\Model\Orm\Order т.е. если заглянуть в файл /modules/shop/model/orm/order.inc.php) есть функция afterObjectLoad, которая этот сериализованный массив, рассериализовывает при первой загрузке и в распакованном виде помещает в поле userfields_arr. Его Вы и можете использовать чтобы вывести в нужное поле значение в шаблоне. Для примера в самом шаблоне сделайте после записи

<pre>{var_dump($order.userfields_arr)}</pre>

1,607

(12 ответов, оставленных в Вопросы по работе с системой)

У вас доставки выводятся в шаблоне
/templates/ВАША ТЕМА/shop/checkout/delivery.tpl

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

1,608

(12 ответов, оставленных в Вопросы по работе с системой)

Прощу прощения. Чёт я уже заработался:) Через .my.inc.php сделайте, либо проверьте  на id доставки в шаблоне. Я думаю второй вариант более предпочтительный:

{if $item.id=='Мой id доставки'}

{else}

{/if}

1,609

(12 ответов, оставленных в Вопросы по работе с системой)

После оформления самого заказа в заказе менеджер всё меняет.

1,610

(65 ответов, оставленных в Вопросы по работе с системой)

А чему $myarray у Вас переменная равна? И почему, если вы отправляете переменную с именем current_val у Вас проверка на $_POST['userfields']?

1,611

(7 ответов, оставленных в Вопросы по работе с системой)

{$fio=$user->getFio()}

В данном видео показано, как создать простейший административный контроллер на основе уже существующего с системе. Также показано как сделать CRUD контроллер. Как создать API для контроллера. Как создать ORM объект для работы контроллера. Также рассмотрены мельком различные аспекты отображения контроллера.
Видео большое, но полезное.

Вот само видео:
https://www.youtube.com/watch?v=wA-1DK1 … mp;index=8
или видео можете найти у нас на сайте в разделе видеоуроки.

1,613

(20 ответов, оставленных в Вопросы по работе с системой)

Сроки пока неизвестны, что будет в итоге тоже не раскрою, но работа идёт smile Всё инкогнито. Следите за обновлениями. Будет статья.

1,614

(7 ответов, оставленных в Вопросы по работе с системой)

Ааа собрать. У $user есть метод getFio()

1,615

(7 ответов, оставленных в Вопросы по работе с системой)

{$fio=explode(" ", нужная для разбиения переменная)}
{var_dump($fio)}

Всё как в PHP функция explode

1,616

(65 ответов, оставленных в Вопросы по работе с системой)

$order = $data['orm']; //Объект заказа
$order['userfields'] = serialize($myarray); //Передаём в дополнительные поля массив. Поля должны быть в сериализованном виде.

$data - это массив приходящий аргументом в хук.

1,617

(20 ответов, оставленных в Вопросы по работе с системой)

Сейчас у нас ведутся работы в направлении характеристик, мы учтём все Ваши пожелания.

1,618

(9 ответов, оставленных в Вопросы по созданию тем оформления)

Да, но только в таком порядке

$(document).ready(function(){
   //Ваш код инициализации

   $("body").on("new-content", function(){
         //Ваш код инициализации
   });
});

Т.е. сначала инициализируем, то что не в окне, а потом, то что в окне.

1,619

(9 ответов, оставленных в Вопросы по созданию тем оформления)

Вообще-то когда открывается диалоговое окно, то все скрипты уже подгружжены, иначе бы диалоговое окно бы не открылось, а Вы просто бы перешли бы по ссылке.

Инициализация это не проблема, ведь Вы можете записать Ваш код на готовность всего документа:

$(document).ready(function(){
    //Сюда вставить код инициализации маски
});

Только это код надо вставить в сам шаблон.

Ну уж на крааайний случай:

$(window).on('load', function(){
    //Сюда вставить код инициализации маски
});

Хотя и предыдущего кода будет достаточно.

А вообще правильно, чтобы вверху у Вас оставался только jquery в секции head. А всё остальное можно вниз прятать. Тогда всегда всё будет работать.

1,620

(9 ответов, оставленных в Вопросы по созданию тем оформления)

1. Все эти скрипты обращаются к полю по id или class у этого поля в форме обратной связи и в форме оформления заказа нет ни класса ни id, есть имя, но по имени что то обратиться не получается.

Всё просто

$('[name="ИМЯ ПОЛЯ"]')

2. Непонятно как это реализовать во всплывающей форме

Все обновления контента, а также действия всплывающих окон вызывают событие new-content.

Соответственно вешаемся на событие к body:

$("body").on("new-content", function(){
    //Мой код инициализации  
});

Ну уж если совсем не получается... То можно просто прописать код инициализации в сам шаблон обратной связи.

1,621

(20 ответов, оставленных в Вопросы по работе с системой)

Нет. Надо добавить характеристики для фильтрации именно на вкладку характеристики у самого товара. Т.к. комплектации и товары это разные сущности.

1,622

(7 ответов, оставленных в Вопросы по работе с системой)

Модуль появился в Магазине дополнений. Можете качать.

1,623

(7 ответов, оставленных в Вопросы по созданию тем оформления)

Дело в том, что это закладка на будущее. Когда у Нас будет в будущем скидка общая на всю корзину товара. Поэтому она пока не актуальна.

1,624

(1 ответов, оставленных в Вопросы по работе с системой)

По умолчанию, это жестко прописано. Т.к. это стандартная настройка. Если Вам нужно выводить без оборачивания, то Вам нужен другой блок "Пользовательский Шаблон". Где подключать нужный или созданный Вами шаблон.

1,625

(12 ответов, оставленных в Вопросы по созданию тем оформления)

Там доступна переменная $cart, которая содержит объект корзины. Соответственно так:

{$cart_data=$cart->getCartData(false, false)}