04 ноября 2022, 10:51 Вот так: <?php $user = $modx->getUser(); $ssid = $user->get('sessionid') ? : $_COOKIE[session_name()]; $session = $modx->getObject('modSession',$ssid); var_dump($session->toArray()); Вопросы / получить текущий id сессии из modx_session 2 0
19 октября 2022, 08:05 Этот метод используется для загрузки классов отображения ORD xPDO, которые определяют объекты вашего пакета. boolean addPackage ([string $pkg = ''], [string $path = ''], [string $tablePrefix = ''])$modx->addPackage('mypkg',MODX_CORE_PATH.'components/mypkg/model/','mypkg_'); Вопросы / Использование xpdo при вызове скрипта через cron 1 0
18 октября 2022, 14:16 boolean setTVValue (str|integer $tv_name OR ID of TV, string $value)Тип второго параметра должен быть обязательно строкой! Вопросы / Установить значение TV типа radio через сниппет 9 0
18 октября 2022, 08:08 Попробуй сохранять булев как строку! $page = $modx->getObject('modResource', 1); $page->setTVValue('test', 'true'); Вопросы / Установить значение TV типа radio через сниппет 9 +1
18 октября 2022, 08:05 setTVValue — В отличие от некоторых других методов API xPDO, метод немедленно сохраняет значения в базе данных, поэтому не нужно вызывать отдельный вызов метода save(). Вопросы / Установить значение TV типа radio через сниппет 9 +2
16 октября 2022, 18:40 Все твои хотелки есть во FRED, и там есть функция экспорта твоих собранных тем. Новости и события / [Анонс] MigxPageConfigurator (лонгрид) 13 0
12 октября 2022, 15:55 Примерно вот так: <?Php $sp = session_save_path(); $dir = opendir($sp); $all = 0; $inpage = 0; while ($file = readdir($dir)) { { $f = strtok($file, "_"); if ($f == "sess") { $file_ar = file($sp . "/" . $file); $all++; //Тут условия для ввода на странице if (strtok($file_ar[0], "|") == "login") { $inpage++; } } } } closedir($dir); echo "Всего на сайте: $all "; echo "Смотрят эту страницу: $inpage"; Вопросы / Функционал "сейчас просматривают" 1 0
12 октября 2022, 14:36 Я показал пример вывода сниппета, религией запрещено чтоле0!? Можешь парсить JSON через модификатор fromJSON, мне удобнее через сниппет родной! Вопросы / Вывод чекбокс MIGX 15 0
12 октября 2022, 08:43 В Fenom можно напрямую использовать условный тернарный оператор, не создавая чанк: {'!getImageList' | snippet : [ 'tvname' => 'test', 'tpl' => '@CODE: <input type="checkbox" {$check == 1 ? "checked" : ""} >' ] }Через обычный парсер, нужно создавать чанк и уже в нем прописывать условия Snippet: [[!getImageList? &tvname=`test` &tpl=`option_tpl` ]]Chunk option_tpl: <input type="checkbox" [[+check:is=`1`:then=`checked`:else=``]] >Проверил у себя на тестовом сервере все работает! Настройки MIGX: Вкладки формы [ { "caption": "Заголовок", "fields": [ { "field": "image", "caption": "Изображение", "inputTVtype": "text" }, { "field": "check", "caption": "checkDATA", "inputTVtype": "listbox", "inputOptionValues": "Да==1||Нет==0" } ] } ]Разметка колонок: [{ "header": "Изображение", "dataIndex": "image" },{ "header": "checkDATA", "dataIndex": "check" }] Вопросы / Вывод чекбокс MIGX 15 0 2
09 октября 2022, 08:12 Вот так работает? <input type="checkbox" [[!+check:notempty=`checked`]] > Вопросы / Вывод чекбокс MIGX 15 0
05 октября 2022, 13:25 Тебе дали 100500, подсказок, разжевали как могли! Изучай документацию, и методы работы с компонентом minishop, если не понимаешь что к чему, пиши в раздел modx.pro/work Вопросы / Миграция на minishop2 46 0
05 октября 2022, 11:45 Тогда иди в miniShop2 :: Настройки (скрин), создавай доп. опции, потом вызывай из через метод $product->loadData()->get('options') (пример кода ниже) Пример: <?php $debug = 1; $array_ids = $modx->getChildIds(8,6,array('context' => 'web')); foreach ($array_ids as $doc_ID){ /* @var msProduct $product */ $product = $modx->getObject('msProduct',$doc_ID); if($product){ //tv price $tv_price = $product->getTVValue('price'); //tv available $tv_available = $product->getTVValue('available'); //msProduct price $product->set('price',$tv_price); //Дополнительные опции товара $options = $product->loadData()->get('options'); //Добавим значение в доп. опцию товара $options['available'][0] = $tv_available; //Обновим опции $product->set('options', $options); //Save $product->save(); //debug if($debug){ var_dump($product->toArray()); break; } } } Вопросы / Миграция на minishop2 46 0
05 октября 2022, 07:40 Я использовал для наличия товара menuindex, или оставляй в TV как есть. Все опции товара можно посмотреть через var_dump($product->toArray()) (скрин) <?php $parent = 8; $debug = 1; /* @var modX $modx*/ $array_ids = $modx->getChildIds($parent,6,array('context' => 'web')); foreach ($array_ids as $doc_ID){ /* @var msProduct $product */ $product = $modx->getObject('msProduct',$doc_ID); if($product){ //FILTERS //$dataOpt = $product->getOne('Data'); //$optionKeys = $dataOpt->getOptionKeys(); //var_dump($optionKeys); //tv price $tv_price = $product->getTVValue('price'); //tv available $tv_available = $product->getTVValue('available'); //msProduct price $product->set('price',$tv_price); //msProduct available to menuindex $product->set('menuindex',$tv_available); //Save $product->save(); //debug if($debug) var_dump($product->toArray()); break; } } Вопросы / Миграция на minishop2 46 +1
04 октября 2022, 19:53 А что мешает работать через API!? Вот пример синхры tv поля price: <?php /* @var msProduct $resource */ $resource = $modx->getObject('msProduct', $prod_ID); //tv $tv_price = $resource->getTVValue('price'); //Opt $resource->set('price',$tv_price); $resource->save(); //debug var_dump($resource->toArray()); Вопросы / Миграция на minishop2 46 +1
22 сентября 2022, 12:21 Для динамического обновления цены доставки в корзине можно использовать такой скрипт: <select name="shk_delivery"> <option value=""></option> <option id="otherTransport" value="700">Деловые линии</option> </select><script type="text/javascript"> $(document).bind('ready',function(){ let otherTransport = $('#otherTransport'); //Запишем цену отданную API сервисом otherTransport.val('Тут пишем цену'); $('select[name="shk_delivery"]','#shopOrderForm').bind('change',function(){ SHK.selectDelivery( $(this).val() ); }); }); </script> Вопросы / Изменение стоимости доставки в корзине Shopkeeper 3 4 0
25 августа 2022, 09:59 Быстрее на CURL, я так думаю конечно) <?php /** * @param $url * @return array */ function curlGet($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); $headers = array(); $headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'; $headers[] = 'Accept-Language: ru,en;q=0.9,ru-RU;q=0.8,en-US;q=0.7'; $headers[] = 'Cache-Control: no-cache'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = array('st' => 'OK', 'data' => curl_exec($ch)); if (curl_errno($ch)) { $result['st'] = 'Error'; $result['ErrorMsg'] = curl_error($ch); } curl_close($ch); return $result; } $xmlData = curlGet('http://www.cbr.ru/scripts/XML_daily.asp?date_req=25.08.2022'); var_dump($xmlData); Вопросы / Парсинг данных с modRest 4 +1
19 августа 2022, 11:25 Нужно писать плагин, для события 'OnSHKcalcTotalPrice' Вот пример плагина заготовки: <?php /** @var modX $modx */ $eventName = $modx->event->name; switch ($eventName) { /* Рассчет полной цены товаров в корзине. $_SESSION['shk_order'], $price_total. */ case 'OnSHKcalcTotalPrice': /** @var $scriptProperties */ $price_total = (float)str_replace(array(' ', ','), array('', '.'), $modx->getOption('price_total', $scriptProperties, 0)); $oldPrice = $price_total; /* @todo тут всякие условия для $_SESSION['shk_order']*/ $modx->event->output($price_total); break; } Вопросы / Расширение функционала shopkeeper3 (градации цены) 2 0
19 августа 2022, 08:37 Пути к картинке должны быть не относительными, а полными, пример от ЯД: <item turbo="true"> <title>Заголовок страницы</title> <link>https://tagil300.ru</link> <turbo:content> <![CDATA[ <header> <h1>Ресторан «Полезный завтрак»</h1> <h2>Вкусно и полезно</h2> <figure> <img src="https://avatars.mds.yandex.net/get-sbs-sd/403988/e6f459c3-8ada-44bf-a6c9-dbceb60f3757/orig"> </figure> <menu> <a href="http://example.com/page1.html">Пункт меню 1</a> <a href="http://example.com/page2.html">Пункт меню 2</a> </menu> </header> <p>Как хорошо начать день? Вкусно и полезно позавтракать!</p> <p>Приходите к нам на завтрак. Фотографии наших блюд ищите <a href="#">на нашем сайте</a>.</p> <h2>Меню</h2> <figure> <img src="https://avatars.mds.yandex.net/get-sbs-sd/369181/49e3683c-ef58-4067-91f9-786222aa0e65/orig"> <figcaption>Омлет с травами</figcaption> </figure> <p>В нашем меню всегда есть свежие, вкусные и полезные блюда.</p> <p>Убедитесь в этом сами.</p> <button formaction="tel:+7(123)456-78-90" data-background-color="#5B97B0" data-color="white" data-primary="true">Заказать столик</button> <div data-block="widget-feedback" data-stick="false"> <div data-block="chat" data-type="whatsapp" data-url="https://whatsapp.com"></div> <div data-block="chat" data-type="telegram" data-url="http://telegram.com/"></div> <div data-block="chat" data-type="vkontakte" data-url="https://vk.com/"></div> <div data-block="chat" data-type="viber" data-url="https://viber.com"></div> </div> <p>Наш адрес: <a href="#">Nullam dolor massa, porta a nulla in, ultricies vehicula arcu.</a></p> <p>Фотографии — http://unsplash.com</p> ]]> </turbo:content> </item> Вопросы / Турбо новости с картинками 8 0
19 августа 2022, 08:28 Задумка неплохая, но я быстрее стырю шаблон и раскидаю его по чанкам) Увидел одно удобство (как у Joomla, там Чанки называют Модулями), это привязка блока к определенной странице или категории. По идее нужно задать стандарт позиций (header,sidebar,top-position,bootom-position,footer) и обзывать чанки такими именами, так будет быстрее настраивать шаблоны, а каждого чанка есть настройки (где и как показать его). К примеру вот так: Новые дополнения и их версии / Тема блога для MODX 2.x - mtBlog ? 3 0
UiCMPGenerator дополнение для создания пакетов Ближе к сентябрю, основная загвоздка это создание нормальной документации и видео обзора, а так пакет как бы уже готов
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
msImportExport не сохраняет родителя по умолчанию Компонент не понимает кирилические домены при загрузку фото. пример: Error download. Url : https://антаресдвери.рф/upload/iblock/a50/a50b2ef45305a3c18f6e298f1e134880.jpg. Message...
Можешь парсить JSON через модификатор fromJSON, мне удобнее через сниппет родной!
Через обычный парсер, нужно создавать чанк и уже в нем прописывать условия
Snippet:
Chunk option_tpl:
Проверил у себя на тестовом сервере все работает!
Настройки MIGX:
Вкладки формы
Разметка колонок:
Изучай документацию, и методы работы с компонентом minishop, если не понимаешь что к чему, пиши в раздел modx.pro/work
Пример:
Все опции товара можно посмотреть через var_dump($product->toArray()) (скрин)
Вот пример синхры tv поля price:
Вот пример плагина заготовки:
Увидел одно удобство (как у Joomla, там Чанки называют Модулями), это привязка блока к определенной странице или категории.
По идее нужно задать стандарт позиций (header,sidebar,top-position,bootom-position,footer) и обзывать чанки такими именами, так будет быстрее настраивать шаблоны, а каждого чанка есть настройки (где и как показать его).
К примеру вот так: