Невозможно сохранить категорию с более чем 1000 товарами


Это известная проблема, вызванная PHP 5.3.9 и max_input_vars, что по умолчанию она установлена на 1000.

Решение 2, предложенное здесь, на мой взгляд, является лучшим, но не работает: по какой-то странной причине оно ограничивает категорию 527 продуктами.

По этой причине я публикую этот вопрос с соответствующим исправленным ответом

Author: Community, 2013-08-02

2 answers

Как описано в вопросе, эта проблема была решена здесь, но ответ не работал для меня нормально.

Я добавляю сюда полное рабочее решение (method 2).

Это код, который отлично работает для меня:

            $cat_products_split = explode('&', $data['category_products']);
            foreach ($cat_products_split as $row) {
                $arr = explode('=', $row);
                if (count($arr) == 2) {
                    $products[$arr[0]] = $arr[1];
                }
            }

- ВОТ ШАГИ, ЧТОБЫ ЭТО ИСПРАВИТЬ -

1. Создание нового модуля

Давайте создадим модуль CategoryFix в локальном.

Здесь config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <MYNAMESPACE_CategoryFix>
            <version>0.1.0</version>
        </MYNAMESPACE_CategoryFix>
    </modules>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <!--FOR THE USE OF OUR CONTROLLER BEFORE THE CORE ONES -->
                        <categoryfix before="Mage_Adminhtml">MYNAMESPACE_CategoryFix_Adminhtml</categoryfix>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

2. Переопределение категории контроллер ( saveAction())

Файл контроллера: /MYNAMESPACE/CategoryFix/Adminhtml/Catalog/CategoryController

<?php

require_once 'Mage/Adminhtml/controllers/Catalog/CategoryController.php';
class MYNAMESPACE_CategoryFix_Adminhtml_Catalog_CategoryController extends Mage_Adminhtml_Catalog_CategoryController
{  
    /**
     * Category save
     */
    public function saveAction()
    {
     // 1. COPY HERE THE CODE FROM THE ORIGINAL SAVEACTION() METHOD
     // 2. COMMENT THIS LINE: `parse_str($data['category_products'], $products);`
     // USE THE CODE REPORTED ABOVE  
    }
 }
 11
Author: Fra, 2017-05-23 12:37:12

Я добавил это в файл .htaccess в корне Magento:

<IfModule mod_php5.c>
    php_value max_input_vars 100000
</IfModule>

После установки этого Magento позволил мне иметь более 1001 товара в одной категории.

 3
Author: Webninja, 2014-11-27 09:10:05