Hola!
Estoy intentando insertar una categoría nueva, el siguiente código lo hace correctamente pero yo quisiera poder insertar el nombre para cada vista en diferentes idiomas
public function __construct(
\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $collectionFactory,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Catalog\Model\CategoryFactory $categoryFactory
)
{
$this->categoryFactory = $categoryFactory;
$this->storeManager = $storeManager;
$this->collectionFactory = $collectionFactory;
parent::__construct();
}$category = $this->categoryFactory->create();
$category->setName('nombre en español');
$category->setName('nombre en francés'); // ???
$category->setParentId(3);
$category->setIsActive(true);
$category->setStoreId(3);
$category->setLevel(count($ruta));
$category->setCustomAttributes([
"display_mode"=> "PRODUCTS",
"is_anchor"=> "1"
]);
$category->setPath(implode("/",$ruta));
$category->setData('description', 'description');
$category->save();No he podido encontrar como indicar el nombre de la categoría según la vista
Alguna idea ?
Gracias!
Solved! Go to Solution.
Hi @ggallego
Puede guardar el nombre de la categoría por ID de tienda actual. Por favor, compruebe el siguiente código:
$currentStoreId = $this->storeManager->getStore()->getId();
$category = $this->categoryFactory->create();
$category->setName('nombre en español');
$category->setParentId(3);
$category->setIsActive(true);
$category->setStoreId($currentStoreId);
$category->setLevel(count($ruta));
$category->setCustomAttributes([
"display_mode"=> "PRODUCTS",
"is_anchor"=> "1"
]);
$category->setPath(implode("/",$ruta));
$category->setData('description', 'description');
$category->save();
Si se solucionó el problema, haga clic en Kudos / Aceptar como soluciones.
Hi @ggallego
Puede guardar el nombre de la categoría por ID de tienda actual. Por favor, compruebe el siguiente código:
$currentStoreId = $this->storeManager->getStore()->getId();
$category = $this->categoryFactory->create();
$category->setName('nombre en español');
$category->setParentId(3);
$category->setIsActive(true);
$category->setStoreId($currentStoreId);
$category->setLevel(count($ruta));
$category->setCustomAttributes([
"display_mode"=> "PRODUCTS",
"is_anchor"=> "1"
]);
$category->setPath(implode("/",$ruta));
$category->setData('description', 'description');
$category->save();
Si se solucionó el problema, haga clic en Kudos / Aceptar como soluciones.
Hola,
Entiendo que:
$this->storeManager->getStore()->getId();
Devuelve el id del store y no de la vista, yo tengo dos vistas en el store, una para Español y otra para Francés, la categoría pertenece al storeId 3
No tendría que indicar el id de la vista ?
Lo siento, lo que tu dices es correcto, el storeId pertenece a cada vista
Gracias