Warum behält Magento nur die ersten 1000 Produkte in einer Kategorie, nachdem die Kategorie gespeichert wurde?
Mit Magento back-office nach dem speichern einer Kategorie, auf welche verwiesen wurde viele Produkte, nur die ersten 1000 Produkte (oder 2000, oder x000, je nach host-Konfiguration) eingehalten werden.
Alle anderen Kategorie - /Produkt-links gelöscht werden, aus der catalog_category_product
Tabelle in der Datenbank.
Dies tritt auf, obwohl keine Checkboxen müssen deaktiviert wurde, ist in den Produkten raster (Kategorie tab "Produkte").
Wird keine Fehlermeldung angezeigt oder protokolliert.
Tracing-Daten geschrieben, die vom browser zum server nicht offenbaren fehlende Produkt-IDs, aber auch, wenn Sie überprüfen Sie mehr Produkte auf den back-office-Netz, wenn schließlich speichern Sie die Kategorie, der server hält nur die ersten x000 und entfernt andere IDs...
InformationsquelleAutor der Frage programmeurweb | 2013-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl einige Antworten gefunden werden können, die auf anderen websites, ich dachte, es war es Wert diese auf StackOverflow...
Die Quelle des Problems kann gefunden werden in
Mage_Adminhtml_Catalog_CategoryController
wo diesaveAction()
- Methode ruft ein big Gepostet string (category_products
kodiert wird wie ein query-string), die Verarbeitung des PHP-Funktionparse_str()
:Leider!!!! Ab der version 5.3.9 von PHP, es gibt eine neue Konfigurationseinstellung namens
max_input_vars
schränkt die Anzahl der input-Variablen angenommen werden kann.Diese Grenze ist vor allem auf
$_GET
,$_POST
und$_COOKIE
superglobals, sondern wird auch intern von derparse_str()
Funktion!(Siehe PHP-Handbuch)
Je nach
php.ini
Konfiguration Ihres Rechners, die Anzahl der Produkte, die verbunden werden zu einer Kategorie ist daher eingeschränkt werden durch diese Einstellung...Eine Lösung ist, um den Wert des
max_input_vars
imphp.ini
oder in.htaccess
:Dies kann auch getan werden, sicher durch die änderung dieser Einstellung ist nur für die admin-Seiten (Anpassung der LocationMatch Muster zu Ihrem eigenen back-office-URL-Stil):
(Quelle)
Dieser löst nur das problem, bis einer Ihrer Kategorien erreicht der neue max Anzahl der Produkte...
Eine andere Lösung wäre fix Magento-code, um nicht Verwendung der parse_str () - Funktion an dieser Stelle.
Zum Beispiel, in
Mage_Adminhtml_Catalog_CategoryController
,saveAction()
Methode ersetzen:mit:
(Quelle)
Es ist schwer zu entscheiden, welche Lösung die beste, da der erste macht den server anfällig für Angriffe (wie die
max_input_vars
gemeint ist, zu mildern, die Möglichkeit von denial-of-service-Attacken, die Verwendung von hash-Kollisionen), und die zweite Lösung macht sich die änderung eines Magento core-Klasse, die zu großen Problemen führen kann, in zukünftigen Magento-upgrades...Hoffe, dies ist nützlich wie auch immer, ich kämpfte einige Zeit, bevor ich herausfinden konnte, warum einige Kategorien, hielt ich ein paar Produkte!
InformationsquelleAutor der Antwort programmeurweb
Die beste Lösung wäre die Verwendung von Beobachter-event "catalog_category_prepare_save".
So müssen Sie ändern config.xml Sie Modul:
Dann fügen Sie Funktion app/code/local/Your/Module/Model/Observer.php
(Quelle)
InformationsquelleAutor der Antwort Maksold
Fand ich eine funktionierende Lösung, so Teile ich es hier !
Erstellen Sie eine Datei mit dem Namen
php5.ini
in Ihremmagento root
Ordner und in der ersten Zeile legen Sie einfach diesen codeNun, wenn die nicht arbeiten, müssen Sie diese Zeile in Ihr SERVER PHP,ini (/usr/local/lib/php.ini)
Hoffe Ihr hilft.
InformationsquelleAutor der Antwort user2690463
<IfModule mod_php5.c>
php_value max_input_vars 10000
</IfModule>
Tat den trick für mich, ich hatte das gleiche problem, wie oben beschrieben, Magento 1.4.1.1 nur dann gespeichert, 1001 Produkte in der Kategorie, aber nachdem man den obigen code in meine .htaccess ist der bug Weg.
InformationsquelleAutor der Antwort Arne
LocationMatch ist nicht gestattet .htaccess kann es nur in der Apache httpd.conf
Die bevorzugte Art ist die Erstellung einer Apache gehören und nicht ändern, httpd.conf direkt als würde es brechen auf der nächsten updare/rebuild.
In meinem Fall erstellte ich eine include-Datei pre_virtualhost_global.conf und lege diesen code hinein:
Danach natürlich, müssen Sie den apache neu starten. Ich habe meine WebHostManager so war es ein einfacher Vorgang.
Weitere Infos finden Sie unter:
http://docs.cpanel.net/twiki/bin/view/EasyApache3/WebHome#Custom Richtlinien zu http.conf
Ich denke, das ist die eleganteste Lösung, nicht berühren Magento Core, gilt für alle Websites auf dem server und schützt auch die Oberfläche.
InformationsquelleAutor der Antwort Ilian Andreev
Die Lösung 2 von programmeurweb verbuggt ist, auf Magento 1.8.0.0 !
Sollte es sein:
$v verwendet für die 'position' - und nicht eine checkbox value = 1 (associate product aktuellen Kategorie markiert).
Getestet hab ich schon.
Bin ich falsch ?
Erinnert, niemals copy&paste-code aus dem Netz.
PS: ich kann nicht kommentieren, Antworten jetzt.
InformationsquelleAutor der Antwort obscure