web-dev-qa-db-fra.com

ne pas lister les produits qui ne sont pas en stock

j'ai un module qui montre les catégories de produits virtuemart en première page. Je ne veux pas que les produits qui ne sont pas en stock soient disponibles.

il y a une fonction dans le code du module pour sélectionner les produits:

public static function _CountProduct($catids, $params)
{
    if ($catids == '*') {
        $_catids = $params->get('catid');
        $catids = self::_getChildCategories($_catids, $params);
        $catids = self::_getPublishCategories($catids);
    }
    if (empty($catids)) return;

    $limitation = 999;
    $source_group = null;
    $ordering_direction = $params->get('product_ordering_direction');
    $source_order = $params->get('source_order', 'group.featured');
    $p_special = $params->get('show_front');
    $categoryModel = VmModel::getModel('Category');
    $categoryModel->_noLimit = true;

    $list = array();
    if (!empty($catids)) {
        $productModel = VmModel::getModel('Product');
        $productModel = new VirtuemartModelProductExtend();
        $productModel->filter_order = $source_order;
        $productModel->specail_product = $p_special;
        $productModel->ordering_direction = $ordering_direction;
        $desc_maxlength = $params->get('item_des_maxlength');
        $items = $productModel->getProductListing($source_group, $limitation, true, true, false, true, $catids);
        $productModel->addImages($items);
        $ratingModel = VmModel::getModel('ratings');
        foreach ($items as $item) {
            $item->title = $item->product_name;
            $item->id = $item->virtuemart_product_id;
            $item->description = $item->product_desc;
            self::getVmImages($item, $params);
            $item->short_desc = self::_cleanText($item->product_s_desc);
            $item->_description = self::_cleanText($item->description);
            $item->_description = ($item->_description != '') ? self::truncate($item->_description, $desc_maxlength) : self::truncate($item->short_desc, $desc_maxlength);
            $item->vote = $ratingModel->getVoteByProduct($item->virtuemart_product_id);
            $item->rating = $ratingModel->getRatingByProduct($item->virtuemart_product_id);
            $list[] = $item;
        }
    }


    return count($list);
}

comment dois-je changer cette fonction pour le faire? J'utilise la dernière version de joomla et virtuemart.

toute aide serait appréciée. Merci

2
kiasaty

Ceci est une fonction standard de Vm - si vous sélectionnez Configuration> Vitrine sur le côté droit, des options sont disponibles pour les produits en rupture de stock ... Changez ceci en ' Ne pas afficher le produit '.

Hide products when out of stock

Toutes mes excuses pour la réponse tardive, je suis parti.

Cordialement Donna

1
Dtorr1981

Dans votre module, comme vous avez $ productModel, vous pouvez vérifier $ productModel-> orderable. Maintenant, où que vos produits dans le module soient rendus, faites une vérification comme -

if ($productModel->orderable == false) {
    //Do not render product
} else {
    //Render product
}
1
Anant