سؤال

يتيح لك ملف تعريف منتجات الاستيراد تصفية المنتجات التي يجب تصديرها بالاسم ، SKU ... أريد أن أحصل على نفس الوظائف في صفحة Manage Products. سيقوم المسؤول بتصفية المنتجات في الشبكة ثم انقر فوق زر "تصدير" للحصول على المنتجات المصفاة.

كيف يمكنني إضافة زر "التصدير"؟ ما هو قالب/كتلة أحتاج إلى تجاوزها؟ عندما ينقر المشرف على الزر ، كيف يمكنني الحصول على المجموعة المصفاة؟ كيف يمكنني تصدير المجموعة المصفاة إلى ملف CSV؟ هل يمكنني استخدام تدفق البيانات لذلك؟

شكرًا

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

المحلول

ستحتاج إلى تنفيذ جديد العمل الجماهيري في وحدة تحكم المنتج المسؤول. تتمثل إحدى الطرق الجيدة للبدء في إلقاء نظرة على وحدة تحكم المنتج ومعرفة كيفية تنفيذ الجماهير الأخرى.

دعونا نلقي نظرة ... أولاً ستحتاج إلى إضافة إعلان من التدليك إلى شبكة. يمكن القيام بذلك في التطبيق/الكود/الأساس/mage/adminhtml/block/catalog/product/grid.php. تحتاج إلى إضافة ما يلي في طريقة _preparemassaction:

$this->getMassactionBlock()->addItem('export', array(
                'label' => Mage::helper('catalog')->__('Export to CSV'),
                'url'   => $this->getUrl('*/*/massExport', array('_current'=>true)),
            ));

الآن سيتعين عليك تنفيذ هذا الإجراء الجديد في وحدة تحكم المنتج (APP/CODE/CORE/MAGE/ADMANTML/Controllers/Catalog/ProductController.php):

public function massExportAction()
    {
        $productIds = $this->getRequest()->getParam('product');
        if (!is_array($productIds)) {
            $this->_getSession()->addError($this->__('Please select product(s).'));
            $this->_redirect('*/*/index');
        }
        else {
            //write headers to the csv file
            $content = "id,name,url,sku\n";
            try {
                foreach ($productIds as $productId) {
                    $product = Mage::getSingleton('catalog/product')->load($productId);
                    $content .= "\"{$product->getId()}\",\"{$product->getName()}\",\"{$product->getProductUrl()}\",\"{$product->getSku()}\"\n";
                }
            } catch (Exception $e) {
                $this->_getSession()->addError($e->getMessage());
                $this->_redirect('*/*/index');
            }
            $this->_prepareDownloadResponse('export.csv', $content, 'text/csv');
        }

    }

يتم نسخ الكود في الغالب من الهيكل الشامل ، ولكن بدلاً من حذف المنتجات ، يجب عليك إضافتها إلى متغير محتوى $. بعد الانتهاء من إنشاء محتوى تصدير CSV الخاص بك (ربما ستحتاج إلى إضافة حقول أخرى إليه) ، تحتاج إلى استدعاء طريقة _prepedownloadResponse لفئة وحدة التحكم. هذا كل شيء ، لديك تصدير مخصص في مكانه!

في ملاحظة أخيرة ، بمجرد أن تكون سعيدًا بالتغييرات ، تذكر انقلهم إلى تجمع الرموز المحلية الخاصة بك بحيث يظل تثبيت Magento الخاص بك مقاومًا للتحديث :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top