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