Всего 123 606 комментариев

Василий Наумкин
07 мая 2024, 11:16
0
Лично я терпеть не могу фасады Laravel, и это одна из основных причин, почему мы с ним не сработались.

Дело в том, что при переходе в addModifier здесь, мы попадём в фасад, а не в класс \Fenom, где этот метод и объявлен:

И это жутко бесит, когда пытаешь проследить логику работы.

Уж лучше вызывать нормально класс и подписывать его комментарием, зато никаких проблем с навигацией через IDE.

По моему, это гораздо проще и удобнее, чем городить фасады.

Но, в любом случае, спасибо за заметку. Кому-то, может, такое наоборот удобнее.
Василий Наумкин
07 мая 2024, 07:55
+1
Я же выше объяснил, что происходит.

Ничего удалять не надо, просто добавляешь разрешение менять версии уже установленных пакетов ключом -W, что означает --with-all-dependencies.

Это не ошибка, там нет никаких ошибок. Он просто не может разрешить зависимость автоматически и просит тебя указать ему явно разрешение:
composer require mmx/fenom --update-no-dev --with-all-dependencies
Андрей Степаненко
07 мая 2024, 07:05
0
По тестировал, на modhost.pro
попробуй вот так сделать:

wget https://raw.githubusercontent.com/modxcms/revolution/v3.0.5-pl/composer.json
composer install
composer require mmx/fenom --update-no-dev
будет ругаться на зависимости

Удаление core/vendor и composer.lock обязателен получается.
И затем установка
wget https://raw.githubusercontent.com/modxcms/revolution/v3.0.5-pl/composer.json
composer require mmx/fenom --update-no-dev

Либо вариант, проблемы с зависимостями в ручную разруливать: modx.pro/development/24702#comment-143093
Василий Наумкин
07 мая 2024, 05:15
+1
У меня всё норм — вот, записал видосик
Василий Наумкин
07 мая 2024, 02:20
0
Тебе там пишут, что у тебя уже установлен пакет psr/container 2й версии. Проверяем, почему именно второй:

Просто потому, что можно или 1ю, или 2ю. Никаких особых требований нет, поэтому Composer выбрал версию 2.

Затем ты требуешь установить mmx/fenom — и тебе говорят, что для этого надо изменить зафиксированную версию psr/container.
illuminate/container[v8.0.0, ..., 8.x-dev] require psr/container ^1.0 -> found psr/container[1.0.0, ..., 1.x-dev] but the package is fixed to 2.0.2 (lock file version)
Как это сделать тебе говорят чуть ниже:
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
Просто разреши даунгрейднуть версию ключом:
composer require mmx/fenom -W

Всё устанавливается, только что проверил на modhost.pro
Андрей Степаненко
06 мая 2024, 23:02
0
изначально делал так
wget raw.githubusercontent.com/modxcms/revolution/v3.0.4-pl/composer.json
composer install
composer require mmx/fenom
Получал ошибку modx.pro/development/24702#comment-143091

Попробовал по другому
Удалил composer.lock и core/vendor
сразу выполнил команду
composer require mmx/fenom

все установилось

Update:
кроме самого пакета mmx/fenom (перепутал))) сначала подумал что он то же установился
при повторе, опять ошибка не совместимости
composer require mmx/fenom
Андрей Степаненко
06 мая 2024, 22:57
0
php 7.4 не установился

пробывал с:
wget raw.githubusercontent.com/modxcms/revolution/v3.0.4-pl/composer.json
wget raw.githubusercontent.com/modxcms/revolution/v3.0.5-pl/composer.json

composer require mmx/fenom
./composer.json has been updated
Running composer update mmx/fenom
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - illuminate/container[v8.0.0, ..., 8.x-dev] require psr/container ^1.0 -> found psr/container[1.0.0, ..., 1.x-dev] but the package is fixed to 2.0.2 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
    - illuminate/events[v10.47.0, ..., 10.x-dev] require php ^8.1 -> your php version (7.4.33) does not satisfy that requirement.
    - mmx/database[1.1.0, ..., 1.2.0] require illuminate/events ^v8.83|^v10.47 -> satisfiable by illuminate/events[v8.83.0, ..., 8.x-dev, v10.47.0, ..., 10.x-dev].
    - mmx/fenom[dev-main, 1.0.0] require mmx/database ^1.1 -> satisfiable by mmx/database[1.1.0, 1.1.1, 1.2.0].
    - illuminate/events[v8.83.0, ..., 8.x-dev] require illuminate/container ^8.0 -> satisfiable by illuminate/container[v8.0.0, ..., 8.x-dev].
    - Root composer.json requires mmx/fenom * -> satisfiable by mmx/fenom[dev-main, 1.0.0, 9999999-dev].

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
You can also try re-running composer require with an explicit version constraint, e.g. "composer require mmx/fenom:*" to figure out if any version is installable, or "composer require mmx/fenom:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.
bash-5.1$ php -v
PHP 7.4.33 (cli) (built: Nov 12 2022 05:16:49) ( NTS )
Copyright © The PHP Group
Zend Engine v3.4.0, Copyright © Zend Technologies
Алексей Смирнов
06 мая 2024, 17:01
0
Вы не указали где именно вывести.
Есть у нас как минимум 3 места: Страница товара, страница со списком товаров, корзина.
На странице товара пример есть по ссылке в теме гитхаба,
списки что в корзине что в каталоге — расписал.
по работе — лучше создайте или на сайте или в телеграмм-канале (раздел работа) предложение о работе — кто-нибудь откликнется.
Василий Наумкин
06 мая 2024, 15:26
0
Очень рад, что тебе нравится!
Наумов Алексей
06 мая 2024, 09:00
+1
За поддержку php 7.4 все ж спасибо! Как я писал в комментарии к прошлой заметке, я запустил mmxDatabase в связке с сайтом на modx 2.8.5, что оказалось очень удобно для одной из текущих задач (а именно выгрузка всего контента сайта в формате json для переноса данных на другую платформу). с mmxDatabase это решается очень быстро!
Олег
06 мая 2024, 00:40
0
Если посетитель выбирает опции в фильтре и переходит в товар — все отрабатывает отлично. Но если затем он переходит между товарами через те же «похожие товары» или «недавно просмотренные товары», тогда в куки ничего нового не записывается и в «похожих товарах» выводятся постоянно одни и те же товары.
Как вариант — после перехода в товар из фильтра отображать похожие товары как уже предложили и сразу удалять куки. И далее в каждом товаре проверять наличие куки. При отсутствии куки записать в массив определенный список опций текущего товара, получить список id товаров с таким же набором опций и в «похожих товарах» вывести этот список.

Вот собственно проблема, которую гугл не помог решить:
Как получить в массив или лучше в JSON все опции из списка для текущего товара.
Сергей
05 мая 2024, 23:01
0
я делаю связи и задача не в товаре а просто в каталоге вывести точки с цветом (hex) и я не понимаю как применить то что написали выше. Если не сложно, можете дать пример вывода? или напишите мне в ЛС я готов оплатить поддержку
Алексей Смирнов
05 мая 2024, 20:22
+1
Обсуждение возможностей тут github.com/modx-pro/miniShop2/pull/761
А чтобы вытащить значения из БД в удобном формате — достаточно написать небольшой сниппет и результат его работы сохранить в переменную или Placeholder или setOption.
Простой сниппет Kvazicolor который вытащит сопоставление:
$name = 'colorushka'; // имя опции которая имеет цвета.
$tableon = $modx->getOption('table_prefix');
$asf = $modx->query("SELECT properties FROM `".$tableon."ms2_options` WHERE `key` = '".$name."'")->fetch(PDO::FETCH_ASSOC);
$out = json_decode($as['properties'],1);
$outx = [];
foreach ($out['values'] as $line){
    $outx[$line['name']] = $line['value'];
}
return $outx;
Далее в феноме до вызова mfiler засунуть это все в плейсхолдер, например:
{set $mypole = 'colorushka'}
{set $masscol[$lit['alias']] = 'Kvazicolor' | snippet : ['name' => $mypole]}
{$_modx->setPlaceholder('arrcolors',$masscol)}
Далее в чанке row
получаем:
{var $key = $table ~ $delimeter ~ $filter}
{set $ezhikcolors = 'arrcolors' | placeholder}
..... любой код ....
<span class="checking" style="background-color: {$ezhikcolors [$filter_key][$value]}">{$title}</span>
Вот как то так.
Роман Л.
05 мая 2024, 18:28
0
К сожалению нет, не получилось.
Сергей
05 мая 2024, 18:21
0
Получилось реализовать? я тоже столкнулся с этой же проблемой, инструкция нет, куда копать не понятно
Andrey
05 мая 2024, 17:14
0
Сразу же вводит в заблуждение выбор курьером/в пункт как в форме минишопа, так и на карте параллельно.
так не юзерфрендли ни разу
Ivan K.
05 мая 2024, 14:11
+1
Установил, наконец-то)) Все работает спасибо.
Ivan K.
05 мая 2024, 13:33
-1
Во как «разжевал» мне ответ знаменитый ИИ ))

Основная причина проблемы: Ключевая проблема здесь заключается в конфликте версий двух зависимостей:
Ваш проект явно требует версию ^3.3 пакета nesbot/carbon, как указано в вашем файле composer.json.
Однако пакет illuminate/support, который является зависимостью для пакета vesp/core (который, в свою очередь, зависит от mmx/forms), требует версию ^2.62.1 или ^2.67 пакета nesbot/carbon, в зависимости от конкретной версии illuminate/support. Эти версии nesbot/carbon несовместимы с версией ^3.3, требуемой вашим проектом.
Цепочка зависимостей:
mmx/forms зависит от vesp/core.
vesp/core зависит от illuminate/events.
illuminate/events зависит от illuminate/support.
illuminate/support требует версию nesbot/carbon, которая конфликтует с требованиями вашего проекта.
Предлагаемые решения:
Опция --with-all-dependencies (-W): Запуск команды обновления или требования с этой опцией может помочь разрешить эти проблемы с зависимостями, позволяя Composer рассмотреть возможные обновления, понижения версий или удаления для всех пакетов, а не только для того, с которым вы непосредственно имеете дело.
Указание версии: Вы можете решить проблему, указав другую версию для mmx/forms, которая либо не требует конфликтующей версии nesbot/carbon, либо совместима с другими версиями illuminate/support.
Измените ваш composer.json: Вы могли бы рассмотреть возможность корректировки собственного требования к nesbot/carbon на совместимую версию, если ваш проект все еще может удовлетворять свои потребности с более старой версией carbon.
Такой тип конфликта зависимостей распространен в проектах с множеством зависимостей и иногда может быть решен путем тщательной корректировки требуемых версий для обеспечения совместимости всех зависимостей друг с другом.
Ivan K.
05 мая 2024, 12:06
0
То есть, у тебя уже установлен какой-то пакет с неподходящей версией. И его можно обновить, если указать ключ -W. Только и всего.
Понизить версию composer просил, вот такие сообщения меня напрягают))
Ну раз это только предупреждение от composer, буду знать теперь.
Василий Наумкин
05 мая 2024, 09:18
+2
Примерно тоже самое, только при помощи mmxDatabase:

$id = $modx->getOption('id', $scriptProperties);
$category = $modx->getOption('category', $scriptProperties, '1', true);

$resource = \MMX\Database\Models\Resource::query()
    ->select('id', 'pagetitle')
    ->with('TvValues', static function($c) use ($category) {
        $c->select('value', 'contentid', 'tmplvarid');
        $c->whereHas('Tv', static function($c) use ($category) {
            $c->where('category', $category);
        });
        $c->with('Tv:id,name,caption,default_text');
    })
    ->find($id);

return $resource ? print_r($resource->toArray(), true) : 'Not found';

Получается 3 простых выборки, без join.

Сначала выбирается ресурс, потом значения его ТВ из нужной категории, а затем добираются основные свойства этих ТВ.

Eloquent собирает все данные вложенными массивами в итоговый результат:


Дальше можно перебирать результат на Fenom со всеми проверками на пустоту и прочее.