كيف يمكنني الحصول فقط على عنوان URL للمنتج القابل للتنزيل في قالب البريد الإلكتروني؟

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

سؤال

كما يوحي العنوان وكما تظهر لقطة الشاشة، كيف يمكنني الحصول فقط على عنوان URL للمنتج القابل للتنزيل لكل منتج تم طلبه وإظهاره في قالب البريد الإلكتروني؟

أريد تسليط الضوء على الرابط (الروابط) في البريد الإلكتروني المرسل.

enter image description here

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

المحلول

تتمثل إحدى طرق القيام بذلك في إنشاء كتلة في وحدة نمطية مخصصة تجلب روابط التنزيل من قاعدة البيانات للترتيب الحالي.إنه مشابه لكيفية إنشاء روابط التنزيل حاليًا لكل عنصر طلب.يمكن إضافة الحظر إلى رسائل البريد الإلكتروني الخاصة بالطلب باستخدام مقبض تحديث التخطيط المخصص، بنفس الطريقة التي تتم بها إضافة عناصر الطلب.

بنية الوحدة بسيطة جدًا، نحتاج فقط إلى ملفين.الأول هو تكوين الوحدة لدينا في app/code/local/Custom/Module/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Custom_Module>
            <version>1.0.0.0</version>
        </Custom_Module>
    </modules>

    <global>
        <blocks>
            <custom_module>
                <class>Custom_Module_Block</class>
            </custom_module>
        </blocks>
    </global>
</config>

وكتلة لدينا: app/code/local/Custom/Module/Block/Email/Download/Links.php

class Custom_Module_Block_Email_Download_Links extends Mage_Core_Block_Template
{
    protected $_linksCollection;

    public function getDownloadLinksCollection()
    {
        if (is_null($this->_linksCollection)) {
            $this->_linksCollection = Mage::getModel('downloadable/link_purchased_item')->getCollection();
            $this->_linksCollection->getSelect()->where('order_item_id IN (?)', $this->_getItemIds());
        }

        return $this->_linksCollection;
    }

    public function getPurchasedLinkUrl($item)
    {
        return $this->getUrl('downloadable/download/link', array(
            'id'        => $item->getLinkHash(),
            '_store'    => $this->getOrder()->getStore(),
            '_secure'   => true,
            '_nosid'    => true
        ));
    }

    protected function _getItemIds()
    {
        $itemIds = array();

        foreach ($this->getOrder()->getAllItems() as $item) {
            $itemIds[] = $item->getId();
        }

        return $itemIds;
    }
}

من الواضح أننا سنحتاج أيضًا إلى ملف قالب للكتلة الخاصة بنا وملف تحديث التخطيط لإضافة المقبض الخاص بنا.

موقع القالب عشوائي، لقد قمت بحفظه فيه app/design/frontend/your_package/your_theme/template/custommodule/email/download/links.phtml ويبدو مثل هذا:

<?php if ($this->getDownloadLinksCollection()->getSize()): ?>
    <table cellpadding="0" cellspacing="0" border="0" width="100%">
        <thead>
        <tr>
            <th style="font-family: Verdana, Arial; font-weight: 700; padding: 10px 15px; background: #f1f1f1; text-transform: uppercase; text-align: left; font-size: 11px;" class="cell-name">
                <?php echo $this->__('Download Links') ?>
            </th>
        </tr>
        </thead>
        <tbody>
        <?php foreach ($this->getDownloadLinksCollection() as $link): ?>
            <tr>
                <td style="mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-collapse: collapse; padding: 6px 18px; margin: 0; width: 100%; background: #e1f0f8;">
                    <a style="color:#1E7EC8;" href="<?php echo $this->getPurchasedLinkUrl($link) ?>">
                        <?php echo $this->escapeHtml($link->getLinkTitle()) ?>
                    </a>
                </td>
            </tr>
        <?php endforeach ?>
        </tbody>
    </table>
<?php endif ?>

لم أرغب في تسجيل ملف تخطيط جديد لذلك اخترت ذلك local.xml بدلاً من.يتم حفظ الملف في app/design/frontend/your_package/your_theme/layout/local.xml

<?xml version="1.0"?>
<layout version="0.1.0">

    <email_download_links>
        <block type="custom_module/email_download_links" name="email.download.links" as="email.download.links" template="custommodule/email/download/links.phtml"/>
    </email_download_links>

</layout>

الآن علينا فقط إدراج هذا في قالب البريد الإلكتروني الخاص بنا وقد انتهينا.لقد فعلت ذلك من المشرف (System > Transactional Emails) منذ أن قمت بالفعل بتكوين البريد الإلكتروني للطلب هناك.كل ما عليك فعله هو العثور على الموقع المناسب، اعتمادًا على ترميزك، وإدراج هذا الجزء من الكود:

{{layout handle="email_download_links" order=$order}}

بالطبع يمكنك دائمًا تغيير العلامات في links.phtml لتناسب احتياجاتك المحددة.

وهذا كل ما في الأمر.آمل أن يكون هذا منطقيا :)

نصائح أخرى

أعتقد أنك تريد وضع رابط التنزيل داخل اسم المنتج في البريد الإلكتروني

يمكنك الحصول على عنصر ترتيب dowanload باستخدام الرمز أدناه: giveacodicetagpre.

الحصول على قائمة رابط التنزيل من البند giveacodicetagpre.

في عموما طلب البريد الإلكتروني giveacodicetagpre.

افترض: عنصر طلب جديد يتم تقديمه من هنا التطبيق / التصميم / الواجهة الأمامية / YourPackage / yourtempla / قالب / المبيعات / الطلب / العناصر / العارض / default.phtml

إضافة رمز أدناه: giveacodicetagpre.

آمل أن يكون هذا ........ ساعدني

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