{"id":7887,"date":"2021-05-02T11:56:05","date_gmt":"2021-05-02T11:56:05","guid":{"rendered":"https:\/\/www.bay20.com\/?p=7887"},"modified":"2025-05-21T16:30:14","modified_gmt":"2025-05-21T10:45:14","slug":"hinzufugen-einer-benutzerdefinierten-spalte-zum-agento-2-produkt-grid","status":"publish","type":"post","link":"https:\/\/www.bay20.com\/de\/hinzufugen-einer-benutzerdefinierten-spalte-zum-agento-2-produkt-grid\/","title":{"rendered":"Wie man eine benutzerdefinierte Spalten, um die Magento 2 Produkte Gitter hinzuf\u00fcgen?"},"content":{"rendered":"\n<p>Jeder Wert, den Sie einem Produkt hinzuf\u00fcgen und in der Produkttabelle anzeigen m\u00f6chten, ist nicht allzu schwierig. Sie k\u00f6nnen dies tun, indem Sie die folgenden Schritte ausf\u00fchren:<\/p>\n\n\n\n<p>Wie f\u00fcge ich eine Spalte in ein Produkt ein?<\/p>\n\n\n\n<p><strong>Schritt 1 : Ein Modul erstellen<\/strong><\/p>\n\n\n\n<p>Zuerst m\u00fcssen Sie ein Modul erstellen. Dazu m\u00fcssen Sie eine <em>registration.php<\/em> und eine module.xml erstellen. Wir beginnen mit registration.php und erstellen diese Datei im Verzeichnis <em>app\/code\/Bay20\/Custom<\/em>. Hier ist Bay20 der Name des Anbieters und Custom der Name des Moduls.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\\Magento\\Framework\\Component\\ComponentRegistrar::register(\n    \\Magento\\Framework\\Component\\ComponentRegistrar::MODULE,\n    'Bay20_Custom',\n    __DIR__\n);<\/code><\/pre>\n\n\n\n<p>jetzt erstellen <em>app\/code\/Bay20\/Custom\/etc\/module.xml<\/em>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\" ?&gt;\n&lt;config xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"urn:magento:framework:Module\/etc\/module.xsd\"&gt;\n    &lt;module name=\"Bay20_Custom\" setup_version=\"1.0.0\"&gt;\n        &lt;sequence&gt;\n            &lt;module name=\"Magento_Catalog\"\/&gt;\n        &lt;\/sequence&gt;\n    &lt;\/module&gt;\n&lt;\/config&gt;<\/code><\/pre>\n\n\n\n<p>Nachdem Sie beide Dateien erstellt haben, f\u00fchren Sie die Befehle aus,<\/p>\n\n\n\n<p><strong><em>php bin\/magento module:enable Bay20_CustomColumn<\/em><\/strong><\/p>\n\n\n\n<p>und<\/p>\n\n\n\n<p><strong><em>php bin\/magento setup:upgrade<\/em>                                                                                                                               <\/strong><\/p>\n\n\n\n<p><strong>Schritt 2 : Benutzerdefinierte Spalte zum Produktraster hinzuf\u00fcgen<\/strong><\/p>\n\n\n\n<p>Um eine benutzerdefinierte Spalte zu erstellen, ben\u00f6tigen Sie die Auflistung UI-Komponente Instanz namens <em>Product_listing<\/em> und xml Konfigurationsdatei Magento_Catalog\/view\/adminhtml\/ui_component\/product_listing.xml.<\/p>\n\n\n\n<p>Um diese Datei anzupassen, m\u00fcssen Sie eine Datei in app\/code\/Bay20\/Custom\/view\/adminhtml\/ui_component\/product_listing.xml erstellen<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt; \n&lt;listing xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"urn:magento:module:Magento_Ui:etc\/ui_configuration.xsd\"&gt; \n    &lt;columns name=\"product_columns\"&gt; \n        &lt;column name=\"manage_stock\" component=\"Magento_Ui\/js\/grid\/columns\/select\" sortOrder=\"76\"&gt; \n            &lt;settings&gt; \n                &lt;addField&gt;true&lt;\/addField&gt; \n                &lt;options class=\"Magento\\Config\\Model\\Config\\Source\\Yesno\"\/&gt; \n                &lt;filter&gt;select&lt;\/filter&gt; \n                &lt;dataType&gt;select&lt;\/dataType&gt; \n                &lt;sortable&gt;false&lt;\/sortable&gt; \n                &lt;label translate=\"true\"&gt;Manage Stock&lt;\/label&gt; \n            &lt;\/settings&gt; \n        &lt;\/column&gt; \n    &lt;\/columns&gt; \n&lt;\/listing&gt;<\/code><\/pre>\n\n\n\n<p>F\u00fchren Sie nach dem Hinzuf\u00fcgen von Code diesen Befehl aus, um den Cache zu leeren:<\/p>\n\n\n\n<p><strong><em>php bin\/magento cahe:clean<\/em><\/strong><\/p>\n\n\n\n<p>Sobald der Cache bereinigt ist, k\u00f6nnen Sie \u00fcberpr\u00fcfen, ob eine benutzerdefinierte Spalte in der Produkttabelle erstellt wurde.<\/p>\n\n\n\n<p><strong>Schritt 3 : Daten zur Produktsammlung hinzuf\u00fcgen<\/strong><\/p>\n\n\n\n<p>Um der Produktsammlung bestandsbezogene Daten hinzuzuf\u00fcgen, wird f\u00fcr die Instanz product_listing die Klasse data provider verwendet<\/p>\n\n\n\n<p>Magento_Catalog\/view\/adminhtml\/ui_component\/product_listing.xml<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;dataSource name=\"product_listing_data_source\" component=\"Magento_Ui\/js\/grid\/provider\"&gt; \n    &lt;settings&gt; \n        &lt;storageConfig&gt; \n            &lt;param name=\"dataScope\" xsi:type=\"string\"&gt; filters.store_id&lt;\/param&gt; \n        &lt;\/storageConfig&gt; \n        &lt;updateUrl path=\"mui\/index\/render\"\/&gt; \n    &lt;\/settings&gt; \n    &lt;aclResource&gt;Magento_Catalog::products&lt;\/aclResource&gt; \n    &lt;dataProvider class=\"Magento\\Catalog\\Ui\\DataProvider\\Product\\ProductDataProvider\" name=\"product_listing_data_source\"&gt; \n        &lt;settings&gt; \n            &lt;requestFieldName&gt;id&lt;\/requestFieldName&gt; \n            &lt;primaryFieldName&gt;entity_id&lt;\/primaryFieldName&gt; \n        &lt;\/settings&gt; \n    &lt;\/dataProvider&gt; \n&lt;\/dataSource&gt;<\/code><\/pre>\n\n\n\n<p>Sie k\u00f6nnen \u00fcberpr\u00fcfen, dass dataProvider eine Klasse der UI-Komponente dataSource ist.<\/p>\n\n\n\n<p>Die Klasse des Datenanbieters hat zwei Klassen <strong>addFieldStrategies<\/strong> und <strong>addFilterStrategies<\/strong>. addField und addFilter sind jeweils zwei Methoden der beiden Klassen.<\/p>\n\n\n\n<p><strong>Verwaltung der Bestandsfeldstrategie<\/strong><\/p>\n\n\n\n<p>Mit dieser Strategie k\u00f6nnen Sie als erstes den Status der Bestandsverwaltung zur Produktsammlung hinzuf\u00fcgen.<\/p>\n\n\n\n<p>Bay20\\Custom\\Ui\\DataProvider\\Product\\AddManageStockFieldToCollection<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php \nnamespace Bay20\\Custom\\Ui\\DataProvider\\Product; \nclass AddManageStockFieldToCollection implements \\Magento\\Ui\\DataProvider\\AddFieldToCollectionInterface \n{ \n    public function addField(\\Magento\\Framework\\Data\\Collection $collection, $field, $alias = null) \n    { \n        $collection-&gt;joinField('manage_stock', 'cataloginventory_stock_item', 'manage_stock', 'product_id=entity_id', null, 'left'); \n    } \n}<\/code><\/pre>\n\n\n\n<p>Die <em>addField<\/em>-Methode von <em>AddFieldToCollectionInterface<\/em> implementiert die <em>AddManageStockFieldToCollection-Strategie<\/em>. Die Spalte f\u00fcr die Bestandsverwaltung stammt aus der Tabelle <em>cataloginventory_Stock_item<\/em>, die eine Tabelle in der DB ist, und <em>manage_stock<\/em> ist eine Spalte in dieser Tabelle.<\/p>\n\n\n\n<p><strong>Verwalten der Bestandsfilterstrategie<\/strong><\/p>\n\n\n\n<p>Wenn Sie Gitterdaten nach dem Bestandsf\u00fchrungsstatus filtern m\u00f6chten, ben\u00f6tigen Sie eine Bestandsfilterstrategie.<\/p>\n\n\n\n<p>Bay20\\Custom\\Ui\\DataProvider\\Product\\AddManageStockFilterToCollection<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php \nnamespace Bay20\\Custom\\Ui\\DataProvider\\Product; \nclass AddManageStockFilterToCollection implements \\Magento\\Ui\\DataProvider\\AddFilterToCollectionInterface \n{ \n    public function addFilter(\\Magento\\Framework\\Data\\Collection $collection, $field, $condition = null) \n    { \n        if (isset($condition&#91;'eq'])) { \n            $collection-&gt;addFieldToFilter($field, $condition); \n        } \n    } \n}<\/code><\/pre>\n\n\n\n<p><em>addFilter<\/em>-Methode von <em>AddFilterToCollectionInterface<\/em> implementiert <em>AddManageStockFilterToCollection-Strategie<\/em>.<\/p>\n\n\n\n<p><strong>Hinzuf\u00fcgen von Strategien zum Produktlistendatenanbieter<\/strong><\/p>\n\n\n\n<p>Nachdem Sie diese Strategien erstellt haben, f\u00fcgen Sie diese Strategien dem Datenanbieter product_listing hinzu, um sie zu verwenden. Erstellen Sie dazu die Datei app\/code\/Bay20\/Custom\/etc\/adminhtml\/di.xml<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\" ?&gt; \n&lt;config xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"urn:magento:framework:ObjectManager\/etc\/config.xsd\"&gt; \n    &lt;type name=\"Magento\\Catalog\\Ui\\DataProvider\\Product\\ProductDataProvider\"&gt; \n        &lt;arguments&gt; \n            &lt;argument name=\"addFieldStrategies\" xsi:type=\"array\"&gt; \n                &lt;item name=\"manage_stock\" xsi:type=\"object\"&gt;Bay20\\Custom\\Ui\\DataProvider\\Product\\AddManageStockFieldToCollection&lt;\/item&gt; \n            &lt;\/argument&gt; \n            &lt;argument name=\"addFilterStrategies\" xsi:type=\"array\"&gt; \n                &lt;item name=\"manage_stock\" xsi:type=\"object\"&gt;Bay20\\Custom\\Ui\\DataProvider\\Product\\AddManageStockFilterToCollection&lt;\/item&gt; \n            &lt;\/argument&gt; \n        &lt;\/arguments&gt; \n    &lt;\/type&gt; \n&lt;\/config&gt;<\/code><\/pre>\n\n\n\n<p>Wenn Sie alle diese Schritte durchgef\u00fchrt haben, vergessen Sie nicht, den Cache zu leeren,<\/p>\n\n\n\n<p>php bin\/magento cache:clean config<\/p>\n\n\n\n<p>Nachdem Sie diesen Befehl ausgef\u00fchrt haben, k\u00f6nnen Sie \u00fcberpr\u00fcfen, ob die benutzerdefinierte Spalte mit Daten hinzugef\u00fcgt wurde.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.bay20.com\/wp-content\/uploads\/2021\/03\/customcolumn-980x369.png\" alt=\"\" class=\"wp-image-7893\" width=\"859\" height=\"323\" srcset=\"https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2021\/03\/customcolumn-980x369.png 980w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2021\/03\/customcolumn-300x113.png 300w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2021\/03\/customcolumn-800x301.png 800w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2021\/03\/customcolumn-768x289.png 768w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2021\/03\/customcolumn-1000x377.png 1000w, https:\/\/www.bay20.com\/de\/wp-content\/uploads\/2021\/03\/customcolumn.png 1340w\" sizes=\"auto, (max-width: 859px) 100vw, 859px\" \/><\/figure>\n\n\n\n<p><strong>Schlussfolgerung:<\/strong><\/p>\n\n\n\n<p>Manchmal m\u00fcssen Sie in den Tabellen Produktattribute und auch Spalten anzeigen, die keine Produktattribute sind. Zu diesem Zeitpunkt erstellen Sie eine benutzerdefinierte Spalte.<\/p>\n\n\n\n<p><strong>Bitte kontaktieren Sie uns unter <strong><a href=\"mailto:manish@bay20.com\">manish@bay20.com<\/a><\/strong> oder rufen Sie uns unter <strong><a href=\"https:\/\/api.whatsapp.com\/send?phone=+918800519180&amp;text=Hi,%20I%20contacted%20you%20through%20your%20website.\" target=\"_blank\" rel=\"noreferrer noopener\">+91-8800519180<\/a><\/strong> an, wenn Sie Unterst\u00fctzung f\u00fcr Magento 2 ben\u00f6tigen. Sie k\u00f6nnen auch die <strong><a href=\"https:\/\/www.bay20.com\/de\/magento-entwicklungsunternehmen\/\">Magento2<strong>-Entwicklungsseite<\/strong><\/a><\/strong> besuchen, um die von uns angebotenen Dienstleistungen zu \u00fcberpr\u00fcfen.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>You have to create module. For that you need to crate a registration.php and module.xml . We will start with registration.php, create this file in app\/code\/Bay20\/Custom directory. Here Bay20 is vendor name and Custom is module name.<\/p>\n","protected":false},"author":1,"featured_media":8418,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,79],"tags":[],"class_list":["post-7887","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-magento2","category-magento-anleitung"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts\/7887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/comments?post=7887"}],"version-history":[{"count":11,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts\/7887\/revisions"}],"predecessor-version":[{"id":17292,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/posts\/7887\/revisions\/17292"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/media\/8418"}],"wp:attachment":[{"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/media?parent=7887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/categories?post=7887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bay20.com\/de\/wp-json\/wp\/v2\/tags?post=7887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}