Magento নতুন কাস্টম ব্লক মডিউল


12

আমি ম্যাজেন্টো সংস্করণ 1.8.1.0 ব্যবহার করছি

আমি একটি নতুন কাস্টম ব্লক মডিউল তৈরির চেষ্টা করছি, যা আমি একটি নতুন হোম পৃষ্ঠা তৈরির জন্য ব্যবহার করব।

  • নেমস্পেস: ক্রুসেডার
  • মডিউল: সিএলহোমপেজ
  • ব্লকের ধরণ: ক্রুসেড হোম
  • শ্রেণি: কিওয়ার্টি (পরীক্ষার সময় কেবলমাত্র এখন জন্য)
  • ডিজাইন প্যাকেজ: ক্রুসেডার
  • থিম: ডিফল্ট

আমার এ পর্যন্ত যা আছে:

\ অ্যাপ্লিকেশন \ ইত্যাদি \ মডিউল \ Crusader_All.xml

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

\ অ্যাপ্লিকেশন \ কোড \ স্থানীয় \ ক্রুসেডার \ CLHomePage \ ইত্যাদি \ config.xml

<?xml version="1.0"?>
<config> 
    <modules>
        <Crusader_CLHomePage>
            <version>0.0.1</version>
        </Crusader_CLHomePage>
    </modules>
    <global>
        <blocks>
            <crusaderhome>
                <class>Crusader_CLHomePage_Block</class>
            </crusaderhome>
        </blocks>
    </global>
</config>

\ অ্যাপ্লিকেশন \ কোড \ স্থানীয় \ ক্রুসেডার \ CLHomePage \ ব্লক \ Qwerty.php

<?php
class Crusader_CLHomePage_Block_Qwerty extends Mage_Core_Block_Template
{
    // Methods (optional)
}
?>

\ অ্যাপ্লিকেশন \ নকশা \ ফ্রন্টএন্ড \ ধর্মযোদ্ধা \ ডিফল্ট \ বিন্যাস \ local.xml

<?xml version="1.0" ?>
<layout>
    <cms_index_index>
        <reference name="content">
            <block type="core/template" name="homepage" template="crusader/home.phtml">
                <block type="crusaderhome/qwerty" name="homeads" as="homeads" template="crusader/homeads.phtml" />
            </block>
        </reference>
    </cms_index_index>
</layout>

\ অ্যাপ্লিকেশন \ নকশা \ ফ্রন্টএন্ড \ ধর্মযোদ্ধা \ ডিফল্ট \ টেমপ্লেট \ ধর্মযোদ্ধা \ home.phtml

<div id="home">
<p>Home Wrapper</p>
<?php echo $this->getChildHtml('homeads'); ?>
</div>

\ অ্যাপ্লিকেশন \ নকশা \ ফ্রন্টএন্ড \ ধর্মযোদ্ধা \ ডিফল্ট \ টেমপ্লেট \ ধর্মযোদ্ধা \ homeads.phtml

<p>Adverts</p>

এখন উপরের জায়গাগুলির সাথে, আমার হোম পৃষ্ঠাতে কেবল "হোম র্যাপার" home.phtmlপ্রদর্শিত হচ্ছে , সুতরাং এর সামগ্রী প্রদর্শিত হবে তবে এর সামগ্রী নয় homeads.phtml

যদি আমি ব্লক টাইপ পরিবর্তন homeadsকরার জন্য core/template, এটি কাজ করে, এবং আমি উভয় "বাড়ি আবরণ" এবং "adverts" দেখুন। সুতরাং আমি জানি যে সমস্যাটি আমার নতুন ব্লকের ধরণের (ক্রুসেড হোম নামে পরিচিত) রেফারেন্সের সাথে করণীয়।

আমি এখানে কি ভুল করছি ..?

সম্পাদনা

উত্তরের পরামর্শের পরে, আমি নিম্নরূপ কয়েকটি ফাইল আপডেট করেছি তবে এটি এখনও কার্যকর হয় না:

\ অ্যাপ্লিকেশন \ ইত্যাদি \ মডিউল \ Crusader_Home.xml

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

\ অ্যাপ্লিকেশন \ কোড \ স্থানীয় \ ক্রুসেডার \ হোম \ ইত্যাদি \ config.xml

<?xml version="1.0"?>
<config> 
    <modules>
        <Crusader_Home>
            <version>1.0.0</version>
        </Crusader_Home>
    </modules>
    <global>
        <blocks>
            <crusader_home>
                <class>Crusader_Home_Block</class>
            </crusader_home>
        </blocks>
    </global>
