cancel
Showing results for 
Search instead for 
Did you mean: 

Insertar una categoría para diferentes vistas de tienda mediante programación

SOLVED

Insertar una categoría para diferentes vistas de tienda mediante programación

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!

1 ACCEPTED SOLUTION

Accepted Solutions

Re: Insertar una categoría para diferentes vistas de tienda mediante programación

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.

 

View solution in original post

3 REPLIES 3

Re: Insertar una categoría para diferentes vistas de tienda mediante programación

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.

 

Re: Insertar una categoría para diferentes vistas de tienda mediante programación

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 ?

 

Re: Insertar una categoría para diferentes vistas de tienda mediante programación

Lo siento, lo que tu dices es correcto, el storeId pertenece a cada vista

 

Gracias