Magento CSV Importation de produit Définition parent Catégorie URL Touche à utiliser dans la liste Catalogue Catégorie Page de la catégorie

magento.stackexchange https://magento.stackexchange.com//questions/29927

Question

- mise à jour -

Je pense que le problème est dans la liste de la liste de la catégorie. Il génère le lien de produit au produit, pour la page, dans une boucle.

Je dois avoir les catégories de produits et l'utiliser pour construire l'URL.

Je pense que je devrai définir lequel je veux être le parent dans un attribut supplémentaire, puis vérifier cet attribut pour la catégorie URL-Key que je souhaite utiliser.

Toute suggestion sur le meilleur moyen d'accomplir cela?

- mise à jour -

J'ai remarqué que le problème semble être à cause de la façon dont Magento crée sa clé URL pour qu'un produit est basé sur l'ID de catégorie la plus élevée des catégories auquel il appartient.

Le plus grand identifiant de catégorie définit la clé URL.

Donc si j'ai produit1 dans la catégorie1, Catégorie2 et Catégorie3; Je veux la clé URL de Catégorie1 (c.-à-d. Site.com/category1/product1), mais si Catégorie3 a un identifiant plus grand que Catégorie1, la clé URL sera site.com/category3/product1, même lorsque vous naviguez vers site.com/ Catégorie1 Le lien est à site.com/category3/product1.

Je pourrais le supprimer des catégories supplémentaires qui ont un identifiant plus élevé, mais ce n'est pas une solution idéale.

Y a-t-il de toute façon pour définir la clé d'URL complète? ou existe-t-il quelque part que je peux forcer la préférence de la clé URL de certaines catégories?

- original -

Je tente d'importer des produits et des catégories via CSV.

J'ai ce processus fonctionnant et tout importe sans lancer une erreur.

J'ai mes produits appartenant à n'importe où de 1 à 3 catégories.

Dans l'importation, la clé URL de la plupart des produits est correcte, elle semble simplement être des celles aléatoires qui ne reçoivent pas la clé URL du premier parent (catégorie).

Il semblait que, initialement, ils utilisaient tous le dernier, donc j'ai commuté la commande pour être inversée.

Ceci est corrigé la plupart d'entre eux, mais ceux qui sont configurés à peu près le même, et doivent avoir la même clé d'URL parent, utilisent aléatoirement l'une des autres catégories comme clé d'URL.

J'ai essayé de supprimer tout (produits et catégories), effacée mon stockage de cache. Vérifié que l'URL réécrit a été supprimée et essayé d'importer à nouveau.

J'ai le même résultat.

Le ne semble pas être des liens de visibilité, car une erreur incorrecte est définie sur 4, et une autre est 1 (à laquelle je m'attendrais à ce que je voudrais d'erreur si l'un des deux.)

J'ai la plupart des catégories inactives, je souhaite déployer des catégories supplémentaires après le lancement.

Je penserais que cela prendrait la préférence aux catégories visibles, mais celui que je tiens à montrer est visible, et il est placé dans un inactif.

Je ne suis pas sûr de quoi d'autre pourrait causer cela. Ou là où chercher le problème. Je ne vois rien qui indiquerait pourquoi ces produits spécifiques sont différents. Mais chaque fois que j'importe, les mêmes entrent dans la mauvaise catégorie.

Toute aide serait grandement appréciée. Si quelqu'un pouvait au moins me signaler dans la bonne direction.

Je peux donner des exemples plus spécifiques si nécessaire, je ne voulais pas confondre plus de choses que cela est déjà.

Était-ce utile?

La solution

Dans un effort de ne pas avoir de dupliquer des URL, mais liez des catégories supplémentaires au produit dans une autre catégorie, avec une URL, j'ai fini par résoudre ce problème comme suit.

J'ai créé un attribut de produit supplémentaire, parent_url_key.

Dans mon script d'importation, j'ai ajouté la clé d'URL parent préférée pour chaque produit de cette valeur.

Dans la catégorie Affichage de la liste de produits, au lieu d'utiliser simplement:

$_product->getProductUrl()

J'ai fait cela pour créer mon URL de produit:

$url = $_product->getProductUrl();
if($categoryParent = $_product->getResource()->getAttribute('parent_url_key')) {
    $categoryParentVal = $categoryParent->getFrontend()->getValue($_product);
    if($categoryParentVal) {
        $url = $this->getUrl($categoryParentVal).basename($url);
    }
}

De cette façon, il vérifie un parent défini ou utilise la catégorie actuelle si elle est indéfinie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top