</config>

\ অ্যাপ্লিকেশন \ কোড \ স্থানীয় \ ক্রুসেডার \ হোম \ ব্লক \ Qwerty.php

<?php
class Crusader_Home_Block_Qwerty extends Mage_Core_Block_Template
{
    // Methods (optional)
}
?>

\ অ্যাপ্লিকেশন \ ডিজাইন \ ফ্রন্টএন্ড \ ক্রুসেডার \ ডিফল্ট \ লেআউট। স্থানীয়.xML (আমি চেষ্টা করছিলাম নেস্টেড ব্লকগুলির পরিবর্তে কেবল একটি ব্লক ব্যবহারের জন্য সরলীকৃত)

<?xml version="1.0" ?>
<layout>
    <cms_index_index>
        <reference name="content">
            <block type="crusader_home/qwerty" name="homepage" template="crusader/home.phtml" />
        </reference>
    </cms_index_index>
</layout>

\ অ্যাপ্লিকেশন \ নকশা \ ফ্রন্টএন্ড \ ধর্মযোদ্ধা \ ডিফল্ট \ টেমপ্লেট \ ধর্মযোদ্ধা \ home.phtml

<p>Home</p>

সুতরাং আমি এখনও এমন অবস্থানে আছি যেখানে কিছুই দেখায় না।

@ ফ্যাবিয়ানব্লিকস্মমিট দ্বারা অনুরোধ করার পরে আমি লগগুলি চালু করেছি এবং ব্যতিক্রম হিসাবে এটি দেখায়:

2014-04-09T14:04:54+00:00 ERR (3): 
exception 'Mage_Core_Exception' with message 'Invalid block type: Crusader_Home_Block_Qwerty' in W:\stores\magento-dev\app\Mage.php:595
Stack trace:
#0 W:\stores\magento-dev\includes\src\__default.php(27744): Mage::throwException('Invalid block t...')
#1 W:\stores\magento-dev\includes\src\__default.php(27686): Mage_Core_Model_Layout->_getBlockInstance('crusader_home/q...', Array)
#2 W:\stores\magento-dev\includes\src\__default.php(27721): Mage_Core_Model_Layout->createBlock('crusader_home/q...', 'homepage')
#3 W:\stores\magento-dev\includes\src\__default.php(27488): Mage_Core_Model_Layout->addBlock('crusader_home/q...', 'homepage')
#4 W:\stores\magento-dev\includes\src\__default.php(27454): Mage_Core_Model_Layout->_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
#5 W:\stores\magento-dev\includes\src\__default.php(27459): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
#6 W:\stores\magento-dev\includes\src\__default.php(13895): Mage_Core_Model_Layout->generateBlocks()
#7 W:\stores\magento-dev\includes\src\__default.php(11274): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#8 W:\stores\magento-dev\includes\src\__default.php(11213): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_IndexController), 'home')
#9 W:\stores\magento-dev\app\code\core\Mage\Cms\controllers\IndexController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), 'home')
#10 W:\stores\magento-dev\includes\src\__default.php(13969): Mage_Cms_IndexController->indexAction()
#11 W:\stores\magento-dev\includes\src\__default.php(18331): Mage_Core_Controller_Varien_Action->dispatch('index')
#12 W:\stores\magento-dev\includes\src\__default.php(17865): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#13 W:\stores\magento-dev\includes\src\__default.php(20465): Mage_Core_Controller_Varien_Front->dispatch()
#14 W:\stores\magento-dev\app\Mage.php(684): Mage_Core_Model_App->run(Array)
#15 W:\stores\magento-dev\index.php(176): Mage::run('crusadergifts', 'store')
#16 {main}

কোন ধারণা কি ঘটছে .. ??

2 নম্বর সম্পাদনা করুন

@ মালাচি উত্তরটি খুঁজে পেল ... এটি সংকলক ছিল। আমি সংকলকটি অক্ষম করেছি এবং এটি এখন কাজ করছে বলে মনে হচ্ছে।


আমি ধরে নিলাম, আপনার কোথাও একটি টাইপো আছে, বড় হাতের ফাইল / ফাইল নামের ছোট হাতের চেক করুন। ফাইলগুলি দেখতে সুন্দর লাগছে। আপনি কি কনফিগার ক্যাশেটি পরিষ্কার করেছেন?
ফ্যাবিয়ান ব্ল্যাচসমিডট

@ ফ্যাবিয়ানব্লিশ্মমিট আমি কোড এবং ফাইলের নামগুলিতে আমার বড় হাতের অক্ষর / ছোট হাতের চেক করেছি - আমার কাছে ঠিক আছে। উপরের সমস্ত কিছু আমার ফাইলগুলি থেকে আটকানো হয়েছে। আমি এই মুহুর্তে সমস্ত ক্যাশে বন্ধ করে দিয়েছি এবং আমি কেবল সমস্ত ক্যাশে সাফ করে দিয়ে আবার চেষ্টা করেছি - এখনও কাজ করে না।
স্টিফেন শেষ

আপনি system.log এবং ব্যতিক্রম.লগ পরীক্ষা করেছেন? এতে যদি কিছু না থাকে তবে আমি MAge_Core_Model_Config-> getGroupedClassName () এ ডিবাগ করা শুরু করব। এর পাশে: দয়া করে দুর্দান্ত ডিবাগিং টিউটোরিয়ালটি দেখুন এবং ফিরে রিপোর্ট করুন।
ফ্যাবিয়ান ব্ল্যাচসমিড

আমি লগ আগে ব্যবহার করা হয়নি। আমি এখনই তাদের সক্ষম করেছি এবং ব্যতিক্রম.লগ প্রদর্শিত হচ্ছে:exception 'Mage_Core_Exception' with message 'Invalid block type: Crusader_Home_Block_Qwerty'
স্টিফেন লাস্ট

আমি এখানে অন্যান্য উত্তরের সাথে সামঞ্জস্য রেখে মডিউলটির নাম আপডেট করেছি, অতএব ব্লকের প্রকারের নাম (সিএলহোমপেজ -> হোম)।
স্টিফেন শেষ

উত্তর:


11

আমি পুরো এক্সএমএল জিনিসটিকে কঠিন মনে করি তাই আমি এখানে আপনার কারণের প্রতি সহানুভূতিশীল।

আপনার শ্রেনীর নাম এবং আপনার ব্লক এক্সএমএল এর সাথে মতবিরোধ রয়েছে বলে মনে হচ্ছে

অর্থাত

class Crusader_CLHomePage_Block_Qwerty extends Mage_Core_Block_Template

এবং

    <block type="core/template" name="homepage" template="crusader/home.phtml">
        <block type="crusaderhome/qwerty" name="homeads" as="homeads" template="crusader/homeads.phtml" />
    </block>

আসুন ব্লকের ধরণ দিয়ে শুরু করুন এবং পিছনে কাজ করুন। আমি মনে করি এখানে আমি এমন কিছু দেখার আশা করব

<block type="crusader_home/qwerty" ...

এবং এই ধরনের ক্লাসে Magento উল্লেখ করবে

Crusader_Home_Block_Qwerty extends Mage_Core_Block_Template

এই ট্যাকের পিছনে কাজ চালিয়ে যাওয়া, ফাইল অ্যাপ্লিকেশন \ কোড \ লোকাল ad ক্রুসেডার \ সিএলহোমপেজ \ ইত্যাদি \ config.xml এর মতো কিছুতে পরিবর্তন করতে হবে would

<global>
    <blocks>
        <crusader_home>
            <class>Crusader_Home_Block</class>
        </crusader_home>
    </blocks>
</global>

এটি 'ক্রুসেডার_হোম_ব্লক_ *' শুরু করে সমস্ত শ্রেণিতে ম্যাজেন্টোকে নির্দেশ করে। এবং এখন আমি মনে করি ক্রুসেডার_সিএল হোম পেজের পরিবর্তে আপনার মডিউল ক্রুসেডার_হোমের নতুন নামকরণ এবং সেই অনুযায়ী ফোল্ডারের নাম পরিবর্তন করা দরকার ...

এবং / তবে আমি আপনাকে দৃ module়ভাবে সুপারিশ করছি আপনার মডিউলটির নামটি পরিবর্তন করুন। শুধুমাত্রতিনটি নয় মডিউল নামের শুরুতে একটি বড় অক্ষরব্যবহার করুনএবং নামের মাঝখানে বড় হাতের অক্ষর রাখবেন না।

মডিউল তৈরির জন্য উপলব্ধ কয়েকটি সরঞ্জাম আপনি সন্ধান করতে পারেন। টাইপিং ত্রুটিগুলি এড়ানোর জন্য আমি এগুলিকে খুব দরকারী বলে মনে করি। আমি এটিকে এমজিটি কমার্সের খুব চালাক লোক দ্বারা ব্যবহার করি (এটির পক্ষে সরলতা রয়েছে) এবং এটি সিল্ক সফ্টওয়্যার দ্বারা বিস্তৃত এবং কোডিংয়ের একটি বিস্ময়কর টুকরা

