Многоязычный магазин категорий с использованием CSV-файла в magento - PullRequest
0 голосов
/ 12 марта 2020

Я новичок в Magento и мне нужна помощь. Я хочу перевести свои категории с помощью файла CSV
Я импортирую категории из файла CSV и хочу, чтобы мой магазин был переведен с английского sh на арабский c

Это мой CSV-код:

id;store_id;name;parent_id
42;1;attajer mall;
42;2;التاجر مول;

А это мой PHP код

   /**
 * Load category by old category ID
 *
 * @param $categoryFactory
 * @param $data
 * @param $id
 * @return mixed
 */
protected function getCategoryFromCollectionByOldId($categoryFactory, $data, $id)
{
    return $categoryCollection = $categoryFactory
        ->create()
        ->getCollection()
        ->addFieldToFilter('entity_id', $data[$this->headersMap[$id]])
        ->setPageSize(1);//->addAttributeToFilter('category_id', ])
}

/**
 * Add or update category data
 *
 * @param $data
 * @param bool|false $isParent
 * @return bool
 */
protected function addOrUpdateCategory($data, $isParent = false)
{
    $categoryFactory = $this->objectManager->get('Magento\Catalog\Model\CategoryFactory');
    $categoryRepository = $this->objectManager->get('\Magento\Catalog\Api\CategoryRepositoryInterface');
    $categoryCollection = $this->getCategoryFromCollectionByOldId($categoryFactory, $data, 'id');
    if ($categoryCollection->getSize()) {
        $categoryId = $categoryCollection->getFirstItem()->getEntityId();
        $category = $categoryRepository->get($categoryId, 0);
    } else {
        $category = $categoryFactory->create();
    }
    $storeId= $data[1];
    $category->setStoreId($data[1]);
    $category->setName($data[$this->headersMap['name']]);

    $category->setIsActive($this->getOptionalAttributeValue($data, 'is_active', true));
    $category->setIncludeInMenu($this->getOptionalAttributeValue($data, 'include_in_menu', true));
    if ($isParent) {
        $category->setParentId($data[]);
    } else {
        $categoryCollection = $this->getCategoryFromCollectionByOldId($categoryFactory, $data, 'parent_id');
        if ($categoryCollection->getSize()) {
            $categoryId = $categoryCollection->getFirstItem()->getEntityId();
            $category->setParentId($categoryId);
        } else {
            $this->errors[] = 'ERROR (RECORD SKIPPED): Category "'
                . $data[$this->headersMap['name']]
                . '" does not have existing parent category!';
            return false;
        }
    }


    $additionalData = [
        'is_anchor' => $this->getOptionalAttributeValue($data, 'is_anchor', true),
        'custom_use_parent_settings' =>
            $this->getOptionalAttributeValue($data, 'custom_use_parent_settings', true)

    ];
    foreach ($this->additionalHeaders as $header) {
        if (array_key_exists($header, $this->headersMap)) {
            $additionalData[$header] = $data[$this->headersMap[$header]];
        }
    }


    $category->setCustomAttributes($additionalData);
   // $categoryRepository->save($category);

    try{
        var_dump($category->getData());
        $categoryRepository->save($category);
    } catch(\Exception $e){
        var_dump($e->getTraceAsString());die;
    }

    return true;
}

Проблема в том, что данные категорий двух языков не отображается в бэкэнде (административная часть)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...