R2m0x94 (Vasily)

R2m0x94 (Vasily)

С нами с 07 мая 2018; Место в рейтинге пользователей: #324
R2m0x94 (Vasily)
18 марта 2022, 19:10
0
Возможное решение:
Решение не совсем правильное, так как если выгрузить на хостинг ошибка пропадает, зато если разработка ведётся локально, то напрягает, поэтому временно идём в Медиа > Источники файлов, там ставим в графах basePath & baseUrl полный путь с диска до корня, например: E:\OSPanel\domains\site.ru\

Ошибка пропадает, изображение грузится ОК, но при этом выбор файла не доступен. Удачных разработок и перед выгрузкой на хостинг ставим медиа источник обратно.

Лирика:
Конечно времени ездить по файлом почти ни у кого нет core\model\phpthumb\phpthumb.class.php:3474 функция SetCacheFilename(), там есть такой код:
if ($this->md5s) {
	// source image MD5 hash provided
	// do not source image modification date --
	// cached image will be used even if file was modified or removed
} elseif (!$this->config_cache_source_filemtime_ignore_remote && preg_match('#^(f|ht)tps?\://#i', $this->src)) {
	$this->cache_filename .= '_dat'.intval(phpthumb_functions::filedate_remote($this->src));
} elseif (!$this->config_cache_source_filemtime_ignore_local && $this->src && !$this->rawImageData) {
	$this->cache_filename .= '_dat'.intval(@filemtime($this->sourceFilename));
}
Можно увидеть, что в строке есть функция filemtime(), которая отдаёт 0, почему? Потому, что если убрать ссылку @ от функции, то вы увидите в журнале не корректный путь, который конечно можно перезапрограмировать в этой строке:
$this->cache_filename .= '_dat'.intval(@filemtime($this->sourceFilename));
Надеюсь помог, и не забываем про обратный слэш \/

Скорей всего в новых версиях ModX >= 3 это уже исправят.
R2m0x94 (Vasily)
28 февраля 2022, 15:00
0
А у меня стоит на submit minishop2 «msCustomerAutoReg», и он при создании нового пользователя, когда логгинет в ЛК, выдаёт это предупреждение на стоках core/model/modx/error/moderror.class.php:168 и 250, пока временно внёс правки хотя знаю, что так делать нельзя.

168 строка
if (is_array($this->errors) || is_object($this->errors)) {
    $count_errors = count($this->errors);
} else {
    $count_errors = '';
}
return array (
    'success' => $status,
    'message' => $this->message,
    'total' => isset ($this->total) && $this->total != 0 ? $this->total : $count_errors,
    'errors' => $this->errors,
    'object' => $objarray,
);
250 строка
public function hasError() {
    if (is_array($this->errors) || is_object($this->errors)) {
        $count_errors = count($this->errors);
    }
    return $count_errors > 0 || $this->message != '';
}
R2m0x94 (Vasily)
17 февраля 2022, 12:14
0
Проверил, у меня ресурс программно создаётся и даже в searchable 1 — В индекс не добавляется. Сейчас из консольки попробовал запустить процессор, всё хорошо. Ваше решение помогло, спасибо огромное, а на дебаге вот:
Notice: Trying to access array offset on value of type int in /core/components/msearch2/phpmorphy/src/fsa/access/fsa_sparse_file.php on line 32
R2m0x94 (Vasily)
17 февраля 2022, 12:11
0
Спасибо, это самое, то что надо.
R2m0x94 (Vasily)
16 февраля 2022, 21:07
0
Там, я уже был. Спасибо.

Мне нужно добавление слов в индекс при создании товара, то есть из плагина. А настройка mse2OnBeforeSearchIndex, что-то не срабатывает и в бд слова не пишутся. От того и вопрос, как выполнить индексацию слов при том, что есть публичная функция Index()

Индексация происходит в админке и за неё отвечает assets/components/msearch2/js/mgr/widgets/index.form.js:27
core/components/msearch2/processors/mgr/index/create.class.php:148
R2m0x94 (Vasily)
14 февраля 2022, 15:30
0
Проблема была успешно ликвидирована путем, что расширял класс с тем же названием, а надо было create another base class, от туда и не срасталось, а пишу, что всё делал по инструкции. Прошу прощения, виноват, делал на скорую руку.
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
У меня например была такая проблема, у поддомена не было ключа, который находился в контексте сайта (домена), у которого был ключ. Иными словами на домене репозиторий работает исправно, так как ключ к ниму есть, а у поддомена ключа нет и подключения соответственно тоже нет, поэтому приходится идти на основной домен, ставить пакеты, затем логинится в админку контекста поддомена и юзать установленные пакеты. Лично я так решил проблему.