◄ Помощь ► Magento 2

на маркетплейсе (на сайте) кидаешь бесплатный модуль в корзину, покупаешь за 0 рублей.
После этого ты можешь его оттуда скачать. Выкачиваешь и устанавливаешь вручную

Платный Checkout Suite, а то был One Page Checkout. Они наверно убрали его с сайта

обычный модуль
iwd all можно скачать у них на сайте
Для просмотра ссылки Войди или Зарегистрируйся

Расшифровка ни при чем. У каждого вендора есть подобный базовый модуль с сервисным классам, чтобы не дублировать их в каждый свой модуль, не важно платный он или бесплатный
 
Последнее редактирование модератором:
Так в том то и дело, они пишут установите iwd all и модуль. По логике для расшифровки, но для бесплатного модуля возможно он не нужен. "Установка IWD_All является необходимым шагом для того, чтобы купленное расширения от IWD, чтобы правильно функционировать в системе Magento." Вот и возникает вопрос, что бесплатное приложение от них требует или нет этого модуля? Инструкции для One Page / Step Checkout нет. Видимо сначала запустили бесплатный пробный продукт, а потом удалили его и сделали платным и уже с этим модулем расшифровки.
IWD_All - это их коровский модуль, без него основные модуля работать не будут.

Правильно ли я понял, что в данном случае возможно не нужно копировать папку "core"?
На данный момент в папке app/code/Smartwave лежат несколько папок: Core, Filterproducts, Megamenu, Porto, Socialfeeds.
Хочу вытащить только модуль Megamenu.
Я спутал с первой маджентой. Думаю, что нужно, как правило прописывается зависимости от коровского модуля. Посмотрите модуль мегаменю файл etc/module.xml - есть ли в нем теги <sequence>...</sequence>

etc/module.xml
Код:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Smartwave_Megamenu" setup_version="2.1.0" active="true">
        <sequence>
            <module name="Magento_Catalog"/>
        </sequence>
    </module>
</config>
Его тут нет, думаю что не нужно.

В magento 2 зависимости определяются в Object Manager с помощью иньекций в конструкторе класса и в di.xml модуля.
Т.е. зависимости с другими модулями могут быть какими угодно в каждом классе модуля. Определить их можно просмотрев список инъекций в конструкторе класса.

sequence в module.xml влияет только на порядок загрузки данного модуля.
В данном случае модуль будет загружен после Magento_Catalog

p.s

Чтобы определить, используется ли iwd_all в модуле, делай сквозной поиск в файлах по неймспейсу vendor\module
т.е. IWD\All

Ну вроде как бы логично указывать порядок загрузки модулей и каких, если в них есть зависимости. Иначе через зависимости из di.xml , классы модуля могут пытаться получать инстэнсы объектов, модуль которых еще не загрузился.
 
Последнее редактирование модератором:
В папке Core(код пул) содержатся только native модули мадженты, фрилансерские(как в вашем случае) модули могут лежать в других папках - community,local
Правильно ли я понял, что в данном случае возможно не нужно копировать папку "core"?
На данный момент в папке app/code/Smartwave лежат несколько папок: Core, Filterproducts, Megamenu, Porto, Socialfeeds.
Хочу вытащить только модуль Megamenu.

Посмотрите модуль мегаменю файл etc/module.xml - есть ли в нем теги <sequence>...</sequence>
etc/module.xml
Код:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Smartwave_Megamenu" setup_version="2.1.0" active="true">
        <sequence>
            <module name="Magento_Catalog"/>
        </sequence>
    </module>
</config>

Его тут нет, думаю что не нужно.
Как я понимаю в файле модуля etc/module.xml в <sequence></sequence> указываются зависимости. В данном случае только родной модуль Magento - Magento_Catalog. Благодарю за информацию!
 
Последнее редактирование модератором:
В magento 2 зависимости определяются в Object Manager с помощью иньекций в конструкторе класса и в di.xml модуля.
Т.е. зависимости с другими модулями могут быть какими угодно в каждом классе модуля. Определить их можно просмотрев список инъекций в конструкторе класса.

sequence в module.xml влияет только на порядок загрузки данного модуля.
В данном случае модуль будет загружен после Magento_Catalog

p.s

Чтобы определить, используется ли iwd_all в модуле, делай сквозной поиск в файлах по неймспейсу vendor\module
т.е. IWD\All

Ну вроде как бы логично указывать порядок загрузки модулей и каких, если в них есть зависимости. Иначе через зависимости из di.xml , классы модуля могут пытаться получать инстэнсы объектов, которых еще не существует.

Менеджер объектов в любом случае загрузит в твой класс инстанс, если ты делаешь инъекцию.
Разница в том, что загруженный инстанс не будет инициализирован перед этим внутри своего родного модуля, и некоторые его параметры будут другими
В документации упоминается, что это влияет в первую очередь на классы блоков которые грузят лейауты
Для просмотра ссылки Войди или Зарегистрируйся

Вероятно это также влияет на xml-файлы конфигурации uiComponent
И также вероятно (не уверен) без правильной очередности загрузки менеджер объектов не берет в расчет di.xml модуля, к которому принадлежит класс
 