*** নীচে মন্তব্য অনুসরণ করুন

ত্রুটিযুক্ত লগের উপর ভিত্তি করে অতিরিক্তভাবে আমি মনে করি যে সমস্যাটি হ'ল ম্যাগেন্টো আপনার শ্রেণি ফাইলটি খুঁজে পাচ্ছে না। সুতরাং ক্যাশেগুলি রিফ্রেশ বা বন্ধ রয়েছে, বিশেষত এক্সএমএল ক্যাশে, এবং সংকলকটি বন্ধ বা পুনরায় সক্ষম হয়েছে তা ডাবল-চেক করুন ।


ধন্যবাদ, আমি আপনার পরামর্শ চেষ্টা করেছি। আমি আমার মডিউলটির নাম 'হোম' এ রেখেছি এবং সমস্ত উল্লেখ এবং ফোল্ডার আপডেট করেছি। এখনও কাজ করে না। পরিবর্তনগুলি দেখানোর জন্য আমি আমার প্রশ্নটি সম্পাদনা করব।
স্টিফেন শেষ

1
এটি অবশ্যই আরও ভাল দেখায়। আমি অবাক হয়েছি যদি কোথাও কোনও লুক্কায়িত টাইপিং ত্রুটি এখনও আছে। ত্রুটি লগের উপর ভিত্তি করে আমি মনে করি যে সমস্যাটি হ'ল ম্যাগেন্টো আপনার শ্রেণি ফাইলটি খুঁজে পাচ্ছে না। সুতরাং ডাবল চেক করুন ক্যাশে রিফ্রেশ বা বন্ধ হয়। এক্সএমএল ক্যাশে এবং সংকলকটি বন্ধ বা পুনরায় সক্ষম। এটি একটি ফাইল অনুমতি সমস্যা হবে না?
মালাচি

1
আপনি যাদু শব্দের উল্লেখ করেছেন - সংযোজক ... আমি কমপ্লায়ারকে অক্ষম করেছি এবং এটি এখন কাজ করছে বলে মনে হচ্ছে। ধন্যবাদ! আপনি যদি এটি উত্তর হিসাবে যুক্ত করেন তবে আমি এটি আপনার জন্য গ্রহণ করব! :-)
স্টিফেন শেষ

আসলে এটি কেবল সংকলক ছিল না iler আপনার আসল এক্সএমএলটি <block type="crusaderhome/qwerty"ভুল। সমাধান উভয় একটি হয়) এক্সএমএল সংশোধন এবং খ) পুনরায় কম্পাইল
Malachy

-1

আপনার প্রশ্নের উত্তর প্রথম স্থানে দিন

    <block type="core/template" name="homepage" template="crusader/home.phtml">
       <block type="crusaderhome/qwerty" name="homeads" as="homeads" template="crusader/homeads.phtml" />
    </block>

দ্বারা প্রতিস্থাপন করা উচিত

<block type="core/template" name="homepage" template="crusader/home.phtml"></block>
<block type="crusaderhome/qwerty" name="homeads" as="homeads" 
template="crusader/homeads.phtml" />

কারণ হোমপেজ হোমপেজের সন্তান নয়। আমি মনে করি এটি কাজ করবে।


ধন্যবাদ! আমি এর আগে ভাগ্যবিহীন চেষ্টা করেছিলাম। যখন ব্লক টাইপটি মূল / টেম্পলেট ছিল (আমার কাস্টম ব্লকের ধরণের চেয়ে) তখন পিতামাতার / সন্তানের জিনিসটি ঠিকঠাক কাজ করছিল তাই আমার সমস্যাটি ব্লক প্লেসমেন্ট নয়।
স্টিফেন শেষ

-1

আমি একই সমস্যা পেয়েছি এবং কনফিগ.এক্সএমএলে নিম্নলিখিত কোডগুলি প্রতিস্থাপন করে সমাধান করেছি

<global>
    <blocks>
        <crusaderhome>
            <class>Crusader_CLHomePage_Block</class>
        </crusaderhome>
    </blocks>
</global>

এই

<global>
    <blocks>
        <crusader_clhomepage>
            <class>Crusader_CLHomePage_Block</class>
        </crusader_clhomepage>
    </blocks>
</global>

এটি সমস্যার সমাধান করা উচিত।

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