Frage

Mein Problem besteht darin, alle verfügbaren Kategorien abzurufen und sie in einer Systemkonfigurationsliste mit Mehrfachauswahlfeldern anzuzeigen.

Hier ist ein Verknüpfung für Magento 1.x.Wie kann es erreicht werden? Magento 2.x?

War es hilfreich?

Lösung 2

In system.xml Das Dateifeld für die Mehrfachauswahl einer Kategorie sieht wie folgt aus:

<group id="bannerblock_setting" translate="label" type="text" default="1" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="1">
    <label>Setting</label>
    <field id="bannerlist" translate="label" type="multiselect" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
        <label>Select Category</label>
        <!-- <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>-->
        <source_model>Ipragmatech\Bannerblock\Model\Config\Source\Categorylist</source_model>
    </field>
</group>

Erstellen Sie eine Datei Categorylist.php In Companyname\Modulename\Model\Config\Source

namespace Companyname\Modulename\Model\Config\Source;

use Magento\Framework\Option\ArrayInterface;

class Categorylist implements ArrayInterface
{
    protected $_categoryHelper;

    public function __construct(\Magento\Catalog\Helper\Category $catalogCategory)
    {
        $this->_categoryHelper = $catalogCategory;
    }

    /*
     * Return categories helper
     */

    public function getStoreCategories($sorted = false, $asCollection = false, $toLoad = true)
    {
        return $this->_categoryHelper->getStoreCategories($sorted , $asCollection, $toLoad);
    }

    /*  
     * Option getter
     * @return array
     */
    public function toOptionArray()
    {


        $arr = $this->toArray();
        $ret = [];

        foreach ($arr as $key => $value)
        {

            $ret[] = [
                'value' => $key,
                'label' => $value
            ];
        }

        return $ret;
    }

    /*
     * Get options in "key-value" format
     * @return array
     */
    public function toArray()
    {

        $categories = $this->getStoreCategories(true,false,true);

        $catagoryList = array();
        foreach ($categories as $category){

            $catagoryList[$category->getEntityId()] = __($category->getName());
        }

        return $catagoryList;
    }

}

Hier ist ein Screenshot:

enter image description here


Andere Tipps

Vendorname / modulename / etc / adminhtml / system.xml

generasacodicetagpre.

vendorname / modulename / etc / etcl.xml

generasacodicetagpre.

Vendorname / modulename / modell / config / source / categoryList.php

generasacodicetagpre.

Hier ist ein Screenshot: Geben Sie hier eingeben

Wenn jemand einen klaren Code benötigt, sind Sie willkommen :)

generasacodicetagpre.

Wenn jemand Code mit übergeordneten und untergeordneten Kategorien wünscht, folgen Sie den folgenden Code:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top