Последнее редактирование модератором:
Менеджер объектов в любом случае загрузит в твой класс инстанс, если ты делаешь инъекцию.
Разница в том, что загруженный инстанс не будет инициализирован перед этим внутри своего родного модуля, и некоторые его параметры будут другими
В документации упоминается, что это влияет в первую очередь на классы блоков которые грузят лейауты
Для просмотра ссылки Войди или Зарегистрируйся

Вероятно это также влияет на xml-файлы конфигурации uiComponent
И также вероятно (не уверен) без правильной очередности загрузки менеджер объектов не берет в расчет di.xml модуля, к которому принадлежит класс

В таком случае ему только проверять конструкторы в каждом классе на наличие инъекций коровского модуля, можно поиск по файлам конечно сделать. Может проще попробовать отключить модуль Core и проверить работоспособность модуля меню?

Таки да )
Если удалить Core или любой другой модуль (из которого сделаны иньекции)
и запустить setup:di:compile, ту же вылезет, чего не хватает
Ну если удалять, то сначала setup:upgrade ????:D

setup:upgrade - для БД. Если модуль создает свои таблицы при установке, то по правилам хорошего тона, у него должен быть скрипт, который при удалении модуля удаляет и таблицы.
setup:upgrade как раз и запускает этот скрипт.
Ну так модуль же регистрируется в таблице setup_module , на сколько я знаю при добавлении или удалении модулей нужно делать эту команду, поскольку даже при несоответствии версии модуля в строке данной таблице уже выпадает на фронте ошибка, которая таки просит выполнить эту команду.
 
Последнее редактирование модератором:
Таки да )
Если удалить Core или любой другой модуль (из которого сделаны иньекции)
и запустить setup:di:compile, ту же вылезет, чего не хватает

setup:upgrade - для БД. Если модуль создает свои таблицы при установке, то по правилам хорошего тона, у него должен быть скрипт, который при удалении модуля удаляет и таблицы.
setup:upgrade как раз и запускает этот скрипт.

ps

Точнее, setup:upgrade, наоборот запускает скрипт добавления таблиц и данных при установке.
А скрипт удаления запускает module:uninstall

Модули прописываются в app/etc/config.php
Насколько я помню, если тупо удалить папку с модулем он обнулит или удалит их оттуда автоматом

Но setup:di:compile желательно запустить в любом случае

Ошибка скорее всего вылазит из-за этого
Модуль по-прежнему прописан в файлах /var/generation , откуда менеджер объектов грузит зависимости
 
Последнее редактирование модератором:
Правильно ли я понял, что сводится всё к тому, чтобы попробовать установить модуль без папки Core? Насчёт удаления модуля вопрос интересный. Оф-документация Для просмотра ссылки Войди или Зарегистрируйся.
 
Попробук
Правильно ли я понял, что сводится всё к тому, чтобы попробовать установить модуль без папки Core? Насчёт удаления модуля вопрос интересный. Оф-документация Для просмотра ссылки Войди или Зарегистрируйся.
Если у вас на локальной машине, попробуйте просто удалить вырезать папку Core и выполнить вышеупомянутые команды. И проверить работу модуля megamenu
 
Попробовал установить Mega Menu, залив папку с модулем в app/code
Произвёл команды после:
sudo chown -R :www-data /var/www/magento/html/app/code
php bin/magento setup:upgrade
php bin/magento setup:di:compile
bin/magento setup:static-content:deploy

Не могу зайти в админку теперь.
Обновил права на папки как было. Всё равно не пускает. Кто-нибудь знает решение? Или это фишка вытягиваемого модуля из темы?

Работает только главная страница, другие страницы и вход в админ-панель отображают:

There has been an error processing your request
Exception printing is disabled by default for security reasons.

Error log record number: 947749961906

Перепроверил различные варианты, с папкой core и без.
Вероятно не всё так просто и нельзя вытащить модуль из темы Porto?
 
Последнее редактирование:
Попробовал установить Mega Menu, залив папку с модулем в app/code
Произвёл команды после:
sudo chown -R :www-data /var/www/magento/html/app/code
php bin/magento setup:upgrade
php bin/magento setup:di:compile
bin/magento setup:static-content:deploy

Не могу зайти в админку теперь.
Обновил права на папки как было. Всё равно не пускает. Кто-нибудь знает решение? Или это фишка вытягиваемого модуля из темы?

Работает только главная страница, другие страницы и вход в админ-панель отображают:

There has been an error processing your request
Exception printing is disabled by default for security reasons.

Error log record number: 947749961906

Перепроверил различные варианты, с папкой core и без.
Вероятно не всё так просто и нельзя вытащить модуль из темы Porto?

Откройте файл в var/report c таким номером 947749961906 и посмотрите лог ошибки, а вообще если сайт не в боевом режиме, то расcкомментируйте 11 строку в файле app/bootstrap.php - (#ini_set('display_errors', 1);)
И вообще бы включить девелопер мод - php bin/magento deploy:mode:set developer

UPD: Тоже были проблемы с админкой, но потом выяснилось, что на нее влияет XDEBUG , вход в админку зависает просто и все а фронт работал нормально, отключил XDEBUG и проблем нет. Но раз тут принтит ошибку тут явно проблема в другом ;)
 
Последнее редактирование:
Назад
Сверху