Estou tentando obter a chave de URL de qualquer categoria com o ID. Eu tenho isto;
$categoryId = 3;
$_objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$object_manager = $_objectManager->create('Magento\Catalog\Model\Category')->load($categoryId);
print_r($object_manager->getData());
E isso funciona (no print_r existe a chave da URL que eu preciso), mas a categoria 3 é a categoria de nível superior. Sempre que tento qualquer subcategoria (digamos ID 5), recebo uma matriz em branco. Só estou perdido por palavras, não consigo entender.
No Magento 1.x, eu costumava fazer isso: Mage::getModel('catalog/category')->load($catID)->getUrl()
e isso funcionou.
TL; DR: Esse código funciona, mudar o ID para um (correta) ID da categoria e mudança getData()
para getUrl()
para a url categoria completa, ou getName()
para o nome da categoria.
fonte
Sempre tente usar o repositório. Você precisa injetar a seguinte maneira:
Para o URL da categoria
fonte
Você pode tentar o código abaixo.
Antes de usar um ID de categoria, confirme se o ID de categoria existe no admin ou ele retornará uma matriz vazia.
Deixe-me saber se você tiver alguma dúvida.
fonte
Descobri que quando preciso de URLs de categoria de domínios diferentes (por visualização da loja), tive que criar um novo objeto de URL por visualização da loja.
fonte
Isso funciona bem no meu bloco personalizado (usando repositório de categorias e DI):
Finalmente, dentro de um arquivo de modelo, eu apenas uso:
fonte
@andrea Atualize o método getCategory. Ou funciona bem.
fonte