Как сделать сортировку по полю в MIGX tv в pdoResources?
Приветствую, подскажите пожалуйста, как делается сортировка ресурсов, по TV полю MIGX?
Есть выборка ресурсов, сейчас отсортирован по 'menuindex' => 'asc', но у каждого ресурса в выборке есть MIGx Tv с именем FIELD_DATE и в нем есть поле date_start тип дата, вот как мне отсортировать ресурсы по этому полю?
Есть выборка ресурсов, сейчас отсортирован по 'menuindex' => 'asc', но у каждого ресурса в выборке есть MIGx Tv с именем FIELD_DATE и в нем есть поле date_start тип дата, вот как мне отсортировать ресурсы по этому полю?
{set $tour = '!pdoResources' | snippet : [
'return' => 'json',
'parents' => $item.id,
'showHidden' => 0,
'showUnpublished' => 0,
'sortby' => ['menuindex' => 'asc'],
] | json_decode : true}
{foreach $tour as $el}
{$el.id | resource: 'pagetitle'}
{set $field_date = json_decode($_modx->resource.field_date, true)}
{foreach $field_date as $idx => $item}
Дата старта: {$item.date_start}
{/foreach}
{/if}
{/foreach}
Получается в массиве $tour еще нет этого поля, вот и не пойму как это делать? :( modx DebugParser показывает {1 | resource}, но на странице нет, как его исправить?
При заходе и проверке страницы через дэбаг, вижу такую конструкцию
{1 | resource}
Найти не могу, просто не вижу, даже нет такой конструкции.№2 {1 | resource} 52 0,0272337 0,364833
каких-то 52 запроса делает Обновление пользователя через api MODX
Всем доброго времени суток. Ситуация такая: пишу код в консоли или сниппете, он работает
Подскажите, как правильно сделать?
$data=Array
(
'username' => 'Ivan',
'fullname' => 'Иван',
'email' => 'test@test.ru',
'phone' => '+7 (999) 999-99-99',
'id' => 3
);
$response = $modx->runProcessor('/security/user/update', $data);
if ($response->isError()) {
echo $response->getMessage();
}
Когда я переношу его в core/components/xxx/model/xxx.class.phppublic function update() {
$data=Array
(
'username' => 'Ivan',
'fullname' => 'Иван',
'email' => 'test@test.ru',
'phone' => '+7 (999) 999-99-99',
'id' => 3
);
$response = $this->modx->runProcessor('/security/user/update', $data);
if ($response->isError()) {
return array('error' => $response->getMessage());
}
}
Получаю ошибку «Не указано имя пользователя или пароль. Пожалуйста, проверьте введённые данные и попытайтесь снова.»Подскажите, как правильно сделать?
Как отвязать все мультикатегории у товара minishop?
Доброго всем вечера. На сайте товары имеют основную категорию и несколько дополнительных. Импортировали через msimportexport. Как отвязать все дополнительные категории? Может кто сталкивался? Плагинов не нашел таких. SQL тоже не вариант т.к. ключ непонятно какой использовать.
Почему после отключения анонимных сессий не пускает в админку
Здравствуйте, такое дело, у меня на фронте нет никаких регистраций и онлайн кабинетов, поэтому я подумал что мне незачем засорять базу данных анонимными сессиями и выключил эту опцию в настройках сайта. В результате у других менеджеров не получается войти в админку сайта, после ввода логина и пароля форма входа остается на своем месте и не пускает в админку. Включил обратно анонимные сессии и менеджеры смогли войти в админку.
Интересно как связаны анонимные сессии с админкой?
Modx 2.8.4
Интересно как связаны анонимные сессии с админкой?
Modx 2.8.4
MobileDetect и debugParser
Обратил внимание, что при проверке debug-ом страницы, я вижу в том числе и отрендеренные теги {mobile} для десктопной версии. Т.е. mobileDetect уже потом вырезает из фактически отрендеренной страницы лишнее?
То есть бессмысленно рассчитывать на то, что плагин MobileDetect поможет еще и в производительности? Т.е. «тяжелые» менюшки полюбому будут рендериться дважды..(
Кстати, «кастомная модификация» MobileDetect в виде плагина отсюда modx.pro/help/6320
не помогает. Даж не знаю, что делать чтобы избегать рендеринга (и соотв. запросов к БД) в ненужных участках.
То есть бессмысленно рассчитывать на то, что плагин MobileDetect поможет еще и в производительности? Т.е. «тяжелые» менюшки полюбому будут рендериться дважды..(
Кстати, «кастомная модификация» MobileDetect в виде плагина отсюда modx.pro/help/6320
не помогает. Даж не знаю, что делать чтобы избегать рендеринга (и соотв. запросов к БД) в ненужных участках.
Как избавиться от добавления скрипта miniShop2 непосредственно на страницы сайта?
Добрый день! Собираю все скрипты для сайта бандлером, понадобилось включить в сборку js от miniShop2
Каким образом избавиться от добавления скрипта непосредственно на страницы сайта, которое осуществляется компонентом?
Каким образом избавиться от добавления скрипта непосредственно на страницы сайта, которое осуществляется компонентом?
Как изменить размер карточки minishop2
Как изменить размер карточки, когда заходишь с телефона?
1 карточка занимает почти полный экран, а нужно, чтобы отображалось хотя бы 2 в одной строке
1 карточка занимает почти полный экран, а нужно, чтобы отображалось хотя бы 2 в одной строке
Как создавать опции msync из списка?
Есть простой список с опциями синхронизациями, нужно их все заполнить из него быстро.
Что пытался:
1) Через newObject но он вообще не находит объект опции, схему смотрел класс копировал. Пытался через $xpdo-> а так же $modx
Что пытался:
1) Через newObject но он вообще не находит объект опции, схему смотрел класс копировал. Пытался через $xpdo-> а так же $modx
$newMsPr = $xpdo->newObject('mSyncProductProperty');
$newMsPr->set('source', 'ТЕСТПРИКОЛ');
$newMsPr->set('type', 1);
$newMsPr->set('target', 'testprikol');
$newMsPr->set('active', 1);
$newMsPr->set('default', 0);
$newMsPr->set('is_multiple', 0);
$newMsPr->set('is_primary', 0);
$newMsPr->save();
2) Пытался с эмулировать запрос. Но получал лишь 401 ошибку. Выполнял в косноли<?php
function transliteCyrilic($value){
$converter = array(
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
'е' => 'e', 'ё' => 'e', 'ж' => 'zh', 'з' => 'z', 'и' => 'i',
'й' => 'y', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't',
'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch',
'ш' => 'sh', 'щ' => 'sch', 'ь' => '', 'ы' => 'y', 'ъ' => '',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya',
);
$value = mb_strtolower($value);
$value = strtr($value, $converter);
$value = mb_ereg_replace('[^-0-9a-z]', '_', $value);
$value = mb_ereg_replace('[-]+', '_', $value);
$value = trim($value, '_');
return $value;
}
$chars = array("Объем, л", "Номенклатура");
$translated_arr = array();
$createUrl = 'https://example.com/assets/components/msync/connector.php/';
foreach ($chars as $char) {
$params = array(
'action' => 'mgr/property/create',
'id' => '',
'default' => '',
'source' => $char,
'type' => 1,
'target' => transliteCyrilic($char),
'is_multiple' => 0,
'is_primary' => 0,
'active' => 1
);
$myCurl = curl_init();
curl_setopt_array($myCurl, array(
CURLOPT_URL => $createUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($params)
));
$response = curl_exec($myCurl);
echo var_dump($response);
die();
curl_close($myCurl);
}
die();
3) Сделал это всё на питоне, там авторизовывался в адмнке, но так же 401 ошибка.import re
from requests import Session
LOGIN_CONTEXT = "mgr"
RETURN_URL = "/manager/"
USERNAME = "ashdjkashldkfjhasldf"
PASSWORD = "sadkfas;lkdjfh;lasd"
LOGIN_URL = "https://example/manager/"
msync_coonector = 'https://example/assets/components/msync/connector.php/'
def main():
chars = {"Объем, л":"obem__l","Номенклатура":"nomenklatura"}
with Session() as session:
req = session.post(LOGIN_URL, data={"login_context": LOGIN_CONTEXT , 'returnUrl': RETURN_URL, 'username': USERNAME, 'password': PASSWORD, 'login': "1"})
for char_key, char_value in chars.items():
send_params = {
'action': 'mgr/property/create',
'id': '',
'default': '',
'source': char_key,
'type': 1,
'target': char_value,
'is_multiple': 0,
'is_primary': 0,
'active': 1
}
create_property = session.post(msync_coonector, data=send_params, timeout=60)
print(create_property.text)
if __name__ == '__main__':
main()
4) Пытался прям на месте через повторить запрос создания опции через chrome tools, но даже там получил ошибку 401, уверен что это из-за mod http auth