Magento এ পাদলেখ js লোড করুন


12
<reference name="footer">
    <action method="addItem">
        <type>skin_js</type>
        <file>js/fabric/tool/controller_tool.js</file>
    </action>
</reference>

আমি ফুটারে জেএস লোড করতে উপরের কোডটি ব্যবহার করেছি। তবে ম্যাজেন্টো ত্রুটি পছন্দ করে ফেলেছে

অবৈধ পদ্ধতিতে ম্যাজ_পেজ_ব্লক_এইচটিএমএল_ফুটার :: অ্যাড আইটেম (অ্যারে ([0] => স্কিন_জেএস [1] => জেএস / ফ্যাব্রিক / টুল / কন্ট্রোলার_ টোল.জেএস))

আমার ফুটারে জেএস লোড করা দরকার। কীভাবে এই সমস্যাটি কাটিয়ে উঠবেন।

উত্তর:


8

বর্তমানে ম্যাজেন্টো ফুটার ব্লক জাভাস্ক্রিপ্ট যুক্ত করার জন্য ডিজাইন করা হয়নি।

আমি কিছুক্ষণ আগে হেডারের পরিবর্তে প্রতিটি জেএসকে ফুটারে লোড করার জন্য ম্যাজেন্টো এবং ফুটার ব্লকটি রিফ্যাক্ট করেছিলাম তবে টেমপ্লেটগুলির মধ্যে জেএস কলটি যেভাবে কল করা হচ্ছে এটি এই কাজটি করা খুব কঠিন করে তোলে।

আপনার সমস্যা সমাধানের জন্য আমার পরামর্শটি হ'ল এটির মতো আপনার লেআউটটি আপডেট করুন:

<reference name="before_body_end">
    <block type="core/template" name="controller_tool_javascript" template="fabric/tool/controller_tool_js.phtml"/>
</reference>

fabric/tool/controller_tool_js.phtmlনিম্নলিখিত কোড সহ আপনার টেম্পলেট ফোল্ডারে একটি ফাইল তৈরি করুন :

<script type="text/javascript" src="<?php echo $this->getSkinUrl('js/fabric/tool/controller_tool.js') ?>"></script>

যদি এটি কাজ করে তবে আমাকে জানান।


11

পাদলেখের এই কার্যকারিতা নেই, কেবল headএই ব্লকটি page/html_headহ'ল এই পদ্ধতিগুলি ধারণ করে।

আপনি <script src=...></script>কোনও টেম্পলেট ( .phtmlফাইল) এর ভিতরে জেএস ট্যাগ লাগিয়ে এটি অর্জন করতে পারেন এবং এটি একটি core/templateব্লক হিসাবে অন্তর্ভুক্ত করতে পারেন :

<reference name="footer">
    <block type="core/template" name="fabric_controller_tool_js" template="fabric/controller_tool_js.phtml" />
</reference>

এছাড়াও আপনি এটি একটি core/textব্লকের মাধ্যমে যুক্ত করতে পারেন :

<reference name="footer">
    <block type="core/text" name="fabric_controller_tool_js">
         <action method="setText">
             <text><![CDATA[<script src="/js/fabric/tool/controller_tool.js"></script>]]></text>
         </action>
    </block>
</reference>

2

শুধু আপনাকে বলতে চাই কেন addItemকাজ করছেন নাreference name="footer"

আপনি যখন ব্যবহার করবেন reference name="footer"তখন এটি এই ব্লকটিকে কল করবে

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml"> 

যা আপনি page.xmlআপনার থিমটিতে পাবেন।

সুতরাং এর অর্থ এটি addItemসেই ব্লক শ্রেণিতে বা তাদের পিতামাতার শ্রেণিতে পদ্ধতি / ফাংশনটি পরীক্ষা করবে , তবে এই ফাংশনটি নেই, সে কারণেই এটি কাজ করবে না এবং এটি ব্যতিক্রম ছুঁড়ে দেবে।


2

<reference name="footer">আমার ক্ষেত্রে কাজ করে না। আমি জেএসএস নামে আরও উপযুক্ত ব্লক পেয়েছি js:

<reference name="js">
    <block type="core/text" name="fabric_controller_tool_js">
        <action method="setText">
            <text><![CDATA[<script src="/js/fabric/tool/controller_tool.js"></script>]]></text>
        </action>
    </block>
</reference>

বা পৃথক টেম্পলেট মাধ্যমে। পাথ: ডিজাইন / প্রশাসনিক / ডিফল্ট / ডিফল্ট / টেমপ্লেট / বিক্রয় / আদেশ / js.phtml:

<reference name="js">
    <block type="core/template" name="fabric_controller_tool_js" template="sales/order/js.phtml" />
</reference>

1

আপনি যা অর্জন করতে চাইছেন তা অর্জন করতে আমি একটি ভিন্ন পদ্ধতি ব্যবহার করেছি। ম্যাজেন্টোর বাহু মোচড়ানোর পরিবর্তে, আমি কেবল আমার স্ক্রিপ্টটি মাথায় লোড করি, তবে একটি DOMContentLoadedইভেন্ট শ্রোতা সেট করি (ie8 সমর্থন করে না) যা আমার কাজগুলি সম্পাদন করে।

অ্যাপ্লিকেশন / ডিজাইন / ফ্রন্টএন্ড / বেস / ডিফল্ট / লেআউট / namespace_module.xml

<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.0.1">
  <default>
    <reference name="head">
      <action method="addJs">
        <script>NameSpace/Module/entry.js</script>
      </action>
    </reference>
  </default>
</layout>

অ্যাপ্লিকেশন / কোড / সম্প্রদায় / নামস্থান / মডিউল, / etc / config.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <modules>
    <NameSpace_Module>
      <version>0.0.1</version>
    </NameSpace_Module>
  </modules>
  <frontend>
    <layout>
      <updates>
        <module>
          <file>namespace_module.xml</file>
        </module>
      </updates>
    </layout>
  </frontend>
</config>

JS / নামস্থান / মডিউল / entry.js

document.addEventListener("DOMContentLoaded", function(event) {
  // do something
});

1

আপনি পেজ.এক্সএমএল এ নতুন ব্লক যুক্ত করতে পারেন

<block type="core/text_list" name="before_body_end" as="before_body_end" translate="label">
    <block type="page/html_head" name="footerjscss" as="footerjscss" after="-" template="page/html/footerjscss.phtml"/>
</block>

তারপরে যেকোন লেআউট.এক্সএমএলে জেএস এবং সিএসএস ফাইল যুক্ত করুন

<reference name="footerjscss">
    <action method="addItem"><type>skin_js</type><name>js/slideshow.js</name></action>
    <action method="addItem"><type>skin_css</type><name>css/madisonisland.css</name><params/><if/></action>
</reference>

পৃষ্ঠা / এইচটিএমএল / ফুটারজস্কেস.এফটিএমএল .phtml ফাইল তৈরি করুন এবং নিম্নলিখিত যুক্ত করুন

<?php echo $this->getCssJsHtml() ?>

এখন পৃষ্ঠা টেমপ্লেটে ব্লককে কল করুন "3collines.phtml" এবং ইত্যাদি। ট্যাগ করার আগে আপনাকে এই ব্লকটি আউটপুট করতে হবে:

<?php echo $this->getChildHtml('before_body_end') ?>

কোডটি এখানে রেফার করুন: http://blog.rahuldadhich.com/magento-load-css-js-footer/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.