Magento - charger uniquement des produits configurables
J'ai le code suivant:
$_productCollection = $this->getLoadedProductCollection();
foreach ($_productCollection as $_product)
{
if ($_product->_data['type_id'] == 'configurable')
{
...
}
}
Alors qu'il fait ce qu'il est censé faire, il a considérablement ralentit le temps de chargement de page. Est-il possible de ne charger que les produits configurables et décochez la case pour 'configurable'? Le magasin a 12000 produits, à environ 700 sont configurables et le reste des enfants sont les produits simples.
J'ai trouvé le code suivant qui renvoie tous les produits configurables. J'ai besoin que les produits de la catégorie actuelle:
$collectionConfigurable = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('type_id', array('eq' => 'configurable'));
Pouvez-vous le cache de la sortie ou de la collection obtenue à partir de ce code?
Je ne suis pas sûr de ce que tu veux dire, mais je n'ai
Je ne suis pas sûr de ce que tu veux dire, mais je n'ai
fwrite($f, print_r($_productCollection, true))
et la taille du fichier était 54MB. $_productCollection->count()
retourne 5420. Évidemment, je ne peux pas le poster ici.OriginalL'auteur Vincent | 2011-03-12
Vous devez vous connecter pour publier un commentaire.
Le problème avec
getLoadedProductCollection()
c'est que c'est déjà chargés - les produits de données a déjà été extraites de la base de données. Juste à l'aide de la catégorie de produit de la collection n'est pas assez bon, qui ignore les "couches" (filtres d'attribut). Le truc, c'est de supprimer le chargement des produits à partir de la liste de la première.print_r($_productCollection)
a elle aussi des problèmes, vous n'êtes pas seulement de la sortie des produits, mais aussi tous les détails de la ressource qui est la connexion de base de données, et les valeurs mises en cache, et les produits individuels des ressources, et ainsi de suite...Dans ce cas je pense que tu serais plus heureuse avec:
Vous pouvez définir leur visibilité pour les "Pas visible individuellement", qui permettrait d'exclure de la liste de produits. Si vous voulez dire spécifiquement à cette occasion, puis utilisez le filtre
addAttributeToFilter('type_id', array('neq' => 'simple'))
.neq
signifie évidemment "Pas Égal".+1 pour cette méthode. J'aime le clone et clair - très succincte.
découvert aujourd'hui que
clone
ne pas créer une copie propre dans Magento grâce à PHP en eau peu profonde et de clonage parce que Varien ne pas mettre en œuvre __clone() - réf : stackoverflow.com/questions/4959949/clone-is-not-working-for-me/... -j'ai essayé d'utiliser la technique de l'événement
catalog_product_collection_load_before
, il a donné de bons résultats, mais encore la barre d'outils est qui a 6 éléments où il y a seulement 1 chargé. mon code:$observer->getCollection() ->clear() ->addAttributeToSelect('*') ->addAttributeToFilter('entity_id', array('nin' => $excludeIds)) ->load();
OriginalL'auteur clockworkgeek
Toutes ces solutions ne fonctionne pas pour moi, essayez ceci:
Il fonctionne, mais ne sais pas si c'est correct (je suis nouveau sur Magento). Laissez-moi savoir s'il vous plaît.
OriginalL'auteur Fred K
La façon dont vous êtes en train de faire ce exige que tous les produits soient chargés avant d'analyser et de les filtrer. C'est probablement plus proche de ce que vous cherchez:
Quelle version utilisez-vous?
La Version 1.5.0.1
S'il vous plaît dites-moi ce qui est
$this
ici, dans ce contexte?OriginalL'auteur philwinkle
Essayez de suivre
Pour le chargement configurable et simple aussi bien essayer
OriginalL'auteur Muk
Voici le code pour obtenir uniquement des produits configurables:
OriginalL'auteur Deepak Kumar
Si vous modifiez la Visibilité de produit simple à "Pas Visible Individuellement", Magento ne se charge pas à afficher dans la liste de produit page.
OriginalL'auteur ndlinh