R2m0x94 (Vasily)

R2m0x94 (Vasily)

С нами с 07 мая 2018; Место в рейтинге пользователей: #396
R2m0x94 (Vasily)
14 февраля 2022, 14:04
0
Возможно я что-то упустил или в видео этого нет, но попробую обуздать в примерах понимании об addPackage, loadClass и getService и подключении сторонних таблиц, хотя так-то из консоли кастомный класс работает, добавляет объект и получает объект и коллекцию, что на обычной версии, что на про версии.
R2m0x94 (Vasily)
14 февраля 2022, 13:13
0
Попробовал на тестовом сделать, как у Вас на видео. Делал всё по видео инструкции, но валятся ошибки
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1321) Could not get table class for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1290) Could not get table name for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1321) Could not get table class for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 1290) Could not get table name for class: PromoCupons
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 762) PromoCupons::getSelectColumns() is not a valid static method.
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/xpdo/xpdo.class.php : 762) PromoCupons::loadCollection() is not a valid static method.
[2022-02-11 16:27:38] (ERROR @ /home/s28944/www/core/model/modx/modprocessor.class.php : 525) PHP warning: Invalid argument supplied for foreach()
В консоле ругань или на manager/assets/ext3/ext-all.js или на assets/components/promocupons/connector.php при добавлении в бд из меню Promo Cupons.

Не знаю в чем дело, не получилось и да в бд добавлял запись проверить отображение в админке — тоже не вышло.
R2m0x94 (Vasily)
07 февраля 2022, 11:01
0
А компонент msOrderFields дополняет msOrderDiscount? Хочу поставить, но боюсь конфликта с msOrderDiscount
R2m0x94 (Vasily)
05 февраля 2022, 12:28
+1
В любом случае должно получится, а иначе попробовать можно msOrderFields (490 р)
R2m0x94 (Vasily)
24 декабря 2021, 17:03
0
Разумеется, если в настройке ms2_plugins была бы возможность добавлять плагины просто через запятую (например ms2_plugins: availability, custom_modules, deliverytime и т.д., которые подключены напрямую из папки plugins/), то отпали бы такие заметки, и деактивация плагинов проходила бы глаже при регистрации того же плагина в другое место.

Надеюсь на то, что в minishop3 появится такая возможность из коробки.
R2m0x94 (Vasily)
24 декабря 2021, 14:49
0
Привет, лично у меня при разработке ушло на это время, и я не смог понять, почему если я регистрирую плагин относительно пути
/plugins/order/custom_modules/index.php
И вдруг захотел сменить путь на более удобный
/plugins/custom_fields/index.php
У меня появляется эта ошибка, сразу задался вопросом, а как же происходит регистрация плагинов, но ответа не нашел, поэтому и решил проблему таким способом
/plugins/custom_fields/ms2/index.php
Странно, но работает))
R2m0x94 (Vasily)
24 декабря 2021, 14:29
0
Да, и главное не надо боятся переименовывать, переносить папки и файлы указывая правильные пути на сервере, а также переименовывать результат в ms2_plugins, чтобы не трогать бэкапы.
SELECT * FROM `modx_system_settings` WHERE `key` LIKE 'ms2_plugins'
R2m0x94 (Vasily)
23 декабря 2021, 19:26
1
0
На всякий случай если не заработает, то
// удаляем плагин
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->removePlugin('cart');
}
// добавляем вновь
$plugin = '{core_path}components/minishop2/plugins/cart/availability/index.php';
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addPlugin('availability', $plugin);
}
// результат в ms2_plugins: {"availability":"{core_path}components\/minishop2\/plugins\/cart\/availability\/index.php"}

/* Вложенность иерархии в дереве и подключение, тоже имеют значение:
plugins
|_cart
|_|_availability
|_|_|_index.php
|_|_|_msproductdata.map.inc.php
*/
R2m0x94 (Vasily)
22 декабря 2021, 18:38
0
Точнее так будет более правильнее:
$plugin = ['availability' => '{core_path}components/minishop2/plugins/cart/availability/index.php'];
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addPlugin('cart', $plugin);
}
R2m0x94 (Vasily)
22 декабря 2021, 18:15
0
Возьмем например такую иерархию в дереве каталогов проекта:
plugins
|_cart
|_|_availability
|_|_|_index.php
|_order
|_|_custom_modules
|_|_|_index.php
|_|_deliverytime
|_|_|_index.php
И рассмотрим пример системной настройки ms2_plugins: []
Давайте попробуем туда записать данные за вместо квадратных скобок, поместим массив json:
{
    "cart": {"availability": "{core_path}components/minishop2/plugins/cart/availability/index.php"}, 
    "order": {
        "custom_modules": "{core_path}components/minishop2/plugins/order/custom_modules/index.php",
        "deliverytime": "{core_path}components/minishop2/plugins/order/deliverytime/index.php"
    }
}
Работает, отлично!

На Вашем же примере надо просто выполнить код в консоле, который будет помещать массив в плагин cart
<?php
$plugins = [
    'cart' => ['availability' => '{core_path}components/minishop2/plugins/cart/availability/index.php']
];
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addPlugin($plugins);
}
И Вы увидите в системной настройке ms2_plugins массив-json со следующем содержимом:
{"cart": {"availability": "{core_path}components/minishop2/plugins/cart/availability/index.php"}}
R2m0x94 (Vasily)
28 октября 2021, 16:05
0
Временно задал в 918 строке $entry = 0, вроде ошибки нет))
R2m0x94 (Vasily)
28 октября 2021, 15:46
0
У меня такая ошибка в журнале новой версии minishop2 2.9.3-pl, PHP 8.0, MODX 2.8.3-pl:
[2021-10-28 15:26:20] (ERROR @ /core/model/modx/modx.class.php: 1677) [OnMODXInit]
Deprecated: Required parameter $entry follows optional parameter $action in /core/components/minishop2/model/minishop2/minishop2.class.php on line 918
Только распаковался, у кого-то было также?
R2m0x94 (Vasily)
20 октября 2021, 13:09
0
У меня например была такая проблема, у поддомена не было ключа, который находился в контексте сайта (домена), у которого был ключ. Иными словами на домене репозиторий работает исправно, так как ключ к ниму есть, а у поддомена ключа нет и подключения соответственно тоже нет, поэтому приходится идти на основной домен, ставить пакеты, затем логинится в админку контекста поддомена и юзать установленные пакеты. Лично я так решил проблему.
R2m0x94 (Vasily)
18 октября 2021, 15:31
0
Делал по инструкциям, но результат один и тот же:
Local time: Mon 2021-10-18 15:28:28 MSK
  Universal time: Mon 2021-10-18 12:28:28 UTC
        RTC time: Mon 2021-10-18 15:24:27
       Time zone: Europe/Moscow (MSK, +0300)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: yes
      DST active: n/a

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
Есть ли решение, как активировать NTP enabled: no в NTP enabled: yes?
тобс: в Network time on: yes и NTP synchronized: yes
R2m0x94 (Vasily)
18 октября 2021, 14:52
0
Тоже не понял, как настройка server_offset_time сможет включить NTP синхронизацию? Пробовал -3 и 3, результата не дало на минус и плюс 3 часа по гринвичу.
<?php
print shell_exec(escapeshellcmd('timedatectl'));
R2m0x94 (Vasily)
10 июня 2021, 14:44
0
Т.е сначала вызываю msProducts
&where=`{ "id:IN":[{$_modx->resource['dopid']}]}`

Далее
{'!msProductKits' | snippet : [
    'tplWrapper' => 'outerTpl',
    'mode' => 'owner',
    'tpl' => 'tpl.msProductKits.Item2',
    'sortby' => 'id',
    'sortdir' => 'asc',
]}
Хороший компонент. Спасибо :)
R2m0x94 (Vasily)
09 июня 2021, 18:05
0
В моём случае мне хватило вывести так (в tv на админке для возможных значений в списке):
<?php
// [[!tvLabelnameCountry? &tvVal=`[[+tv.vendor_address]]`]]
$tvArr = explode('||', $tvVal);

foreach($tvArr as $n => $v) {
   echo strstr($v, '=', true);
}

А, так как задача с поставщиками и производителями перешла на ms2 в связке с ресурсами, то пришёл к такому результату, так как с id-шниками не стал заморачиваться, но потребовалось просто вывести страну [[+vendor.country]]:
<?php
/**
 * Получаем страну производителя из настроек ms2 по имени $name. 
 * Если используется для поставщика, то имя может отсутствовать, поэтому ничего не выводим.
 * Если же необходимо получить по id, то 'name' заменить на 'id' (Тodo: Кастумизация)
 * 
 * $page = $modx->getObject('modResource', ['id' => 13]);
 * $output = $page->get('pagetitle');
 * 
 * return $output;
 * 
 * Пример вызова:
 * [[!msVendorCountry? &name=`{$purveyor | resource : "pagetitle"}`]]
 * {'!msVendorCountry' | snippet : ['name' => $purveyor | resource : "pagetitle"]}
 * 
 */

//$name = 'Sony';
$vendor = $modx->getObject('msVendor', ['name' => $name]);
if (!is_object($vendor)) {
    return '';
}
$output = ', '.$vendor->get('country');
return $output;

Код чанка в чанке с mFilter2:
{if $_pls['tv.purveyor']!= ''}
   {foreach $key as $purveyor index=$index}
        {$purveyor | resource : "pagetitle"}{'!msVendorCountry' | snippet : ['name' => $purveyor | resource : "pagetitle"]}
    {/foreach}
{/if}
R2m0x94 (Vasily)
12 апреля 2021, 18:50
0
Возможно, что версия библиотеки не подходит, хотя возможно, что ссыль ссылается не на корень сайта, а на корневую директорию сервера
<script>
$.ajax({
  type: m_method, // "GET",
  url: m_action, // "assets/components/x.php",
  data: $('#connect_table').serialize() // m_data
}).done(function(result){
  $('#connect_table').html(result);
});
return false;
</script>