VOOZH about

URL: https://deepwiki.com/MahoCommerce/maho/8-catalog-module

⇱ Catalog Module | MahoCommerce/maho | DeepWiki


Loading...
Last indexed: 15 May 2026 (ea8ab8)
Menu

Catalog Module

The Catalog Module is the core product and category management system in Maho. It provides the EAV-based data models, indexing infrastructure, and rendering blocks for displaying products and categories on both the frontend storefront and backend admin interface. This page provides an architectural overview of the catalog system.

For detailed information about specific subsystems, see:

For foundational EAV concepts, see EAV System. For indexing architecture, see Indexing System.


Module Architecture

The Catalog Module follows Maho's standard module structure with models, blocks, controllers, and resource models organized under the Mage_Catalog namespace. The module declares itself with version 1.6.0.0.19.1.7 app/code/core/Mage/Catalog/etc/config.xml15-18 and depends on the EAV and core modules.

Catalog Module Structure


Sources:


Core Entities

The Catalog Module manages three primary EAV entities: products, categories, and attributes. Each entity stores its data across multiple tables using the Entity-Attribute-Value pattern for flexibility. Attributes in the catalog extend the base EAV attribute model to include catalog-specific properties like is_global (scope) and is_searchable.

EntityBase TableEAV Entity TypeKey Attributes
Productcatalog_product_entitycatalog_productSKU, type_id, attribute_set_id, status, visibility
Categorycatalog_category_entitycatalog_categoryname, url_key, is_active, include_in_menu, position
Attributeeav_attribute + catalog_eav_attributeN/Aattribute_code, frontend_input, is_filterable, is_searchable

Product Entity Storage


Sources:


Product Type System

The Catalog Module supports multiple product types through a type inheritance hierarchy. Each type is registered in config.xml with its own model, price model, and indexer priority app/code/core/Mage/Catalog/etc/config.xml467-504

Product Type Configuration

TypeModelLabelCompositeIndex Priority
simplecatalog/product_type_simpleSimple ProductNo10
virtualcatalog/product_type_virtualVirtual ProductNo20
configurablecatalog/product_type_configurableConfigurable ProductYes30
groupedcatalog/product_type_groupedGrouped ProductYes50

The index_priority value determines the order in which product types are indexed. Lower numbers are indexed first, ensuring simple products (which configurable and grouped products depend on) are processed before composite products.

Sources:


Indexing Infrastructure

The Catalog Module provides indexers that denormalize EAV data into flat index tables for query performance. These indexers are triggered by product/category changes and run asynchronously.

Catalog Indexers

Indexer CodeModelPurpose
catalog_product_attributecatalog/product_indexer_eavIndexes filterable attributes for layered navigation
catalog_product_pricecatalog/product_indexer_priceCalculates final prices with rules, tiers, groups
catalog_urlcatalog/indexer_urlGenerates SEO-friendly URL rewrites
catalog_product_flatcatalog/product_indexer_flatDenormalizes products to flat tables per store
catalog_category_flatcatalog/category_indexer_flatDenormalizes categories to flat tables per store
catalog_category_productcatalog/category_indexer_productIndexes category-product associations

Sources:


Frontend Product Listing

Product listings on the storefront use a combination of blocks, templates, and collections to render filterable, sortable, paginated product grids and lists. The Mage_Catalog_Model_Resource_Product_Collection handles the primary data retrieval, often joining the price index app/code/core/Mage/Catalog/Model/Api2/Product/Rest.php57-58

Product List Rendering Flow


Sources:


Admin Category Management

The admin interface for categories has been modernized in Maho with the MahoTree component public/js/maho-tree.js12 This provides a high-performance, draggable category tree used in the CategoryEditForm public/js/mage/adminhtml/catalog/category.js12

Category Management Components

ComponentCode EntityPurpose
Tree LogicMahoTreeClient-side tree rendering with drag-and-drop
Form ControllerCategoryEditFormOrchestrates category editing and AJAX saving
Backend BlockMage_Adminhtml_Block_Catalog_Category_TreePrepares category parameters for the JS tree
Abstract BlockMage_Adminhtml_Block_Catalog_Category_AbstractHandles recursion levels and store-specific tree loading

Sources:


Configuration Settings

The Catalog Module exposes extensive configuration options through system.xml, organized into logical groups accessible in the admin panel under System > Configuration > Catalog app/code/core/Mage/Catalog/etc/system.xml20-25

Key Configuration Groups

SectionConfig PathPurpose
Frontendcatalog/frontend/*List modes, pagination, flat catalog, sort options
SEOcatalog/seo/*URL suffixes, canonical tags, redirects
Pricecatalog/price/scopeGlobal vs. website pricing

Sources:


Flat Tables System

Flat tables are denormalized tables that store complete product/category data in a single table per store. This is currently marked as Deprecated in Maho as modern databases no longer require this optimization app/code/core/Mage/Catalog/etc/system.xml100

Flat Table Structure

ConfigurationTable PatternIndexed By
catalog/frontend/flat_catalog_productcatalog_product_flat_{store_id}catalog_product_flat indexer
catalog/frontend/flat_catalog_categorycatalog_category_flat_{store_id}catalog_category_flat indexer

Sources: