Как добавить поле галочку в заказ любой, а потом изменять её плагином?

Нужно добавить в каждый заказ, чекбокс, и потом допустим при заказе если это более 5 заказ, в текущем и каждом последующем заказе указывать данный чекбокс как активный для этого пользователя.

Пытался так:

<?php
switch ($modx->event->name) {

	case 'OnMODXInit':
		$modx->loadClass('msOrder');
		$modx->map['msOrder']['fields']['regular_customer'] = 0;
		$modx->map['msOrder']['fieldMeta']['regular_customer'] = array(
			'dbtype' => 'tinyint',
			'precision' => 1,
			'attributes' => 'unsigned',
			'phptype' => 'boolean',
			'null' => false,
			'default' => 0,
		);
		break;
}
П.С ставил на событие «OnMODXInit»

Так же создал само поле в базе данных в этой таблице "
modx_ms2_orders
".
Но когда перехожу в заказы в админке, там не вижу моего поля.
Само поле создавал так через sql "
ALTER TABLE `modx_ms2_orders` ADD `regular_customer` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' ;
"
Vladimir
30 декабря 2022, 08:39
modx.pro
487
0

Вывести значения только используемых TV в ресурсах по двум параметрам

Здравствуйте, делаю Ajax фильтр, с поиском по TV полям выглядит это так:


Опции формируются сниппетом, который собирает только используемые значения TV полей со всех ресурсов, объединяя дубли, вот код сниппета:

<?php
// $tvid = 7; // id нужного ТВ параметра
$res = array(); // Сюда забиваем результаты
$counter = 1;
$output = '';
$q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid, ));
$q->select('value');
$q->groupby('value'); // исключаем дубли
if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$res[$counter] = $row['value'];
		$counter++;
	}
}
foreach($res as $val){
   $output .= '<option value="'.$val.'">'.$val.'</option>';
}
echo $output;
Все работало нормально до тех пор как не было добавлено новое TV поле с двумя значениями Аренда==1||Продажа==2 и теперь фильтр для аренды должен отобразить только значения используемых TV ресурсов согласно этому новому полю, т.е. идея в том чтобы фильтр не показывал опции ресурсы которых «для продажи» и наоборот.

Подскажите пожалуйста как для этого изменить сниппет? Догадываюсь что в запрос
$q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid, ));
нужно подставить еще один параметр — со значением Аренды или Продажи… Но своих знаний маловато как это сделать… Буду благодарен за любую помощь )
Konstantin
29 декабря 2022, 23:35
modx.pro
856
0

в плагине не правильная группа у пользователя

регистрирую пользователя через компонент Office в группу «Users» с ID=2, потом вручную меняю пользователю группу, например на «РРЦ» с ID=41.
при вызове в плагине
$modx->user->getUserGroups()
отображается все равно старая группа с ID=2, хотя в БД все поменялось как надо.
в чем может быть проблема? как будто закешировались данные
alexandr.skyrda
28 декабря 2022, 13:19
modx.pro
373
0

как установить/зарегистрировать плагин не из транспортного архива?

если плагин в таком виде
как его установить правильно? транспортного архива нет
alexandr.skyrda
28 декабря 2022, 13:11
modx.pro
488
0

ms2form не создает товары

Здравствуйте,
Не могу сделать чтоб создовались товары из фронтенда. Усановил miniShop2 4.0.0 и ms2Form 1.4.5-beta2
Добавил «Доступ к контекстам» группе «Users» «ms2formUserPolicy» и «miniShopManagerPolicy»

Создал в шаблоне
[[!ms2form?
  &parent=`13`
  &template=`8`
  &allowedFields=`parent,pagetitle,content`
  &requiredFields=`parent,pagetitle,content`
  &tplCreate=`my.tpl.ms2form.create`
]]
В чанке my.tpl.ms2form.create
<form class="well create" method="post" action="" id="ms2form" role="form" data-reset="true">
  <input type="hidden" id="ms2formFormKey" name="form_key" value="[[+formKey]]">
  <input type="hidden" name="pid" value="0">
  <input type="hidden" name="parent" value="[[+parent]]">
  <input type="hidden" name="published" value="1"/>
  <input type="hidden" name="hidemenu" value="0"/>
  <input type="hidden" name="redirectPublished" value="[[+redirectPublished]]"/>
  <input type="hidden" id="ms2formTagsNew" value="[[+tagsNew]]"/>

  <div class="form-group">
    <label>[[%ms2form_pagetitle]]</label>
    <span class="text-danger">*</span>
    <input type="text" class="form-control" placeholder="[[%ms2form_pagetitle]]" name="pagetitle" value="" maxlength="50" id="ms2formPagetitle"/>
  </div>

  <div class="form-group popover-help" id="formGroupContent">
    <input id="content" name="content" type="hidden" value="[[+content]]"/>
    [[$tpl.ms2form.editor.[[+editor]]]]
  </div>
  <div class="form-group">
    <div class="ticket-form-files">
      [[+files]]
    </div>
  </div>
  <div class="form-actions">
    <input type="submit" id="ms2formSubmit" class="btn btn-primary submit" value="[[%ms2form_save]]"/>
  </div>
</form>
Авторизуюсь под «users»
На сайте выводится форма но форма не отпровляется. Не пойму в чем проблема. Может кто сталкиволся с таким поведением.

Выскакивает ошибка:
/core/components/ms2form/model/ms2form/ms2form.class.php : 348) PHP warning: Undefined array key "tags"
guitar_plus
28 декабря 2022, 08:10
modx.pro
474
0

перестали показывается новые тв дополнительные поля

помогите разобраться, перестали показываться новые тв дополнительные поля, в базе данные прописываются, а на сайте не отображаются, куда копать не пойму, проблема именно с новыми полями старые работают без проблем


Danil
25 декабря 2022, 19:26
modx.pro
487
0

SQL запрос

Есть ресурс 5 ресурсов и все они имеют свой уникальный шаблон и пару TV.
catalogs и price это TV
Кто знает, можно ли одним SQL-запросом извлечь список этих ресурсов с TV-полями.
По итогу нужно будет получить вот такой json
{
   "id": 1,
   "pagetitle": "Название №1",
   "catalogs": "Дымоходы для печей",
   "price": "100"
},
{
   "id": 2,
   "pagetitle": "Название №2",
   "catalogs": "Дымоходы для печей",
   "price": "100"
},
{
   "id": 3,
   "pagetitle": "Название №3",
   "catalogs": "Дымоходы для печей",
   "price": "100"
},
{
   "id": 4,
   "pagetitle": "Название №4",
   "catalogs": "Дымоходы для печей",
   "price": "100"
},
{
   "id": 5,
   "pagetitle": "Название №5",
   "catalogs": "Дымоходы для печей",
   "price": "100"
}
Сергій
25 декабря 2022, 10:55
modx.pro
588
0

Как вывести в шаблоне ресурса TV поле типа List c Options/Values

Здравствуйте, я недавно с Modx поэтому прошу совета знатоков

В документации про типы TV полей сказано что я могу для типа ввода List указать раздельно значения Options/Values таким образом:

Option 1==value1||Option 2==value2
Однако по умолчанию плейсхолдер [[*FieldTV]] выводит название опции, и я ни как не могу найти информацию про то как получить именно value выбранной опции.

Я начал велосипедить и в сниппете получать сначала все значения поля List, затем получать выбранное значение, затем путем сравнивавания циклом проходить по массиву и тд, и все это только чтобы получить одно значение value.
<?php
function searchValue($option, $array) {
   foreach ($array as $key => $val) {
       if (strpos($val, $option) !== false) {
            $el = explode('==',$val);
            echo $el[1];
        }
   }
   return null;
}

$tvtag = 'MyFieldTV';
$pageid = '38';
$tv = $modx->getObject('modTemplateVar',array('name'=>$tvtag));

//  все опции
$options = explode('||',$tv->get('elements'));

// ключ опции выбранный в ресурсе
$optionKey = $tv->getValue($pageid);

echo searchValue($optionKey,$options);
Может быть есть какое-то более рациональное и простое решение о котором я не знаю?
Konstantin
24 декабря 2022, 17:13
modx.pro
1 123
0

помочь с импортом товаров xml/yml в minishop2

3 1 000
помочь разобраться с импортом товаров из yml-выгрузки, вот пример
я так понимаю, что нужно писать свое решение с использованием готовых функций в modx, типа simplexml
нужно настроить скрипт импорта и объяснить, как с ним работать. т.е. менять выгрузки, добавлять поля и т.д.
пишите цену!
alexandr.skyrda
24 декабря 2022, 13:39
modx.pro
370
0

[msProductDiscounts] Новая версия 1.4.1 - больше удобства использования.

Приветствую, по итогам дополнительных тестов и обратной связи от пользователей добавил ряд улучшений, убрал некоторые недостатки. Подробности под катом
Артур Шевченко
23 декабря 2022, 15:51
modx.pro
810
+9