إدراج علامات الرسم البياني المفتوح عبر الوحدة النمطية المخصصة والكتلة

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

سؤال

أنا أستخدم Magento EE 1.6

عندما أستخدم فئة كتلة مخصصة لعرض بعض العلامات داخل ملفي <head>, لن يتم عرض الكتلة.ولكن إذا قمت باستخدام "page/html" اكتب كل شيء على ما يرام..أحتاج إلى فصلي المخصص لإضافة بعض الميزات إلى الكتلة (التنشيط والحصول على عنوان url للصورة وما إلى ذلك).

الرجاء مساعدتي في فهم ما فاتني.إليكم ما قمت به حتى الآن:

التطبيق/etc/modules/Wbx_Social.xml :

<?xml version="1.0"?>
<config>
    <modules>
        <Wbx_Social>
            <active>true</active>
            <codePool>local</codePool>
        </Wbx_Social>
    </modules>
</config>

التطبيق/كود/محلي/Wbx/Social/etc/config.xml :

<?xml version="1.0"?>
<config>
    <modules>
        <Wbx_Social>
            <version>0.1.0</version>
        </Wbx_Social>
    </modules>
    <global>
        [...]
        <blocks>
            <wbx_social>
                <class>Wbx_Social_Block</class>
            </wbx_social>
        </blocks>
    </global>
    <frontend>
        <layout>
            <updates>
                <wbx_social>
                    <file>wbx_social.xml</file>
                </wbx_social>
            </updates>
        </layout>
    </frontend>
</config>

app/code/local/Wbx/Social/Block/Opengraph.php :

class Wbx_Social_Block_Opengraph extends Mage_Core_Block_Template
{
    /**
     * @return int
     */
    public function isActive()
    {
        return true; // Will be replaced with store config value
    }

    /* And other useful functions */

}

app/design/frontend/response/default/layout/wbx_social.xml :

<?xml version="1.0"?>
<layout>
    <default>
        <reference name="head">
            <block type="wbx_social/opengraph" name="opengraph" as="opengraph" template="social/opengraph.phtml"/>
        </reference>
    </default>
</layout>

وأخيرًا القالب:app/design/frontend/response/default/template/social/opengraph.phtml :

<?php /* @var $this Wbx_Social_Block_Opengraph */ ?>
<?php if ($this->isActive()) : ?>
    <meta property="fb:app_id"       content="an id"/>
    <meta property="og:type"         content="website"/>
    <meta property="og:site_name"    content="a name"/>
<?php endif; ?>

فقط في حالة أنني لم أنس Wbx_Social_Helper_Data مساعد فارغ.

في wbx_social.xml, ، عندما أحاول تغيير فئة الكتلة لـ type="core/template" أو type="page/html" (على سبيل المثال)، يتم عرض الكتلة بشكل صحيح (دون الوصول إلى الوظائف المخصصة بالطبع)

أنا حقا بحاجة إلى تلميح، لقد مرت عدة ساعات وأنا أبكي.

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

المحلول 2

طيب عرفت أصل المشكلةكانت المشكلة بالفعل من مجموعتي Wbx_Social_Block_Opengraph التي نفذت أ getUrl() طريقة.خطأ كبير! Mage_Core_Block_Abstract (أحد أسلاف كتلتي) لديه بالفعل ملف getUrl() الطريقة ولكن بتوقيع مختلف.سؤالي الكبير الحقيقي هو:لماذا لم أتلقى أي خطأ / تحذير ؟؟كان سيوفر الكثير من الوقت..

على أية حال، لقد غيرت طريقتي الخاصة ل getOgUrl() وفويلا!يتم عرض علاماتي كما أردت....

شكرا جزيلا لاقتراحاتكم، والناس!

نصائح أخرى

هناك عدة أنواع من الكتل في Magento.راجع التطبيق\code\core\Mage\Core\Block\

واحد منهم هو "القائمة".يحصل على جميع الأطفال ويخرجهم واحدًا تلو الآخر.ال content تعمل الكتلة مثل هذا.

لكن معظم الكتل لها نوع "قالب".هذا يعني أن لديهم بعض قوالب .phtml المرتبطة بها ويقومون بعرضها.على سبيل المثال، الكتلة الخاصة بك لديها هذا النوع.

لإضافة بعض الكتل في الرأس ( type = "template")، عليك تحرير ملف head.phtml واستدعاء الكتلة الفرعية باستخدام $this->getChildHtml('opengraph')

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