سؤال

ولدي العديد من المواقع التي تستخدم الفئة الجذر نفسها من الموقع الرئيسية. يضاف لكل منتج التي يتم إضافتها إلى الموقع تم إضافته إلى (واو) وكذلك الموقع الرئيسية. ومع ذلك، أود فئات على أساس لكل موقع لتظهر فقط إذا كان هناك منتجات في هذا الموقع.

إذا كنت لديك:

Category1
Category2
Category3

ولكن لدى Site1 ليس لديها سوى المنتجات في Category1 وCategory2، في حين Site2 وSite3 دينا منتجات في Category2 وCategory3. أريد فقط Category1 / 2 لتظهر على ولدى Site1 Category2 الوحيدة / 3 لتظهر فقط على Site2 وSite3.

ولكن، لأن جميع المنتجات في لدى Site1 / تضاف 2/3 أيضا إلى الموقع الرئيسي. ان الموقع الرئيسية قائمة Category1 / 2/3.

يتم إضافة أي منتجات مباشرة إلى الموقع الرئيسي. ببساطة بمثابة مستودع لمواقع أخرى.

والآن، إذا لم يكن هناك طريقة سهلة جدا لتمكين هذا (وأنا متأكد)، فإنه سيكون بسيطا مثل كتابة موضوع بلدي تسرد الفئات التي لديها منتجات فقط على موقع الذي يتم عرض القالب على

وأنا لست مبتدئ في التقنيات التي تستخدم الماجنتو. حتى كتابة التعليمات البرمجية المخصصة ليست مشكلة. وأود أن، ومع ذلك، لا ترغب في تحريره أن كثيرا أن رفع قاعدة قانون بلدي سيكون أسهل في المستقبل مع الإصدارات الأحدث من الماجنتو.

وشكرا،
-nelson

هل كانت مفيدة؟

المحلول

حسنا، ما يمكنك القيام به هو، وخلق المساعد الخاص بك مع مجموعة (من خلال النموذج)، ومن ثم تصفية مجموعة على أساس عدد المنتجات.

وفقط مسودة، ولكني نشر بعض التعليمات البرمجية في سؤال آخر الماجنتو ذات الصلة: المنتجات الماجنتو من قبل فئات . يمكنك أن ترى كيف ومتى يضيف المنتجات عد، فما استقاموا لكم فاستقيموا تصفية مرة أخرى عندما يتم ذلك.

وأنا لا أعتقد أن هذا هو غاية "كبيرا" من حيث الأداء، وذلك بدلا من استخدام الطبقات نموذجهم، وكنت <م> قد اكتب ما تريد، امتداده وإضافة الفلاتر الافتراضية، أو shortcutting مباشرة إلى قاعدة البيانات.

وطالما كنت البقاء في جلدك / القالب، لا توجد قضايا أكبر مع التحديث.

نصائح أخرى

وهذا هو حل بسيط لإخفاء الفئات التي قد تساعدك.

ومحتويات الأصلية للملف top.phtml يجب أن تبدو أدناه.

<?php $_menu = $this->renderCategoriesMenuHtml(0,'level-top') ?>
<?php if($_menu): ?>
<div>
    <ul id="nav">
        <?php echo $_menu ?>
    </ul>
</div>
<?php endif ?>

واستبدال رمز أعلاه مع هذا الرمز أدناه.

<?php $_menu = ''?>
<?php $excludeCat = array(); ?>
<?php foreach ($this->getStoreCategories() as $_category): ?>
    <?php if($_category->getProductCount() <=0) {
          $excludeCat[] = $_category->getId(); 
    }
    ?>
    <?php $_menu .= $this->drawItem($_category) ?>
<?php endforeach ?>
<?php if ($_menu): ?>
<div>
    <ul id="nav">
    <?php foreach ($this->getStoreCategories() as $_category): ?>
    <?php if (!in_array($_category->getId(), $excludeCat)) : ?> <?php echo $this->drawItem($_category) ?>
    <?php endif; ?>
    <?php endforeach ?>
    </ul>
</div>
<?php endif; ?>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top