Giter VIP home page Giter VIP logo

magento2-menu's Introduction

Magento 2 Menu

Static Badge Packagist Packagist Packagist

Magento 2 Menu by Snowdog is a powerful menu configurator that empowers online merchants to create advanced menus, enhancing their customers' shopping experience and improving SEO. This module serves as a feature-rich replacement for the category-based top navigation found in Magento and Adobe Commerce. However, it offers much more versatility by enabling the creation of menus for various purposes and store views.

Backend Settings Demo:

snowdog-magento-2-menu-admin-configuartio

Hyvä Demo:

See our Hyvä top menu mobile, top menu desktop, and footer menu in action: menu-hyva.snowdog.dev

Use Cases

Here are some scenarios where Snowdog's Menu can be effectively used:

  • Create Separate Header Menus for Mobile and Desktop: Optimize navigation for customers on different devices by creating distinct header menus for mobile and desktop.
  • Create Footer Menu: Improve the management of footer links.
  • Create Custom Menus for Specific Pages: Whether you need to add a sidebar menu or change the header menu, Snowdog's module offers you the flexibility to create and customize menus for any page of a Magento store.

Key Features

  • Flexible Content: Add various types of elements to menus, such as links, images, and CMS blocks.
  • Product Catalog Integration: Easily include links to categories and products in menus. Our handy tree selector makes it a breeze to pick the exact categories you want to showcase, or you can opt for category-based import to add a chunk of your catalog tree to the menu with a few clicks.
  • Drag and Drop Editor: The module offers a user-friendly drag and drop editor, making it effortless to configure multi-level menus exactly how you envision them. Arrange and customize menu items with ease, without any coding knowledge.
  • Import, Export and Duplicate Capabilities: Save time and effort. This feature enables seamless replication of menus across different instances and Magento stores. It also gives an option to duplicate menus for faster setup and customization.
  • Multiple Ways of Adding Menus to Frontend: Easily add menus to your frontend using PHTML templates, or fetch the data from our REST and GraphQL APIs. This makes the module very versatile. You can make it work for any Magento frontend.

User Guide and Documentation

To learn more about Magento 2 Menu by Snowdog, go to wiki.

Contributing

Contributions are welcome! If you find a bug or have a feature request, feel free to open an issue or submit a pull request.

Like this project?

We'd appreciate it if you leave a ⭐ or share it with the world ✨.

magento2-menu's People

Contributors

adamwaclawczyk avatar akai-z avatar anqaka avatar aurelienlavorel avatar chaikivskyi avatar dawiddczaja avatar dependabot[bot] avatar emastyle avatar igloczek avatar jbclaudio avatar jkrupinski avatar kamilbalwierz avatar kiber avatar kongulov avatar lbajsarowicz avatar litsher avatar lukeromanowicz avatar macdar avatar maciekkossuda avatar mattwellss avatar natedawg92 avatar ofrankowska avatar per-oddny avatar ppisarek avatar rjwaberski avatar talalus avatar tm18 avatar vestman avatar vmalyk avatar woutersteen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magento2-menu's Issues

Readme: "Adding new types of nodes" is incorrect

"Adding new types of nodes" readme section refers to view/adminhtml/web/js/category.js and view/adminhtml/templates/menu/node_type/category.phtml but these files were removed.

Please update "Adding new types of nodes", because currently it's not clear how to add a new menu node

Uncaught TypeError: tree.get_json is not a function

Hi,

If we're trying to add/remove a node in the backend we get this js error: Uncaught TypeError: tree.get_json is not a function.

Steps to reproduce

  1. Install Module Menu version 2.1.0 (in this case on Magento 2.1.7)
  2. Open the 'Create new menu' page
  3. Select 'Nodes tab'

Expected result

  1. The option to create / add a node

Actual result

  1. No option to add node
  2. JS error thrown, see: https://www.dropbox.com/s/oj4dpe9jpwvh7k1/Schermafbeelding%202017-12-08%20om%2009.55.29.png?dl=0

