The main MageSuite (meta)package to rule them all

Related tags

Laravel magesuite
Overview

MageSuite

A Magento 2 extension ecosystem providing UX/performance improvements and many new features.

This is a core metapackage which you should install in order to get MageSuite into your Magento 2 setup.

Demo

A small peek into to available features, this is by no means exaustive.

Short video presentation of the Content Constructor feature:

A demo installation showing the theme can be found here.

User guide

PDF User guide of MageSuite features can be downloaded here.

⚠️

Some of extensions presented in User Guide are optional and not bundled in main MageSuite metapackage.

You might need to install them separately.

You can find list of all available extensions here.

We will prepare more readable list of available extensions with respective descriptions in 2021. It will be included in this README.

Magento versions

Magento version MageSuite package version List of potential breaking compatibility changes
2.3.0-2.3.1 ^2.0.0
2.3.2 ^3.0.0
2.3.3 ^4.0.0
2.3.4+ ^5.0.0
2.4.0+ ^7.0.0 here
2.4.2+ ^8.0.0 here
2.4.2+ ^9.0.0 here

Requirements

All of the packages require Magento 2.4.2+.

The whole ecosystem depends on elasticsuite and you need elasticsearch in order to use it.

All of the frontend features and improvements are implemented in theme-creativeshop. You won't be able to take advantage of them if you use Luma or other custom theme.

WARNING! We do not support "easy"/"zip" magento installations. Creativeshop supports only the Integrator / composer route.

Installation

TIP It's advised you either have Elasticsuite (version 2.10.x) already installed and running. If you don't then this package will install it and you must have elasticsearch up and running on localhost:9200 prior to executing the setup:upgrade or it will fail.

  • (optional) Install Magento if you don't have it yet
  • Execute composer require creativestyle/magesuite ^8.0.0
  • Execute bin/magento setup:upgrade
  • Build the theme (next chapter)
  • Flush Magento cache
  • Switch the theme to Theme Creativeshop in admin

Building theme-creativeshop

⚠️

theme-creativeshop from version 12 requires Node 14

MageSuite theme does not rely on Magento for building the assets, instead it uses gulp.

Before you start, make sure you have nodejs and yarn installed.

After the theme's composer package is installed to your Magento project, execute:

cd vendor/creativestyle/theme-creativeshop
yarn
yarn build

TIP If yarn command fails with guppy-pre-push: Command failed you need to run git init in the theme's directory as a workaround and retry yarn. A permanent solution is on the way.

It will install the build artifacts into app/design subfolder.

After the theme is built, clear your Magento cache and you should be able to select it in admin.

Brought to life by
creativestyle | Magento Agentur

Comments
  • ContentConstructor tries to change custom layout update which causes errors on Magento Open Source 2.3.4

    ContentConstructor tries to change custom layout update which causes errors on Magento Open Source 2.3.4

    As of Magento 2.3.4, "You can no longer specify an entity-specific layout update with text but instead must create a physical file that contains the layout updates and select it for use." https://devdocs.magento.com/guides/v2.3/release-notes/release-notes-2-3-4-open-source.html

    ContentConstructor tries to change the custom layout update text, which results in errors in CMS Page Edit, Category Edit, and Product Edit pages.

    Any ideas for the workarounds would be very much appreciated.

    Step to reproduce the issue

    1. Install/upgrade to Magento Open Source 2.3.4
    2. Enable Magesuite extension
    3. Select any ContentConstructor element and save/edit CMS pages/categories/product pages
    4. You get the error Custom layout updates must be selected from a file in CMS page and Custom layout update text cannot be changed, only removed or in Product or Category
    opened by mtsmtyuta 14
  • empty htmlClass attribute is not allowed in layout configuration

    empty htmlClass attribute is not allowed in layout configuration

    Description: Some layouts contain refereceneContainer elements with htmlClass="" This is not allowed and the validation throws an error when loading for example the homepage

    Reproduce:

    1. install magento 2.3.1
    2. set deployment mode to developer
    3. install magesuite 2.0.1
    4. install and activate creativeshop theme
    5. clear cache and go to homepage

    Expected: The homepage should load

    Actual: An error is displayed

    1 exception(s):
    Exception #0 (Magento\Framework\Config\Dom\ValidationException): Element 'referenceContainer', attribute 'htmlClass': [facet 'pattern'] The value '' is not accepted by the pattern '[a-zA-Z][a-zA-Z\d\-_]*(\s[a-zA-Z][a-zA-Z\d\-_]*)*'.
    Line: 2028
    
    Element 'referenceContainer', attribute 'htmlClass': '' is not a valid value of the atomic type 'htmlClassType'.
    Line: 2028
    
    
    Exception #0 (Magento\Framework\Config\Dom\ValidationException): Element 'referenceContainer', attribute 'htmlClass': [facet 'pattern'] The value '' is not accepted by the pattern '[a-zA-Z][a-zA-Z\d\-_]*(\s[a-zA-Z][a-zA-Z\d\-_]*)*'.
    Line: 2028
    
    Element 'referenceContainer', attribute 'htmlClass': '' is not a valid value of the atomic type 'htmlClassType'.
    Line: 2028
    
    <pre>#1 Magento\Framework\Config\Dom->__construct() called at [vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:116]
    #2 Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject() called at [vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php:66]
    #3 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() called at [vendor/magento/framework/ObjectManager/ObjectManager.php:56]
    #4 Magento\Framework\ObjectManager\ObjectManager->create() called at [vendor/magento/framework/Config/DomFactory.php:43]
    #5 Magento\Framework\Config\DomFactory->createDom() called at [vendor/magento/framework/View/Model/Layout/Update/Validator.php:141]
    #6 Magento\Framework\View\Model\Layout\Update\Validator->isValid() called at [vendor/magento/framework/View/Model/Layout/Merge.php:476]
    #7 Magento\Framework\View\Model\Layout\Merge->_validateMergedLayout() called at [vendor/magento/framework/View/Model/Layout/Merge.php:457]
    #8 Magento\Framework\View\Model\Layout\Merge->load() called at [generated/code/Magento/Framework/View/Model/Layout/Merge/Interceptor.php:193]
    #9 Magento\Framework\View\Model\Layout\Merge\Interceptor->load() called at [vendor/magento/framework/View/Layout/Builder.php:86]
    #10 Magento\Framework\View\Layout\Builder->loadLayoutUpdates() called at [vendor/magento/framework/View/Layout/Builder.php:63]
    #11 Magento\Framework\View\Layout\Builder->build() called at [vendor/magento/framework/View/Layout.php:253]
    #12 Magento\Framework\View\Layout->build() called at [vendor/magento/framework/View/Layout.php:875]
    #13 Magento\Framework\View\Layout->getBlock() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:414]
    #14 Magento\Framework\View\Layout\Interceptor->getBlock() called at [vendor/magento/module-cms/Helper/Page.php:171]
    #15 Magento\Cms\Helper\Page->prepareResultPage() called at [vendor/magento/module-cms/Controller/Index/Index.php:74]
    #16 Magento\Cms\Controller\Index\Index->execute() called at [generated/code/Magento/Cms/Controller/Index/Index/Interceptor.php:24]
    #17 Magento\Cms\Controller\Index\Index\Interceptor->execute() called at [vendor/magento/framework/App/Action/Action.php:108]
    #18 Magento\Framework\App\Action\Action->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #19 Magento\Cms\Controller\Index\Index\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #20 Magento\Cms\Controller\Index\Index\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #21 Magento\Cms\Controller\Index\Index\Interceptor->___callPlugins() called at [generated/code/Magento/Cms/Controller/Index/Index/Interceptor.php:39]
    #22 Magento\Cms\Controller\Index\Index\Interceptor->dispatch() called at [vendor/magento/framework/App/FrontController.php:159]
    #23 Magento\Framework\App\FrontController->processRequest() called at [vendor/magento/framework/App/FrontController.php:99]
    #24 Magento\Framework\App\FrontController->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #25 Magento\Framework\App\FrontController\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #26 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php:94]
    #27 Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135]
    #28 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php:73]
    #29 Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135]
    #30 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #31 Magento\Framework\App\FrontController\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:26]
    #32 Magento\Framework\App\FrontController\Interceptor->dispatch() called at [vendor/magento/framework/App/Http.php:136]
    #33 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:24]
    #34 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:258]
    #35 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:40]
    #36 require() called at [/Users/david.verholen/.composer/vendor/weprovide/valet-plus/server.php:131]
    </pre>
    
    
    opened by davidverholen 12
  • component paragraph fails to render in frontend

    component paragraph fails to render in frontend

    The class \MageSuite\ContentConstructorFrontend\Model\Component\Paragraph seems to be a copy of \MageSuite\ContentConstructorFrontend\Model\Component\StaticBlock in line 30 of the Paragraph Class there is an error thrown cause the Paragraph Component doesn't have a index named "blockId" in the var $configuration.

    public function getContent() {
            $configuration = $this->getData();
    
            $id = isset($configuration['blockId']) ? $configuration['blockId'] : $configuration['identifier'];
    
            $block = $this->blockFactory->createBlock(
                \Magento\Cms\Block\Block::class,
                [
                    'data' => [
                        'block_id' => $id
                    ]
                ]
            );
    
            return $block->toHtml();
        }
    
    opened by roman204 11
  • Add content in admin

    Add content in admin

    Magento 2.3.2 Elasticsuite 2.8.1 magesuite 3.0

    I cant add content in admin. When i try to add any element, i get this error in console:

    content-constructor.ts:314 Uncaught TypeError: Cannot read property 'defaults' of undefined at VueComponent.getComponentConfigurator (content-constructor.ts:314) at VueComponent.<anonymous> (vue.js:220) at VueComponent.onPickComponent (component-picker.ts:115) at VueComponent.onPickComponent (vue.js:220) at VueComponent.eval (eval at Lt (vue.js:2859), <anonymous>:3:15) at HTMLAnchorElement.n (vue.js:8250) at HTMLAnchorElement.<anonymous> (vue.js:5047)

    opened by jacoweb 10
  • wrong element in cms_page_form.xml

    wrong element in cms_page_form.xml

    Description It's not possible to create or edit a cms page.

    Reproduce

    1. install Magento 2.3.1
    2. set deployment mode to developer
    3. install magesuite 2.0.3
    4. install and activate creativeshop theme
    5. clear cache and open the backend
    6. go to Content -> Elements -> Pages -> Add New Page or edit a existing one

    Expected The cms page editor should be opened.

    Actual An error is displayed.

    1 exception(s):
    Exception #0 (Magento\Framework\Exception\LocalizedException): The XML in file "/var/www/html/vendor/creativestyle/magesuite-opengraph/view/adminhtml/ui_component/cms_page_form.xml" is invalid:
    Element 'argument': This element is not expected. Expected is one of ( bookmark, boolean, button, checkbox, checkboxset, colorPicker, component, container, dataSource, dataProvider ).
    Line: 9
    
    Verify the XML and try again.
    
    Exception #0 (Magento\Framework\Exception\LocalizedException): The XML in file "/var/www/html/vendor/creativestyle/magesuite-opengraph/view/adminhtml/ui_component/cms_page_form.xml" is invalid:
    Element 'argument': This element is not expected. Expected is one of ( bookmark, boolean, button, checkbox, checkboxset, colorPicker, component, container, dataSource, dataProvider ).
    Line: 9
    
    Verify the XML and try again.
    <pre>#1 Magento\Ui\Config\Reader->read() called at [vendor/magento/module-ui/Config/Data.php:102]
    #2 Magento\Ui\Config\Data->initData() called at [vendor/magento/module-ui/Config/Data.php:136]
    #3 Magento\Ui\Config\Data->get('cms_page_form') called at [vendor/magento/framework/View/Layout/Reader/UiComponent.php:100]
    #4 Magento\Framework\View\Layout\Reader\UiComponent->interpret(&Magento\Framework\View\Layout\Reader\Context#000000003ea724eb000000001904b426#, &Magento\Framework\View\Layout\Element#000000003ea72731000000001904b426#, &Magento\Framework\View\Layout\Element#000000003ea7270c000000001904b426#) called at [vendor/magento/framework/View/Layout/ReaderPool.php:105]
    #5 Magento\Framework\View\Layout\ReaderPool->interpret(&Magento\Framework\View\Layout\Reader\Context#000000003ea724eb000000001904b426#, &Magento\Framework\View\Layout\Element#000000003ea7270c000000001904b426#) called at [vendor/magento/framework/View/Layout/Reader/Container.php:89]
    #6 Magento\Framework\View\Layout\Reader\Container->interpret(&Magento\Framework\View\Layout\Reader\Context#000000003ea724eb000000001904b426#, &Magento\Framework\View\Layout\Element#000000003ea7270c000000001904b426#, &Magento\Framework\View\Layout\Element#000000003ea7273d000000001904b426#) called at [vendor/magento/framework/View/Layout/ReaderPool.php:105]
    #7 Magento\Framework\View\Layout\ReaderPool->interpret(&Magento\Framework\View\Layout\Reader\Context#000000003ea724eb000000001904b426#, &Magento\Framework\View\Layout\Element#000000003ea7273d000000001904b426#) called at [vendor/magento/framework/View/Page/Config/Reader/Body.php:68]
    #8 Magento\Framework\View\Page\Config\Reader\Body->interpret(&Magento\Framework\View\Layout\Reader\Context#000000003ea724eb000000001904b426#, &Magento\Framework\View\Layout\Element#000000003ea7273d000000001904b426#, &Magento\Framework\View\Layout\Element#000000003ea7271e000000001904b426#) called at [vendor/magento/framework/View/Layout/ReaderPool.php:105]
    #9 Magento\Framework\View\Layout\ReaderPool->interpret(&Magento\Framework\View\Layout\Reader\Context#000000003ea724eb000000001904b426#, &Magento\Framework\View\Layout\Element#000000003ea7271e000000001904b426#) called at [vendor/magento/framework/View/Layout.php:325]
    #10 Magento\Framework\View\Layout->generateElements() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:89]
    #11 Magento\Framework\View\Layout\Interceptor->generateElements() called at [vendor/magento/framework/View/Layout/Builder.php:129]
    #12 Magento\Framework\View\Layout\Builder->generateLayoutBlocks() called at [vendor/magento/framework/View/Page/Builder.php:55]
    #13 Magento\Framework\View\Page\Builder->generateLayoutBlocks() called at [vendor/magento/framework/View/Layout/Builder.php:65]
    #14 Magento\Framework\View\Layout\Builder->build() called at [vendor/magento/framework/View/Layout.php:253]
    #15 Magento\Framework\View\Layout->build() called at [vendor/magento/framework/View/Layout.php:875]
    #16 Magento\Framework\View\Layout->getBlock('menu') called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:414]
    #17 Magento\Framework\View\Layout\Interceptor->getBlock('menu') called at [vendor/magento/module-backend/Model/View/Result/Page.php:26]
    #18 Magento\Backend\Model\View\Result\Page->setActiveMenu('Magento_Cms::cms...') called at [generated/code/Magento/Backend/Model/View/Result/Page/Interceptor.php:24]
    #19 Magento\Backend\Model\View\Result\Page\Interceptor->setActiveMenu('Magento_Cms::cms...') called at [vendor/magento/module-cms/Controller/Adminhtml/Page/Edit.php:60]
    #20 Magento\Cms\Controller\Adminhtml\Page\Edit->_initAction() called at [vendor/magento/module-cms/Controller/Adminhtml/Page/Edit.php:93]
    #21 Magento\Cms\Controller\Adminhtml\Page\Edit->execute() called at [generated/code/Magento/Cms/Controller/Adminhtml/Page/Edit/Interceptor.php:24]
    #22 Magento\Cms\Controller\Adminhtml\Page\Edit\Interceptor->execute() called at [vendor/magento/framework/App/Action/Action.php:108]
    #23 Magento\Framework\App\Action\Action->dispatch(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#) called at [vendor/magento/module-backend/App/AbstractAction.php:231]
    #24 Magento\Backend\App\AbstractAction->dispatch(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#) called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #25 Magento\Cms\Controller\Adminhtml\Page\Edit\Interceptor->___callParent('dispatch', array(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#)) called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #26 Magento\Cms\Controller\Adminhtml\Page\Edit\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#) called at [vendor/magento/module-backend/App/Action/Plugin/Authentication.php:143]
    #27 Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch(&Magento\Cms\Controller\Adminhtml\Page\Edit\Interceptor#000000003ea724f3000000001904b426#, &Closure#000000003ea724db000000001904b426#, &Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#) called at [vendor/magento/framework/Interception/Interceptor.php:135]
    #28 Magento\Cms\Controller\Adminhtml\Page\Edit\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#) called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #29 Magento\Cms\Controller\Adminhtml\Page\Edit\Interceptor->___callPlugins('dispatch', array(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#), NULL) called at [generated/code/Magento/Cms/Controller/Adminhtml/Page/Edit/Interceptor.php:39]
    #30 Magento\Cms\Controller\Adminhtml\Page\Edit\Interceptor->dispatch(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#) called at [vendor/magento/framework/App/FrontController.php:159]
    #31 Magento\Framework\App\FrontController->processRequest(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#, &Magento\Cms\Controller\Adminhtml\Page\Edit\Interceptor#000000003ea724f3000000001904b426#) called at [vendor/magento/framework/App/FrontController.php:99]
    #32 Magento\Framework\App\FrontController->dispatch(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#) called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #33 Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', array(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#)) called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #34 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#) called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #35 Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', array(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#), array(array('default_store_se...', 'page_cache_from_...', 'storeCookieValid...', 'install', 'configHash'))) called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:26]
    #36 Magento\Framework\App\FrontController\Interceptor->dispatch(&Magento\Framework\App\Request\Http#000000003ea72197000000001904b426#) called at [vendor/magento/framework/App/Http.php:136]
    #37 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:24]
    #38 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:258]
    #39 Magento\Framework\App\Bootstrap->run(&Magento\Framework\App\Http\Interceptor#000000003ea721dd000000001904b426#) called at [index.php:46]
    </pre>
    
    opened by torhoehn 10
  • Dependency on smile/elasticsuite 2.7.*

    Dependency on smile/elasticsuite 2.7.*

    Magento 2.3+ removes Magento\CatalogInventory\Model\Plugin\Layer which means you need to upgrade to Smile Elastic 2.8 as this fixes the dependency

    Magesuite requires Smile Elastic 2.7 in it's composer file, so trying to do the above upgrade causes a minimum-stability conflict

    opened by Judder 9
  • HOW-TO add an input field to set additional CSS classnames to CC components?

    HOW-TO add an input field to set additional CSS classnames to CC components?

    As per title, how to add an input field to a CC component to add an arbitrary CSS classnames? What files need to be edited? An example would be very handy?

    Reference: https://github.com/magesuite/content-constructor-admin/issues/8

    opened by frqnck 8
  • Failing Static Content deploy

    Failing Static Content deploy

    Hi,

    we run on PHP 7.2 and getting this error when compiling static content for our custom theme:

    /magento/pub/static/frontend/Creativestyle/theme-test/en_US/css/commons.css" file can't be read. Warning!file_get_contents(/magento/pub/static/frontend/Creativestyle/theme-test/en_US /css/commons.css): failed to open stream: No such file or directory

    Commons.css doesn't exist in our compiled theme after yarn build. Any idea how we could fix it?

    opened by beyondmediadev 8
  • Thumbnail Gallery not working

    Thumbnail Gallery not working

    Hi

    The thumbnail gallery has incorrect formatting. The thumbnail are above instead under and mouse over not working. example gallery picture

    I know it working with old Version, now with Magento 2.4.2 the issue is . Magesuite 9.0.0

    bug 
    opened by racing-cars 7
  • PWA not loading service-worker.js

    PWA not loading service-worker.js

    Hello - Testing on magento 2.4.0 and magesuite ^6.0.0 - I installed PWA and PWA-notifications modules.

    Modules have installed correctly, are enabled and I even see Notifications tab available in customer account of frontend, however I don't see service-worker.js or manifest.json loading on frontend. Are there any other config settings that I need to be aware of or extra steps?

    I see that PWA is working correctly on the demo.magesuite.io, but that's still on magento v2.3.

    Anyone else having issues?

    opened by ggm-dev 7
  • Product thumbnails are not generated in the right directory

    Product thumbnails are not generated in the right directory

    Description: The problem occurs when Magento generates (when adding products) or regenerates thumbnails (with bin/magento catalog:image:resize), the thumbnails are in the wrong folder and cause missing images on the shop.

    the thumbnails are in the folder pub/media/catalog/product/catalog/product/thumbnail instead of pub/media/catalog/product/thumbnail

    Reproduce:

    1. install magento 2.3.0
    2. install magesuite 2.0.1
    3. add some products
    4. run bin/magento catalog:image:resize

    Expected:

    pub
    ├── media
    │   ├── catalog
    │   │   └── product
    │   │       ├── thumbnail
    │   │       │   └── [...]
    

    Actual:

    pub
    ├── media
    │   ├── catalog
    │   │   └── product
    │   │       ├── catalog
    │   │       │   └── product
    │   │       │       └── thumbnail
    │   │       │           ├── [...]
    
    opened by anthonyhacart 7
  • Magento 2.4.4 compatibility issues

    Magento 2.4.4 compatibility issues

    Hi,

    I found some compatibility issues using Magesuite with Magento 2.4.4, these issues are mostly related to PHP 8.1 deprecation errors, I'm going to list some here.

    Exception #0 (Magento\Framework\Exception\RuntimeException): Type Error occurred when creating object: MageSuite\SoftDbStatusValidation\Module\Plugin\SoftDbStatusValidator, Too few arguments to function Magento\Framework\Module\Plugin\DbStatusValidator::__construct(), 2 passed in vendor/creativestyle/magesuite-soft-db-status-validation/Module/Plugin/SoftDbStatusValidator.php on line 32 and exactly 3 expected

    Exception #0 (Exception): Deprecated Functionality: str_replace(): Passing null to parameter 3 ($subject) of type array|string is deprecated in vendor/creativestyle/magesuite-url-rewrite/Repository/RewriteRepository.php on line 67

    Exception #0 (Exception): Deprecated Functionality: strtolower(): Passing null to parameter 1 ($string) of type string is deprecated in vendor/creativestyle/magesuite-sorting/Block/Product/ProductList/Toolbar.php on line 61

    Thanks

    opened by machrafemergento 6
  • PHP Fatal error after Upgrade 9.0.0 to 10.0.0

    PHP Fatal error after Upgrade 9.0.0 to 10.0.0

    Step 1: Upgrade Magento 2.4.2 to 2.4.4 Step 2: Upgrade Magesuite 9.0.0 to 10.0.0 bin/magento setup:upgrade PHP Fatal error: Declaration of MageSuite\ExtendedException\Processor\WebProcessor::__invoke(array $record) must be compatible with Monolog\Processor\WebProcessor::__invoke(array $record): array in /var/www/magento2/vendor/creativestyle/magesuite-extended-exception/Processor/WebProcessor.php on line 11

    Workaround tested: Downgrading Magento to 2.4.3 -> Magesuite 10.0.0 is working.

    opened by racing-cars 2
  • MageSuite meta package does not include Link Masking (+ Meta Robots) anymore

    MageSuite meta package does not include Link Masking (+ Meta Robots) anymore

    Currently MageSuite does not automatically include the Link Masking and Meta Robots SEO features anymore. The MageSuite meta package requires creativestyle/magesuite-seo-hreflang which in turn used to require creativestyle/magesuite-seo-link-masking. However, this was removed in https://github.com/magesuite/seo-hreflang/commit/b4d5d74f80cf77da922b0f5c3933bf7200cb7dbb#diff-d2ab9925cad7eac58e0ff4cc0d251a937ecf49e4b6bf57f8b95aab76648a9d34 and thus both the Link Masking and Meta Robots SEO features are missing. Since the MageSuite manual specifically references these modules, these modules are supposed to be part of the MageSuite I think so they should be required by the meta package may be? Or is it supposed to work differently with these modules?

    opened by fritzmg 0
  • Error when using MageSuite_SeoLinkMasking with Brands

    Error when using MageSuite_SeoLinkMasking with Brands

    Preconditions (*)

    1. Magento 2.4.2
    2. MageSuite 7.0.1
    • magesuite-seo-link-masking 1.2.12
    • magesuite-brand-management 1.4.1

    Steps to reproduce (*)

    1. Configure Link Masking as followed (if these properties are disabled, everything works fine) image

    2. Create Brand Page (Catalog -> Inventory -> Brands)

    3. Assign several products to the brand so that filters are displayed

    Expected result (*)

    1. Brandpage is displayed with products and filters

    Actual result (*)

    1. Exception is thrown
    Exception #0 (Magento\Framework\Exception\NoSuchEntityException): Kein Eintrag für id = 
    <pre>#1 Magento\Catalog\Model\CategoryRepository->get() called at [generated/code/Magento/Catalog/Model/CategoryRepository/Interceptor.php:32]
    #2 Magento\Catalog\Model\CategoryRepository\Interceptor->get() called at [vendor/creativestyle/magesuite-seo-link-masking/Service/FilterableAttributesProvider.php:112]
    #3 MageSuite\SeoLinkMasking\Service\FilterableAttributesProvider->getList() called at [vendor/creativestyle/magesuite-seo-link-masking/Service/FilterItemUrlProcessor.php:209]
    #4 MageSuite\SeoLinkMasking\Service\FilterItemUrlProcessor->getFilterableAttributes() called at [vendor/creativestyle/magesuite-seo-link-masking/Service/FilterItemUrlProcessor.php:133]
    #5 MageSuite\SeoLinkMasking\Service\FilterItemUrlProcessor->prepareFilterUrl() called at [vendor/creativestyle/magesuite-seo-link-masking/Service/FilterItemUrlProcessor.php:103]
    #6 MageSuite\SeoLinkMasking\Service\FilterItemUrlProcessor->prepareItemUrl() called at [vendor/creativestyle/magesuite-seo-link-masking/Plugin/Catalog/Model/Layer/Filter/Item/AdjustFilterItemUrl.php:43]
    #7 MageSuite\SeoLinkMasking\Plugin\Catalog\Model\Layer\Filter\Item\AdjustFilterItemUrl->aroundGetUrl() called at [vendor/magento/framework/Interception/Interceptor.php:135]
    #8 MageSuite\BrandManagement\Model\Layer\Filter\Item\Price\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #9 MageSuite\BrandManagement\Model\Layer\Filter\Item\Price\Interceptor->___callPlugins() called at [generated/code/MageSuite/BrandManagement/Model/Layer/Filter/Item/Price/Interceptor.php:23]
    #10 MageSuite\BrandManagement\Model\Layer\Filter\Item\Price\Interceptor->getUrl() called at [vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Block/Navigation/Renderer/Slider.php:222]
    #11 Smile\ElasticsuiteCatalog\Block\Navigation\Renderer\Slider->getUrlTemplate() called at [vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Block/Navigation/Renderer/Slider.php:137]
    #12 Smile\ElasticsuiteCatalog\Block\Navigation\Renderer\Slider->getConfig() called at [vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Block/Navigation/Renderer/PriceSlider.php:57]
    #13 Smile\ElasticsuiteCatalog\Block\Navigation\Renderer\PriceSlider->getConfig() called at [vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Block/Navigation/Renderer/Slider.php:80]
    #14 Smile\ElasticsuiteCatalog\Block\Navigation\Renderer\Slider->getJsonConfig() called at [app/design/frontend/creativestyle/theme-creativeshop/Smile_ElasticsuiteCatalog/templates/layer/filter/slider.phtml:59]
    #15 include() called at [vendor/magento/framework/View/TemplateEngine/Php.php:71]
    #16 Magento\Framework\View\TemplateEngine\Php->render() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #17 Magento\Framework\View\TemplateEngine\Php\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #18 Magento\Framework\View\TemplateEngine\Php\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #19 Magento\Framework\View\TemplateEngine\Php\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/View/TemplateEngine/Php/Interceptor.php:23]
    #20 Magento\Framework\View\TemplateEngine\Php\Interceptor->render() called at [vendor/magento/framework/View/Element/Template.php:273]
    #21 Magento\Framework\View\Element\Template->fetchView() called at [vendor/magento/framework/View/Element/Template.php:303]
    #22 Magento\Framework\View\Element\Template->_toHtml() called at [vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Block/Navigation/Renderer/AbstractRenderer.php:64]
    #23 Smile\ElasticsuiteCatalog\Block\Navigation\Renderer\AbstractRenderer->render() called at [vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Block/Navigation/FilterRenderer.php:52]
    #24 Smile\ElasticsuiteCatalog\Block\Navigation\FilterRenderer->_toHtml() called at [vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Block/Navigation/FilterRenderer.php:37]
    #25 Smile\ElasticsuiteCatalog\Block\Navigation\FilterRenderer->render() called at [app/design/frontend/creativestyle/theme-creativeshop/Smile_ElasticsuiteCatalog/templates/layer/view.phtml:76]
    #26 include() called at [vendor/magento/framework/View/TemplateEngine/Php.php:71]
    #27 Magento\Framework\View\TemplateEngine\Php->render() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #28 Magento\Framework\View\TemplateEngine\Php\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #29 Magento\Framework\View\TemplateEngine\Php\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #30 Magento\Framework\View\TemplateEngine\Php\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/View/TemplateEngine/Php/Interceptor.php:23]
    #31 Magento\Framework\View\TemplateEngine\Php\Interceptor->render() called at [vendor/magento/framework/View/Element/Template.php:273]
    #32 Magento\Framework\View\Element\Template->fetchView() called at [vendor/magento/framework/View/Element/Template.php:303]
    #33 Magento\Framework\View\Element\Template->_toHtml() called at [vendor/magento/framework/View/Element/AbstractBlock.php:1111]
    #34 Magento\Framework\View\Element\AbstractBlock->Magento\Framework\View\Element\{closure}() called at [vendor/magento/framework/View/Element/AbstractBlock.php:1115]
    #35 Magento\Framework\View\Element\AbstractBlock->_loadCache() called at [vendor/magento/framework/View/Element/AbstractBlock.php:675]
    #36 Magento\Framework\View\Element\AbstractBlock->toHtml() called at [vendor/magento/framework/View/Layout.php:578]
    #37 Magento\Framework\View\Layout->_renderBlock() called at [vendor/magento/framework/View/Layout.php:555]
    #38 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
    #39 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
    #40 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
    #41 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
    #42 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
    #43 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
    #44 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
    #45 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
    #46 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
    #47 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
    #48 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
    #49 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
    #50 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
    #51 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
    #52 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
    #53 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
    #54 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
    #55 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
    #56 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
    #57 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
    #58 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
    #59 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
    #60 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
    #61 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
    #62 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
    #63 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
    #64 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
    #65 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
    #66 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
    #67 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
    #68 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
    #69 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
    #70 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
    #71 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:606]
    #72 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:557]
    #73 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:149]
    #74 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:510]
    #75 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:140]
    #76 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:975]
    #77 Magento\Framework\View\Layout->getOutput() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #78 Magento\Framework\View\Layout\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #79 Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #80 Magento\Framework\View\Layout\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:347]
    #81 Magento\Framework\View\Layout\Interceptor->getOutput() called at [vendor/magento/framework/View/Result/Page.php:258]
    #82 Magento\Framework\View\Result\Page->render() called at [vendor/magento/framework/View/Result/Layout.php:171]
    #83 Magento\Framework\View\Result\Layout->renderResult() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #84 Magento\Framework\View\Result\Page\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #85 Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #86 Magento\Framework\View\Result\Page\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/View/Result/Page/Interceptor.php:95]
    #87 Magento\Framework\View\Result\Page\Interceptor->renderResult() called at [vendor/magento/framework/App/Http.php:120]
    #88 Magento\Framework\App\Http->launch() called at [vendor/magento/framework/Interception/Interceptor.php:58]
    #89 Magento\Framework\App\Http\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
    #90 Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
    #91 Magento\Framework\App\Http\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:23]
    #92 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:263]
    #93 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:29]
    
    opened by michi-p 0
  • Adding additional blocks to product tile does not work

    Adding additional blocks to product tile does not work

    I am trying to add additional blocks to the product tile layout in our own theme. It should be straight forward, but for some reason it does not work. For example:

    <!-- vendor/creativestyle/theme-custom/src/MageSuite_ProductTile/layout/product_tile.xml -->
    <!-- app/design/frontend/theme-custom/MageSuite_ProductTile/layout/product_tile.xml -->
    <?xml version="1.0"?>
    <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
        <body>
            <referenceBlock name="product.tile.container.tile.wrapper">
                <block class="Magento\Framework\View\Element\Template" name="foobar.block" before="product.tile.container.thumbnail" template="Magento_Theme::foobar.phtml" />
            </referenceBlock>
        </body>
    </page>
    

    This should add a custom foobar.block in front of the thumbnail within the product tile wrapper. But for some reason this new child never shows up in the layout. Even if I debug the children within the container.phtml, that child is never retrieved from the layout in MageSuite\ProductTile\Block\Tile\Container::getChilds.

    Am I missing something here? I also tried other places like the default.xml, but no luck via this either.

    opened by fritzmg 4
Releases(v12.0.0)
  • v12.0.0(Dec 6, 2022)

    MageSuite v12 release offers compatibility with Magento 2.4.5 and PHP 8.1

    Documentation was moved and can now be found here: https://creativestyle.atlassian.net/wiki/spaces/MGSDEV/pages/2249555980/Getting+Started

    Breaking compatibility changes were described here: https://creativestyle.atlassian.net/wiki/spaces/MGSDEV/pages/2295791795/Breaking+changes+in+Version+12

    Source code(tar.gz)
    Source code(zip)
  • v11.0.0(Sep 27, 2022)

    Version 11.0.0 of MageSuite

    It contains a bigger frontend improvements, new features and refactoring of crucial MagSuite components like:

    • product tile
    • image teaser
    • slider-based components
    • content constructor admin
    • video teasers

    in order to remove heavy third party libraries and improve frontend performance, extension possibilities, etc. It also introduces new features like Video Teasers and a support for Custom Content Constructor components.

    Details can be found in docs/breaking_compatibility_10_to_11.md.

    Source code(tar.gz)
    Source code(zip)
Owner
MageSuite
MageSuite
Laravel SEO - This is a simple and extensible package for improving SEO via meta tags, such as OpenGraph tags.

This is a simple and extensible package for improving SEO via meta tags, such as OpenGraph tags.

ARCHTECH 191 Dec 30, 2022
HTML Meta Tags management package available for for Laravel 5.*

HTML Meta Tags management package available for Laravel 5/6/7/8 With this package you can manage header Meta Tags from Laravel controllers. If you wan

Lito 182 Dec 5, 2022
Laravel package meta 🧡

About hwa-meta is a meta package. It helps us to build and develop faster with pre-built functions. This saves a lot of time on future projects. We sh

Hwavina 3 Oct 18, 2021
A laravel package to handle model specific additional meta fields in an elegant way.

Laravel Meta Fields A php package for laravel framework to handle model meta data in a elegant way. Installation Require the package using composer: c

Touhidur Rahman 26 Apr 5, 2022
Manage meta data based on URL path within your app.

Laravel SEO Manager This package provides simple functionality to manage SEO tags based on URL path within your Laravel application. You can put the U

Michael Rubel 20 Oct 20, 2022
Clean up and prevent empty meta from being saved for Job, Company, or Resume listings in database

=== Empty Meta Cleanup for WP Job Manager === Contributors: tripflex Tags: wp job manager, meta, cleanup, wpjobmanager Requires at least: 5.2 Tested u

Myles McNamara 3 Feb 7, 2022
Simple laravel hook for adding meta tags to head for inertia

laravel seo hook for js frameworks simple hook for adding meta tags to <head></head> for js frameworks inertia:react,vue, etc... in app/Meta.php put M

Razmik Ayvazyan 2 Aug 23, 2022
Package to parse DNA kit files, and import them into Laravel

Package to parse DNA kit files, and import them into Laravel

Family Tree 365 4 Aug 31, 2022
Stop duplicating your Eloquent query scopes and constraints in PHP. This package lets you re-use your query scopes and constraints by adding them as a subquery.

Laravel Eloquent Scope as Select Stop duplicating your Eloquent query scopes and constraints in PHP. This package lets you re-use your query scopes an

Protone Media 75 Dec 7, 2022
A Laravel package making a diagram of your models, relations and the ability to build them with it

Laravel Schematics This package allows you to make multiple diagrams of your Eloquent models and their relations. It will help building them providing

Maarten Tolhuijs 1.4k Dec 31, 2022
This Laravel package merges staudenmeir/eloquent-param-limit-fix and staudenmeir/laravel-adjacency-list to allow them being used in the same model.

This Laravel package merges staudenmeir/eloquent-param-limit-fix and staudenmeir/laravel-adjacency-list to allow them being used in the same model.

Jonas Staudenmeir 5 Jan 6, 2023
These are simple array and object collections that provide convinient methods to manipulate them.

Simple Collections These are simple array and object collections that provide convinient methods to manipulate collections; To install this package ty

Artem 4 Nov 19, 2021
This Package helps you in laravel application to log all desired activity for each request from request entry point to generate response at a single snapshot.

Laravel Scenario Logger This Package helps you in laravel application to log all desired activity for each request from request entry point to generat

Mehrdad Mahdian 6 Sep 27, 2021
This package extends Laravel's FormBuilder to include some (soon all) HTML5 elements

HTML5 Forms for Laravel This package extends Laravel's FormBuilder to include some (soon all) HTML5 elements. How to Install Install the braunson/lara

Braunson Yager 89 Jun 17, 2022
Simple Laravel 5 package to dump all running queries on the page.

Abandoned: Use this package instead Laravel QueryDumper Introduction Simple Laravel 5 package to dump all running queries on the page. If it's SELECT

Sarfraz Ahmed 24 May 14, 2020
This package provides new helper functions that take care of handling all the translation hassle and do it for you.

Laravel Translate Message ?? This package provides new helper functions that take care of handling all the translation hassle and do it for you. Insta

Basel Rabia 17 Feb 8, 2022
This package aims to help you standardize all your API responses in a simple and structured way.

Laravel API Response This package aims to help you standardize all your API responses in a simple and structured way. By default, the stucture of the

Kode Pandai 6 Dec 6, 2022
This package provides a Filament resource to view all Laravel sent emails.

This package provides a Filament resource to view all Laravel outgoing emails. It also provides a Model for the database stored emails. Installation Y

Ramón E. Zayas 22 Jan 2, 2023
Laravel telegram log is a package that can catch your logs all quite simply

Laravel Telegram log Laravel telegram log is a package that can catch your logs all quite simply. Requirments This package is tested with Laravel v8 i

Muath Alsowadi 4 Aug 3, 2022