Inline-edit every column
text, number, URL key, SKU, select, yes-no, searchable multiselect, date, datetime, price, cost, special price, weight, tier price - all without leaving the grid
Turn the Magento 2 admin catalog grid into a spreadsheet. Inline-edit every column - text, select, multiselect, date, price, image, tier price - auto-discover every EAV attribute, add 20+ extra columns (thumbnail, categories, availability, qty sold, tier prices, storefront URL...
Key Features:
Additional Services
Built-in from day one. No add-ons, no upsell, no licence keys to renew.
text, number, URL key, SKU, select, yes-no, searchable multiselect, date, datetime, price, cost, special price, weight, tier price - all without leaving the grid
update many products across many cells in one batch, with an unsaved-changes guard so you never lose work
new attributes appear in the grid the moment you enable them, zero XML required, auto-bound to attribute sets on first save
thumbnail with hover overlay, categories color chips, product type, attribute set, visibility, availability tri-state, backorders, low stock, qty, salable qty per MSI source, special price From / To, cost, tier price ...
Panth Advanced Product Grid is an admin productivity extension for Magento 2 and Adobe Commerce that lets merchandisers rename, reorder, and export catalog columns without touching XML.
The Advanced Product Grid module replaces the rigid native column manager with an inline-editable surface that persists every customization into the user’s bookmark profile. Set a custom label per column, drag columns into the order you actually scan, and toggle CSV and XML export inclusion per column — all from the Manage Columns panel. A “Reset all overrides” button wipes per-column customizations in one click when a new admin user takes over.
Exports respect bookmark intent: only the columns visible in the active profile are exported, and they appear in the order the user arranged them. A synchronous fast-path keeps the grid responsive when nothing is dirty, every controller is gated by an ACL resource, and URL rewrites refresh automatically after dispatch when needed. Verified column changes write through the strategy dispatcher so bookmark data, persistence, and the visible grid never drift out of sync — behavior the native Magento product grid simply never offered.
Best for:
Catalog managers spend hours every week opening, editing, and saving products one at a time. The native Magento grid only allows editing a handful of fields, and only for the columns Magento decided to make editable. Anything custom requires going into the product edit form, scrolling, saving, waiting for cache, going back.
Panth Advanced Product Grid removes that friction:
The Advanced Product Grid gives admins per-user control over catalog columns, order, and exports.
INDEX,FOLLOW)$ prefix in the editor)is_used_in_grid = 1 shows up automaticallyAttributeSetAssigner quietly attaches an attribute to a product's set on first inline edit, so writes never silently no-op at the EAV layer| Column | What it shows |
|---|---|
| Thumbnail | Product image with hover overlay (View / Edit) |
| Categories | Colored chips per category with a quick "remove from category" link |
| Type | Bag, Top, Bottom, Configurable, Bundle, Downloadable, etc. |
| Attribute Set | Set name (not just ID) |
| Visibility | Catalog, Search, Catalog+Search, Not Visible |
| Availability | Tri-state, In Stock / Out of Stock / Manage Stock Disabled |
| Backorders | No Backorders / Allow Qty Below 0 / Allow Qty Below 0 + Notify |
| Low Stock | Boolean derived from a configurable threshold |
| Quantity | Editable, with optional integer-only display |
| Salable Quantity | Per-source breakdown when MSI is installed |
| Special Price From / To | Editable date range |
| Cost | Editable numeric |
| Tier Prices | Count chip ("4 tiers") that opens a full tier-price modal |
| Qty Sold | Indexed total over a configurable date range and order-status set |
| Storefront URL | Click-through link to the live product page |
| Meta Title / Keywords / Description / Robots | Full SEO column set, editable inline |
FIND_IN_SET lookup so picking one option matches rows storing manypanth_product_grid_qty_sold mview keeps a denormalized total12,34,56 in the output)Renders the product's base image (or small_image / thumbnail / swatch_image if available) with a hover overlay that exposes View (storefront link) and Edit (modal upload) actions.
Colored chips, one per assigned category, with the full path resolved (e.g. Bags › Travel › Duffles). Click a chip × to remove the category from the product directly from the grid.
A tri-state derived from manage_stock, use_config_manage_stock, and is_in_stock:
Standard backorders attribute exposed as a select column with editable options: No Backorders / Allow Qty Below 0 / Allow Qty Below 0 and Notify Customer.
Boolean derived from the configurable threshold. Quick filter to surface near-empty SKUs without writing a report.
Total units sold over the configured window. Uses an mview-indexed table (panth_product_grid_qty_sold), even on stores with hundreds of thousands of orders the column loads in milliseconds.
Computed <base>/<url_key> link that opens in a new tab. Resolves correctly under multi-store and category-aware URL setups.
Shows the count of active tier-price rows ("4 tiers"). Clicking opens a modal where the admin can add / remove tiers, switch between Fixed Price and Discount Percentage, and assign each tier to a specific website + customer group.
Each attribute type routes through a dedicated strategy class in Model/InlineEdit/Strategy/:
| Attribute | Strategy | What it handles |
|---|---|---|
qty |
QtyStrategy |
Writes to stock_item, auto-flips is_in_stock based on config. |
category_ids |
CategoryIdsStrategy |
Diff-based add + remove via CategoryLinkManagementInterface. |
tier_price |
TierPriceStrategy |
Normalizes website + group + price + qty payload. |
weight |
WeightStrategy |
Numeric validation, strips currency / commas. |
visibility |
VisibilityStrategy |
Validates against the 4 standard visibility states. |
url_key |
UrlKeyStrategy |
Generates URL rewrites + handles duplicates. |
panth_availability |
AvailabilityStrategy |
Translates the tri-state back into stock_item fields. |
panth_backorders |
BackordersStrategy |
Updates the standard backorders value. |
image / small_image / thumbnail / swatch_image |
ImageRoleStrategy |
Direct DB inserts into the media gallery tables (bypasses the noisy product-save validator). |
| Everything else | GenericAttributeStrategy |
Plain setData with __empty__ / __use_default__ sentinels. |
All saves go through Model/InlineEdit/Processor which:
_origData and writes always persist).AttributeSetAssigner to ensure the attribute is bound to the product's set.ProductRepository.Click the Columns button (top-right of the grid) to open the centered popup. Inside:
panth_product_grid_column_config and reloads the grid.Double-clicking a column header in the grid also opens a quick-rename prompt for that single column.
Filtering works automatically for every column the data provider knows about:
frontend_input so multiselect attributes use FIND_IN_SET (otherwise picking "Red" on a multi-color attribute would never match rows storing 12,34,57).panth_categories (with a "No Categories" sentinel), panth_availability (manage-stock aware), panth_qty_sold (numeric range), panth_thumbnail (added / missing).Filterable toggle in the Manage Columns panel, turn it off to hide the filter from the toolbar.When Export Visible Columns Only is enabled (default), CSV / XML exports:
INDEX,FOLLOW value exports as INDEX,FOLLOW, not 15)Disable the toggle in Stores → Configuration to fall back to Magento's stock export behavior.
| Resource | Purpose |
|---|---|
Panth_AdvancedProductGrid::product_grid |
Top-level resource, gate the whole grid feature. |
Panth_AdvancedProductGrid::inline_edit |
Required to save inline cell edits. |
Panth_AdvancedProductGrid::tier_price |
Required to open the tier-price modal. |
Panth_AdvancedProductGrid::manage_gallery |
Required to open the image-role modal. |
Panth_AdvancedProductGrid::config |
Required to access System Config → Product Grid. |
Use these in System → User Roles to give catalog managers exactly the privileges they need without giving away the whole admin.
| Issue | Cause | Resolution |
|---|---|---|
| Custom attribute cell shows empty after save | Attribute not in product's attribute set | AttributeSetAssigner now handles this on save automatically; if you still see it, re-flush cache. |
| Filter chip shows but row count doesn't change | Stale cache after upgrade | Run bin/magento cache:flush and hard-refresh the admin (Cmd/Ctrl+Shift+R). |
| Save Edits button stays disabled | No actual change in any cell | Touch a cell value, the button enables once at least one field is dirty. |
Price input shows $ prefix |
Theme override re-introduced the price editor | Confirm setup:static-content:deploy -f re-ran after install. |
| Grid 404s on render | Inventory-Sales-Admin-Ui maximumStocksToShow DI bug |
Run bin/magento setup:di:compile again after cache:clean config. |
| Manage Columns popup off-center | Stale compiled styles.css |
Run a full static deploy without --no-css. |
| Requirement | Versions Supported |
|---|---|
| Magento Open Source | 2.4.4, 2.4.5, 2.4.6, 2.4.7, 2.4.8 |
| Adobe Commerce | 2.4.4, 2.4.5, 2.4.6, 2.4.7, 2.4.8 |
| Adobe Commerce Cloud | 2.4.4-2.4.8 |
| PHP | 8.1.x, 8.2.x, 8.3.x, 8.4.x |
| MySQL | 8.0+ |
| MariaDB | 10.4+ |
| Hyva Admin | 1.0+ (native support) |
| Luma Admin | Native support |
| Required Dependency | mage2kishan/module-core ^1.0 |
| Optional | magento/module-inventory-api, magento/module-configurable-product |
composer require mage2kishan/module-advanced-product-grid
bin/magento module:enable Panth_Core Panth_AdvancedProductGrid
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy -f
bin/magento cache:flush
bin/magento indexer:reindex panth_product_grid_qty_sold
app/code/Panth/AdvancedProductGrid/ in your Magento installationPanth_Core is installed (required dependency)bin/magento module:enablebin/magento module:status Panth_AdvancedProductGrid
# Expected output: Module is enabled
Navigate to Admin → Stores → Configuration → Panth Extensions → Product Grid to configure the module.
| Setting | Default | Description |
|---|---|---|
| Enable | Yes | Master toggle, when off, the grid reverts to standard Magento behavior. |
| Editing Mode | Multi Cell | Single Cell (save on blur) or Multi Cell (Save / Cancel banner). |
| Confirm on Navigation | Yes | Prompt before discarding pending edits when paging / filtering / sorting. |
| Linked Products Qty | 3 | How many related / upsell / cross-sell SKUs to preview in the cell. |
| Low Stock Threshold | 5 | Qty at or below which a product is marked low-stock. |
| Qty Sold Enabled | Yes | Master switch for the qty-sold indexer. |
| Qty Sold Date From | -90 days | Strtotime-style anchor for the rolling window. |
| Qty Sold Date To | now | End of the rolling window. |
| Qty Sold Order Statuses | complete, processing | Which order statuses count toward qty sold. |
| Qty Sold Include Refunded | No | Whether to subtract refunded units. |
| Auto-flip Stock on Qty Change | Yes | Setting qty to 0 marks the product out of stock automatically. |
| Show Qty as Integer | No | Round qty for display; storage stays decimal. |
| Export Visible Columns Only | Yes | CSV/XML export honors the bookmark's visible columns. |
Panth Advanced Product Grid is licensed under a proprietary license, see LICENSE.txt. One license per Magento installation.
Magento product_listing UI overlay
├─ Ui/Component/Listing/Columns ← extends Magento_Ui Columns, auto-discovers EAV attributes
├─ Ui/Component/Listing/ColumnFactory ← builds a Column from an attribute (type, filter, options, editor)
├─ Ui/Component/Listing/AttributeRepository ← caches is_used_in_grid attributes + on-demand lookups
├─ Plugin/Catalog/Ui/DataProvider/
│ ProductDataProviderPlugin ← bookmark-aware addAttributeToSelect + row enrichment
│ ProductDataProviderFilterPlugin ← rewrites condition types per frontend_input
└─ Model/InlineEdit/
Processor ← per-product save loop
StrategyResolver ← attribute_code → strategy
AttributeSetAssigner ← auto-binds attribute to product's set
Strategy/* ← one class per non-trivial attribute
view/adminhtml/
├─ ui_component/product_listing.xml ← overlay (no class replacement on existing columns)
├─ templates/rename-header-init.phtml ← inline JS bootstrap for Manage Columns + popup editors
├─ web/js/mixin/*-mixin.js ← Magento UI mixins for unsaved-changes guard
└─ web/js/grid/columns/select-no-split.js ← legacy fallback for old browsers
isTableExists() / module-list checks, disabling sibling modules is safe.Plugin/Mview/SalesConnectionPlugin.Talk to Kishan directly: written quote, scope and timeline within 24 hours. No sales call.
Panth Advanced Product Grid