Search product hints

It will be useful to have hints after typed product id (maybe after 3+ chars will be safer)
And also did you think about add SKU instead of ID's? or both?

Module not working on 2.2 EE

I get the following errors when trying to create a new menu in Magento 2.2 EE:

Exception #0 (Zend_Db_Statement_Exception): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'v.entity_id' in 'on clause', query was: SELECT `e`.`entity_id`, `e`.`parent_id`, `v`.`value` AS `name` FROM `catalog_category_entity` AS `e`
 INNER JOIN `catalog_category_entity_varchar` AS `v` ON v.entity_id = e.entity_id AND v.store_id = 0 
            AND v.attribute_id = 45 WHERE (e.level > 0) AND (e.created_in <= 1) AND (e.updated_in > 1) ORDER BY `e`.`level` ASC, `e`.`position` ASC

Exception #1 (PDOException): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'v.entity_id' in 'on clause'

Exception #0 (Zend_Db_Statement_Exception): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'v.entity_id' in 'on clause', query was: SELECT `e`.`entity_id`, `e`.`parent_id`, `v`.`value` AS `name` FROM `catalog_category_entity` AS `e`
 INNER JOIN `catalog_category_entity_varchar` AS `v` ON v.entity_id = e.entity_id AND v.store_id = 0 
            AND v.attribute_id = 45 WHERE (e.level > 0) AND (e.created_in <= 1) AND (e.updated_in > 1) ORDER BY `e`.`level` ASC, `e`.`position` ASC

Is this due to catalog_category_entity_varchar. entity_id being replaced by row_id in EE?

External link support

  1. Creating a new menu link type of "Custom Url node" for external link generate wrong url for the menu item, it's add store url to the link like: http://store.com/http://google.com
  2. it'll be great if we can add a new "target" field to open link in a new tab

Does not compile

Changing from dev to production gives the following error:

PHP Fatal error:  Declaration of Snowdog\Menu\Block\NodeType\AbstractNode::getHtml() must be compatible with Snowdog\Menu\Api\NodeTypeInterface::getHtml(Snowdog\Menu\Api\int $nodeId, Snowdog\Menu\Api\int $level) in /home/user/public_html/app/code/Snowdog/Menu/Block/NodeType/AbstractNode.php on line 20

Current api implementation incomplete

Hello!

First of all - thank you for free module for menu. I've trying to use Magento in headless mode (frontend based on VueJS). And current rest api miss something crucial things, like:

https://github.com/SnowdogApps/magento2-menu/blob/master/etc/webapi.xml#L9

  1. it is logical retrieve nodes using GET method and by string identifier, not by id. Something like url="/V1/menus/:identifier/nodes"
  2. for now we haven't any additional information inside response (node label, node url, etc). Would be nice add some key-value collection with additional data.
  3. not sure that anonymous users even has access to this methods because resource restriction.

Update Readme

Background

Current readme is lacking detailed information how to set menu from start to finish and what should look menu once finished thus for developers not that experienced with magento 2 it's proven as a difficult task.

Add product node

I'm wondering if it would be worth adding a "products" node? It seems like a common use case to be able to link to specific products in the menu.

In my case I've used this before to display "featured products" in the menu, so it wouldn't just show the name but maybe the product image and price as well.

I think it could work exactly like the category node but pull through the product list instead.

Status for node "enabled/disabled"

Don't see this option now and I think it should be as then user doesn't need to remove something and later add as it can just disable node

Target Node Blank Not Saving

With Snowdog Menu 2.4.0 there is an option for Target Node Blank, which I assume adds target="_blank" to a link in the menu. I have checked this option, but it seems to not save anything as when the page refreshes, the option is blank again and after a bin/magento setup:upgrade the database doesn't seem to have anywhere to hold the field.

Using a product node displays original image

When using a product node it displays the full original image rather than a resized and optimised version.

Because the menu is on ever page the images are being loaded on every page and because they are the original images it is slowing the site down.

Is there a way to be able to choose an image role or specify a role so that images are optimised and resized?

Be able to set node template per "node" and "submenu" template

It would be great if we could set specific template for every node item and its submenu template if it has children

  <li class="list__item <?= $itemClasses; ?>">
            <?= $block->renderMenuNode($node); ?>
            <?= $block->renderSubmenu($children, $node, $childrenLevel); ?>
        </li>

I think we should pass extra argument $template,
in renderMenuNode() as second argument (be default it would use default template depending on the node type).
in renderSubmenu() as fourth argument (by default it would use default template sub_menu.phtml)

The best if we could select or set the path or name of template in admin panel in node setting. if template not found then use default.

Why this feature?

sometimes menu structure and styling is different for different section (submenu). Now sometimes it requires adding extra logic in templates or/and classes in admin panel or code in css. Having possibility to have custom templates for nodes and submenu we can create more clean templates with specific classes and achieve really different look and structure if required.

It would be useful if we have one menu and structure like that:
Main-menu
--- Section A
(submenu template A: menu/sub_menu_section-a.phtml)
--- item A.1 (node custom_url, custom template: menu/node_type/custom_url-section-a.phtml
--- itd . A.2 (node custom_url, default template: menu/node_type/custom_url.phtml
--- (submenu default template: menu/sub_menu.phtml

--- Section B
(submenu template B: menu/sub_menu_section-b.phtml)
--- item B.1 (node X, template: default or set via admin panel)

Remove default JS and clean up templates

This module shouldn't have any styling or scripts on the storefront.
Also, templates should be as simple as possible, for example, icons should be removed.

We need to check our stores if this default JS logic is in use somewhere, before releasing this changes.

Internal ticket DEV-37926

Product node adjustment

Just few things, what we can add in new version:

  • method to get product title (right now we need to type product name in PA)
  • price formatter - to change output from 227.1200 to 227,00 + currency symbol

URL rewrite always uses entity_id rather than row_id

First, I want to say thanks for building just the module I'd designed in my head a couple weeks ago. Now I only need to extend it where necessary! 🎉

In Snowdog\Menu\Model\ResourceModel\NodeType\Category::fetchData, the variable $eavColumnName is used to determine from which column of url_rewrite to select/filter results. However, even with the EE-only staging module installed, url_rewrite continues to use entity_id.

It looks like the issue also exists for Snowdog\Menu\Model\ResourceModel\NodeType\CmsPage::fetchData.

If I create a pull request including modifications to those two classes to use the known column entity_id, would that be an acceptable fix?

Ability to overwrite all templates per menu ID

It might work same way as in the Banana module for M1, where we can add menu ID to the name of the template

Even better will be to base it on folders i.e for ID menu-mobile we would like to overwrite templates as /Snowdog_Menu/templates/menu-mobile/menu.phtml and /Snowdog_Menu/templates/menu-mobile/menu/node_type/category.phtml

Add foreign keys to tables

Adding FK prevents database from collisions

  • snowmenu_node.menu_id
  • snowmenu_node.parent_id
  • snowmenu_store.menu_id
  • snowmenu_store.store_id
  • snowmenu_node.content (maybe extract category_id, block_id, page_id as separate columns)

Issue with selecting text in nodes section of backend

Attempting to drag to select text within Main Menu > Nodes section of the backend results in the entire node being moved instead -
the only way to change text is to click into the field

  1. backspace or use the keyboard to select all
  2. using the mouse to select all, attempts to move node location within the layout

Steps to reproduce
Step: 1) Content>Main Menu> Nodes
Step: 2) Select any node & click the edit button
Step: 3) try to drag and select text in any of the fields

Module does not work when database tables have prefixes

The module does not work when you have table prefixes like:

Exception #0 (Zend_Db_Statement_Exception): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'databasename.eav_attribute' doesn't exist, query was: SELECT a.attribute_id FROM eav_attribute AS a

This should be:
databasename.eav_attribute => databasename.prefix_eav_attribute

Clarify documentation about adding a new node type

The README says:

Menu editor is using Vue.js so you need to create a new vue component that has node type code as name in view/adminhtml/web/vue/menu-type and load it in view/adminhtml/templates/menu/nodes.phtml

I have created the template view/adminhtml/web/vue/menu-type/recommendation.vue into my custom module. But what exactly does it mean to "load it in view/adminhtml/templates/menu/nodes.phtml"?

Modernize Autocomplete template for cms pages and cms blocks

In 98aec10 category selection template was modified - same treatment is required for cms pages and cms blocks suggestion templates. (Also Category ID seems to be not displayed when autoselected, and "11 results are available, use up and down arrow keys to navigate." is not hiding after selection was made)

Menu Node Name field lack a translation mechanism

In multi language storeview setup, we need to define a menu for each storeview in order to translate Node Name. Only for CmsBlock type it is possible to use the "trans" directive inside the block it.
Do you think it would be possible to add a translation mechanism for Node Name to avoid maintaining n menu across all storeviews ?

Cann't access node classes from template

<?php /** @var \Snowdog\Menu\Block\NodeType\Category $block */ ?>

$class = $block->getMenuClass();

I can call getMenuClass but there is no method getNodeClasses, so node css classes attribute looks like useless.

Expected CSS

I've attempted to use the extension, but it does not display properly. I'm thinking it's due to the theme being used.

What CSS does this extension expect to have it display properly?

Provide access to entity associated with menu node

For the second time I ran into a case where I would need to access category data in the template (menu/node_type/category.phtml).

I can get for example category URL with getCategoryUrl(), but I'm not able to get the category object itself.

Would it be OK to expose the category e.g. with \Snowdog\Menu\Block\NodeType\Category::getCategory()?

Or perhaps it could even be called getEntity() so the same method could be implemented also for Product, CmsPage and CmsBlock node types?

Menu block shouldn't return object if given menu doesn't exist

$block->getMenu() method shouldn't return object if given menu doesn't exist, I'd expect false or null.

<?php if ($block->getMenu()): ?>
  <!-- Menu content -->
<?php endif; ?>

A different option will be to create a method that we can use in templates, to check if menu exists before rendering any HTML, for example:

<?php if ($block->isMenu()): ?>
  <!-- Menu content -->
<?php endif; ?>

Internal ticket #37116

Current connection is already holding lock for [...], only single lock allowed

We have the following error with magento 2.3.2. But only one menu is displaying it:

This is the rule from the error:

<?php echo $block->renderSubmenu( $children, $node, $childrenLevel ); ?>
1 exception(s):
Exception #0 (Magento\Framework\Exception\AlreadyExistsException): Current connection is already holding lock for accept|BLOCK_79bac44278fe12844bd3419033ef815d13099cf6, only single lock allowed

Exception #0 (Magento\Framework\Exception\AlreadyExistsException): Current connection is already holding lock for accept|BLOCK_79bac44278fe12844bd3419033ef815d13099cf6, only single lock allowed
<pre>#1 Magento\Framework\Cache\LockGuardedCacheLoader->lockedLoadData() called at [vendor/magento/framework/View/Element/AbstractBlock.php:1130]
#2 Magento\Framework\View\Element\AbstractBlock->_loadCache() called at [vendor/magento/framework/View/Element/AbstractBlock.php:671]
#3 Magento\Framework\View\Element\AbstractBlock->toHtml() called at [vendor/snowdog/module-menu/Block/Menu.php:261]
#4 Snowdog\Menu\Block\Menu->renderSubmenu() called at [app/design/frontend/Wietzaadjes/default/Snowdog_Menu/templates/quick_links.phtml:18]
#5 include() called at [vendor/magento/framework/View/TemplateEngine/Php.php:59]
#6 Magento\Framework\View\TemplateEngine\Php->render() called at [vendor/magento/framework/View/Element/Template.php:271]
#7 Magento\Framework\View\Element\Template->fetchView() called at [vendor/magento/framework/View/Element/Template.php:301]
#8 Magento\Framework\View\Element\Template->_toHtml() called at [vendor/magento/framework/View/Element/AbstractBlock.php:1094]
#9 Magento\Framework\View\Element\AbstractBlock->Magento\Framework\View\Element\{closure}() called at [vendor/magento/framework/Cache/LockGuardedCacheLoader.php:79]
#10 Magento\Framework\Cache\LockGuardedCacheLoader->lockedLoadData() called at [vendor/magento/framework/View/Element/AbstractBlock.php:1130]
#11 Magento\Framework\View\Element\AbstractBlock->_loadCache() called at [vendor/magento/framework/View/Element/AbstractBlock.php:671]
#12 Magento\Framework\View\Element\AbstractBlock->toHtml() called at [vendor/magento/framework/View/Layout.php:557]
#13 Magento\Framework\View\Layout->_renderBlock() called at [vendor/magento/framework/View/Layout.php:533]
#14 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:206]
#15 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:488]
#16 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:193]
#17 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:585]
#18 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:535]
#19 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:206]
#20 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:488]
#21 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:193]
#22 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:585]
#23 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:535]
#24 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:206]
#25 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:488]
#26 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:193]
#27 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:585]
#28 Magento\Framework\View\Layout->_renderContainer() called at [vendor/magento/framework/View/Layout.php:535]
#29 Magento\Framework\View\Layout->renderNonCachedElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:206]
#30 Magento\Framework\View\Layout\Interceptor->renderNonCachedElement() called at [vendor/magento/framework/View/Layout.php:488]
#31 Magento\Framework\View\Layout->renderElement() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:193]
#32 Magento\Framework\View\Layout\Interceptor->renderElement() called at [vendor/magento/framework/View/Layout.php:954]
#33 Magento\Framework\View\Layout->getOutput() called at [vendor/magento/framework/Interception/Interceptor.php:58]
#34 Magento\Framework\View\Layout\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
#35 Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
#36 Magento\Framework\View\Layout\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:494]
#37 Magento\Framework\View\Layout\Interceptor->getOutput() called at [vendor/magento/framework/View/Result/Page.php:258]
#38 Magento\Framework\View\Result\Page->render() called at [vendor/magento/framework/View/Result/Layout.php:171]
#39 Magento\Framework\View\Result\Layout->renderResult() called at [vendor/magento/framework/Interception/Interceptor.php:58]
#40 Magento\Framework\View\Result\Page\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]
#41 Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}() called at [app/code/Aheadworks/Layerednav/Model/Plugin/Result.php:93]
#42 Aheadworks\Layerednav\Model\Plugin\Result->aroundRenderResult() called at [vendor/magento/framework/Interception/Interceptor.php:135]
#43 Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
#44 Magento\Framework\View\Result\Page\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/View/Result/Page/Interceptor.php:130]
#45 Magento\Framework\View\Result\Page\Interceptor->renderResult() called at [vendor/magento/framework/App/Http.php:141]
#46 Magento\Framework\App\Http->launch() called at [vendor/magento/framework/App/Bootstrap.php:261]
#47 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:40]
</pre>

Magento 2.2 compatibility

Can the extension be updated to be compatible with Magento 2.2? actually there are only RC versions for this release but soon will be published so I guess it worth to make it compatible

No css and not working well in frontend

Hello, I just installed your extension on my website. I see my menu in my backend.
But the menu isn't display in my frontend. I've copied and pasted your code (with the same identifier for the menu). The menu is appearing without any css in the page, it's only display outside store.menu.

I.E : I can display in page.wrapper, I've menu and submenu but no css and not in the right place

And I have this error in my console : /fr_FR/images/icon-sprite.svg 404 (Not Found) (I have a custom theme)

Product node image not working

The product image is not rendering anything even though the product does have an image associated to it.

Steps to reproduce:

  1. Create a new product node and assign a product with image.
  2. Change menu/node_type/product.phtml template to echo the included $productImage variable.

Expected result:

The product image URL should show up.

Actual result:

Nothing is outputted.

--

I found that the problem is the fetchImageData function in Model/ResourceModel/NodeType/Product.php not getting the thumbnail data even though it's being added as an attribute to select in the collection but I didn't get further than that.

Include compiled js file

The javascript in /master/view/frontend/web/js/navigation.babel.js must be compiled with babel before it can be used by "normal" browsers. This is incompatible with a vanilla Magento2 not using frontools.

Can you add a compiled version in the repository so that this module can be used directly on a plain Magento 2?

Error in cms page renderer when there are no url_rewrites for a cms page

CMS Page Node renderer doesn't check if a URL for a particular page exists in pageUrls array:

public function getHtml($nodeId, $level)
{
$classes = $level == 0 ? 'level-top' : '';
$node = $this->nodes[$nodeId];
if (isset($this->pageIds[$node->getContent()])) {
$pageId = $this->pageIds[$node->getContent()];
$url = $this->_storeManager->getStore()->getBaseUrl() . $this->pageUrls[$pageId];
} else {
$url = $this->_storeManager->getStore()->getBaseUrl();
}
$title = $node->getTitle();
return <<<HTML
<a href="$url" class="$classes" role="menuitem"><span>$title</span></a>
HTML;
}

Apparently, such an event can happen because pageUrls array is hydrated from url_rewrite table data When a cms page doesn't have any URL rewrites for that store, then its URL is not included in the pageUrls array.

public function fetchData($storeId = Store::DEFAULT_STORE_ID, $pageIds = [])
{
$connection = $this->getConnection('read');
$table = $this->getTable('url_rewrite');
$select = $connection
->select()
->from($table, ['entity_id', 'request_path'])
->where('entity_type = ?', 'cms-page')
->where('store_id = ?', $storeId)
->where('entity_id IN (?)', array_values($pageIds));
return $connection->fetchPairs($select);
}

In result we're getting:

1 exception(s):
Exception #0 (Exception): Notice: Undefined offset: 3 in /var/www/magento/vendor/snowdog/module-menu/Block/NodeType/CmsPage.php on line 158

A solution would be to back fetched data up with identifier from cms_page joined with cms_page_store

Include subcategories

Hey,
is it possible to implement a functionality to import categories including subcategories as nodes? Maybe even with specifying until which level you want to include subcategories. It would be really handy if you could import them in case you have a whole bunch of subcategories. Inserting all these nodes separately is lots of effort.

Can't get in to menu settings on EE on 2.3.0

I can't get in to the Snowdog Menu settings for a menu I created after updating to 2.3.0. I'm using M2EE and getting the following error:

2 exception(s):
Exception #0 (Zend_Db_Statement_Exception): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'v.entity_id' in 'on clause', query was: SELECT `e`.`entity_id`, `e`.`parent_id`, `v`.`value` AS `name` FROM `catalog_category_entity` AS `e`
 INNER JOIN `catalog_category_entity_varchar` AS `v` ON v.entity_id = e.entity_id AND v.store_id = 0 
            AND v.attribute_id = 41 WHERE (e.level > 0) AND (e.created_in <= 1) AND (e.updated_in > 1) ORDER BY `e`.`level` ASC, `e`.`position` ASC

Exception #1 (PDOException): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'v.entity_id' in 'on clause'

Exception #0 (Zend_Db_Statement_Exception): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'v.entity_id' in 'on clause', query was: SELECT `e`.`entity_id`, `e`.`parent_id`, `v`.`value` AS `name` FROM `catalog_category_entity` AS `e`
 INNER JOIN `catalog_category_entity_varchar` AS `v` ON v.entity_id = e.entity_id AND v.store_id = 0 
            AND v.attribute_id = 41 WHERE (e.level > 0) AND (e.created_in <= 1) AND (e.updated_in > 1) ORDER BY `e`.`level` ASC, `e`.`position` ASC

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.