Денис

Денис

С нами с 11 декабря 2015; Место в рейтинге пользователей: #230
Денис
29 декабря 2017, 11:28
+1
Есть фильтры parent:categories и parent:grandparents.
Документация
Денис
29 декабря 2017, 09:15
1
0
Если вызов у msProducts то:
&where=`{
   {
      "Data.old_price:>":"0"
      "OR:Data.favorite":"1"
   } 
}`

Или тоже самое с использованием fenom
'where' => '{
   {
      "Data.old_price:>":"0"
      "OR:Data.favorite":"1"
   } 
}'

Условия с OR нужно заключать в отдельные фигурные скобки.
Денис
26 декабря 2017, 14:52
+1
&tpl=`uk.product.item.chk`
Денис
20 декабря 2017, 10:30
0
Уберите 0 в href ссылки.
<a href="#0" class="cd-subnav-trigger"><span>Ассортимент</span></a>
Денис
20 декабря 2017, 10:09
0
$res = $modx->getObject('msProduct', $resID);
$options = $res->loadData()->get('options');
$options['user-pole'] = date('Y-m-d');
$res->set('options', $options);
$res->save();
Денис
19 декабря 2017, 12:01
1
+1
Значения фильтров и так сортируются по алфавиту, точнее с помощью функции natcasesort. Настроить их просто так нельзя. Вам нужно создать свой класс обработчик фильтра, наследуемый от класса mse2FiltersHandler, который находится в файле core/components/msearch2/model/msearch2/filters.class.php и переопределить метод sortFilters, а после указать его(свой класс) в системной настройке mse2_filters_handler_class.
Денис
19 декабря 2017, 10:34
0
Если после сохранения все становится нормально, значит опции были записаны как то не так. Попробуйте пересохранить все товары скриптом. Код вставлять в console. Сделайте обязательно бэкап!

<?php
$step = 50; //количество ресурсов за один шаг
if (!isset($_SESSION['Console']['completed'])) {
    $_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;
$q = $modx->newQuery('msProduct');
$total = $modx->getCount('msProduct', $q);
$q->limit($step, $offset);
$resources = $modx->getCollection('msProduct', $q);
foreach ($resources as $resource) {
    $modx->error->reset();
    $modx->runProcessor('resource/update', $resource->toArray());
}
$_SESSION['console_offset'] = $offset + $step;
if ($_SESSION['console_offset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
} else {
  $sucsess = round($_SESSION['console_offset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
print "\n";
print $sucsess.'% ('.$_SESSION['console_offset'].')'."\n\n";
Денис
18 декабря 2017, 09:18
1
+1
Можно получить текущие значения фильтров так:
mSearch2.getFilters();
Либо если вам нужно что то изменять перед/после отправки, что лучше создайте копию файла /assets/components/msearch2/js/web/default.js и укажите новый файл в системной настройке mse2_frontend_js (в разделе msearch2). После вносите любые изменения в свой новый файл. В вашем случае, нужно смотреть в метод load у объекта mSearch2.
Денис
18 декабря 2017, 09:03
0
Добавь еще &autoPublishGuest=`0`
Денис
22 ноября 2017, 19:47
2
+1
ТВ поля подключаются после join, так что придется подтянуть всю цепочку вручную:

$projects = $modx->runSnippet('pdoResources',array(
	'parents' => 4,
	'includeTVs' => 'projectCat',
	'loadModels' => 'projects',
	'leftJoin' => '{
		"TvFieldResource" : {
			"class" : "modTemplateVarResource", 
			"on" : "TvFieldResource.contentid = modResource.id" //Связываем тв поле с значением по полю id ресурса
		},
		"TvField" : {
			"class": "modTemplateVar",
			"on": "TvField.id = TvFieldResource.tmplvarid AND TvField.name = \"projectCat\"" //Это связь для тв поля по по имени, хотя можно его и не использовать, а указать в TvFieldResource сразу значение tmplvarid(id тв поля)
		},
		"ProjCats" : {
			"class" : "categories", 
			"on" : "TvFieldResource.value = ProjCats.id" //связываем значение тв поля с вашим классом
		}
	}',
	'select' => '{
		"modResource": "*", //подтягиваем поля ресурса
		"ProjCats": "ProjCats.id as category_id, ProjCats.name as category_name" //и поля вашего класса, создав им псевдонимы category_id и category_name
	}',
    'return' => 'json',
    'showLog' => 1
));

Не проверял, но должно работать.
Денис
22 ноября 2017, 09:54
2
+3
Это из за имени name=«contact_acceptance[]».
Проблема в том, что contact_acceptance != contact_acceptance[]

Тут два решения. Добавить в js обработку события af_complete, которая будет подставлять на все input с фигурными скобками класс error:
$(document).on('af_complete', function(event, response) {
        if(response.success === false){
            var form = response.form;
            for (key in response.data) {
                $('input[name="'+key+'[]"]').addClass('error');
            }
	}
});
Либо использовать в верстке конструкцию такого типа, без фигурных скобок:
<input type="hidden" name="contact_acceptance" value="" />
<input type="checkbox" id="contactFormAcceptance" class="" name="contact_acceptance" value="1">
Если при отправке формы поставят чекбокс, то на FormIt получит значение 1 и валидация required будет выполнена, если не поставят, то придет пустое значение и форма не отправится.
Денис
14 марта 2017, 18:16
0
Василий верно сказал про отключение доступа к диску из-за большого количества запросов. На одном проекте использовал этот Драйвер для Media Source для работы с Яндекс.Диск. Оказалось, что использование диска, в качестве удаленного файлового хранилища нерентабельно из-за большой нагрузки, после которой яндекс переставал отдавать файлы(огромное количество изображений на страницах). Стали использовать яндекс.диск в качестве файлопомойки с которой импортировали нужные нам файлы.
Денис
22 апреля 2016, 13:47
0
я имел в виду взять за основу. Теперь изучаю создание собственных типов tv полей
Денис
22 апреля 2016, 12:17
0
Нашел пока modx.pro/solutions/4944-tvtable-table/ в принципе можно и его использовать
Денис
22 апреля 2016, 12:16
0
Возможно немного неверно описал необходимый функционал. Ни ключ, ни значение заранее не известны, их задает сам пользователь.
Денис
21 декабря 2015, 09:12
0
Недавно стояла подобная задача. Есть поддержка адаптивных изображений?