একটি অ্যাডমিন প্যানেলে <ফিল্ম> কীভাবে প্রবেশ করবেন <ফিল্ড>?


13

আমি একটি কাস্টম মডিউল তৈরি করছি যা ম্যাজেন্টোর সীমানায় Google মানচিত্র প্রদর্শন করে । এই মানচিত্রগুলি পেতে প্রশাসককে অ্যাডমিন প্যানেলে মানচিত্রের URL টি প্রবেশ করে সংরক্ষণ করতে হবে। এই সব কাজ করে। ইউআরএল ডাটাবেসে সংরক্ষণ করা হচ্ছে এবং মানচিত্রগুলি স্টোরের সম্মুখভাগে প্রদর্শিত হবে।

তবে এখন আমি অ্যাডমিন প্যানেলে এই মানচিত্রের একটি পূর্বরূপ প্রদর্শন করতে চাই। এটি অ্যাডমিনকে সঠিক URL টি প্রবেশ করে সংরক্ষণ করা হয়েছে কিনা তা সহজেই যাচাই করার অনুমতি দেবে।

আমি এটি Preview Mapএকটি নতুনতে প্রদর্শন করতে চাই <field>(যেখানে URL টি প্রবেশ করা উচিত তার ঠিক নীচে) এবং একটি মানচিত্র পূর্বরূপ ব্যবহার করুন <label>। নীচের মকআপটি আমি কী অর্জন করার চেষ্টা করছি তা প্রদর্শন করে।

এখানে চিত্র বর্ণনা লিখুন

আমার মডিউল system.xmlফাইলটিতে আমি নিম্নলিখিত কোডটি যুক্ত করেছি:

<fields>
    ....
    <preview translate="label comment">
        <label>Map Preview</label>
        <frontend_type>link</frontend_type>
        <frontend_model>mymodule/system_config_map</frontend_model>
        <comment>Preview of your map</comment>
        <sort_order>20</sort_order>
        <show_in_default>1</show_in_default>
        <show_in_website>1</show_in_website>
        <show_in_store>1</show_in_store>
    </preview>
</fields>

এবং আমার MyNamespace/MyModule/Block/System/Config/Map.phpমধ্যে নিম্নলিখিত কোড রয়েছে:

class MyNamespace_MyModule_Block_System_Config_Map extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface
{
    public function render(Varien_Data_Form_Element_Abstract $element) {

    $url = Mage::helper('mymodule')->getMapUrl($store = null);

    return '<iframe style="border: 0;" src="'.$url.'" frameborder="0" width="100%" height="270"></iframe>';
    }
}

এটি অ্যাডমিন প্যানেলে গুগল ম্যাপ রেন্ডার করে না এবং এটি যথাযথভাবেও রেন্ডার করে <group>তবে এটি <field>আমার পছন্দমতো লোড হয় না । এটি বর্তমান পরিস্থিতির সত্যিকারের স্ক্রিন শট।

এখানে চিত্র বর্ণনা লিখুন

আমি যা <frontend_type>ভাবতে পারি তার চেষ্টা করেছি ...

সুতরাং আমার প্রশ্নটি: আমি কীভাবে <iframe>একটি অ্যাডমিন প্যানেলে inোকাতে <field>পারি? আমার কিছু যুক্ত করা উচিত <frontend_model>?


আমি বিশ্বাস করি আপনার ব্যবহার <frontend_model>সত্যই উপায় হয়। এই ফাইলটির মধ্যে আপনার সক্ষম হওয়া উচিত$rendered .= '<iframe...
টিম হলম্যান

কি sort_orderআপনার এর 'Map Details'ক্ষেত্র? এটি কি 20আপনার ব্যবহারের চেয়ে কম 'Map Preview'?
টিম হলম্যান

উত্তর:


2

সঙ্গে Varien_Data_Form_Element_Renderer_Interfaceআপনি স্বাধীনতা পুরো সারি ডিজাইন হিসাবে আপনি চান না। যেহেতু আপনি এর পদ্ধতিতে কেবল ইফ্রেমে প্রসারিত Mage_Adminhtml_Block_Abstractএবং ফিরিয়ে দেন তাই এটি আপনি পান। ডিফল্ট সারণী বিন্যাসটি ব্যবহার করতে, পরিবর্তে প্রসারিত করুন এবং আইফ্রেমে প্রদর্শন করার জন্য উপাদান বৈশিষ্ট্যটি সংশোধন করার পরে এর ডিফল্ট পদ্ধতিটি ব্যবহার করুন ।render()Mage_Adminhtml_Block_Widget_Form_Renderer_Fieldset_ElementtoHtml()

বর্তমানে renderপদ্ধতিটি একটি Varien_Data_Form_Element_Linkপরামিতি হিসাবে গ্রহণ করবে কারণ এটিই frontend_typeআপনার নির্দিষ্ট। তবে যেহেতু আপনি আসলে কোনও ইনপুট ক্ষেত্রটি দেখাতে চান না, আপনার এমন একটি ফ্রন্টএন্ড টাইপতে পরিবর্তন করা উচিত যেখানে আপনি আরও সহজেই রেন্ডার আউটপুটটিকে স্বেচ্ছাসেবী এইচটিএমএলে প্রতিস্থাপন করতে পারেন।

আমি ব্যবহার করার পরামর্শ দিই label, তারপরে রেন্ডার পদ্ধতিটি দেখতে এরকম দেখাচ্ছে:

public function render(Varien_Data_Form_Element_Abstract $element) {

    $url = Mage::helper('mymodule')->getMapUrl($store = null);

    $element->setData('value', '');
    $element->setData('after_element_html', '<iframe style="border: 0;" src="'.$url.'" frameborder="0" width="100%" height="270"></iframe>');

    return $this->toHtml();
}

মনে রাখবেন যে আপনাকে ব্যবহার করতে হবে after_element_htmlএবং valueখালি রেখে দিতে হবে , কারণ একটি লেবেলের মান সর্বদা পালিয়ে যায়, আপনি যখন সর্বদা ইচ্ছামত HTML ব্যবহার করতে পারেনafter_element_html


0

এখানে একটি সিএসএস শ্রেণি সংজ্ঞায়িত করুন এবং প্রস্থ = "100%" সরান।

return '<iframe style="border: 0;" src="'.$url.'" frameborder="0"'
    . ' width="100%" height="270"></iframe>'
;

উদাহরণ:

return '<iframe class="adminmap" style="border: 0;" src="' . $url
    . '" frameborder="0" width="270" height="270"></iframe>'
;

সিএসএস (কেবল প্রস্থ এবং মার্জিনের উপর অনুমান করা)

.adminmap { 
    width: 270px !important; 
    margin-left: 50px; 
}

আপনি এর textপরিবর্তে সামনের ধরণের জন্যও ব্যবহার করতে চাইতে পারেন link

আপনি এখানে বিভিন্ন ধরণের খুঁজে পেতে পারেন ।


আপনার পরামর্শের জন্য ধন্যবাদ। আমি তাদের চেষ্টা করেছিলাম, তবে দুর্ভাগ্যক্রমে তারা আমাকে সাহায্য করেনি। তারা যা করে তা হ'ল মানচিত্রের আকার পরিবর্তন করা, তবে অবস্থানটি নয়। কোনওভাবে <iframe>এখনও সেটটির উপরে উপস্থাপিত হয়েছে <fields>তবে আমার এটি <table>দ্বিতীয় সারির (সাজ্ট_আর্ডার 20) এর ভিতরে রেন্ডার করা দরকার । আমি কেবল বুঝতে পারি না কেন <iframe>প্রথমে রেন্ডার করা হয় ( আমি <label>এবং <comment>আমি যা সংজ্ঞায়িত করেছি তা ছাড়াই system.xml) এবং তারপরে <table>কেবল একটি সারি
দিয়েই

-1

ভাল এর জন্য আপনি ডিজাইন ফোল্ডারে পিএইচটিএমএল ফাইলে কোড করতে পারেন আপনার যদি ক্ষেত্র হিসাবে আইফ্রেমে নেওয়া দরকার না তবে এখানে টেক্সটফিল্ড নিতে হবে আমি ভিডিও স্লাইডারের জন্য যা করেছি

1।

foreach ($ আইটেম হিসাবে সংগ্রহ) {

                    $ i = $ i + 1;
                     $ Item-> getTitle (ঝ $);
                     $ Item-> getUrl (ঝ $);
                     $ অস্থায়ী = $ আইটেম-> getUrl ();
                     $ ইটারে = বিস্ফোরণ ("/", $ টেম্পে);
                            $ Ytendstring = শেষ ($ ytarray);
                            $ ইয়েন্ডাররেয় = বিস্ফোরিত ("? v =", $ ইয়েন্ডস্ট্রিং);
                            $ Ytendstring = শেষ ($ ytendarray);
                            $ ইয়ান্ডার্রেয় = বিস্ফোরিত ("&", $ ইয়েন্ডস্ট্রিং);
                            $ Ytcode = $ ytendarray [0]; 
                    ?> ";?>


  1. এটি আমার ব্লক কোড
 $ ফিল্ডসেট-> অ্যাডফিল্ড ('url', 'পাঠ্য', অ্যারে (
          'লেবেল' => ম্যাজ :: সহায়ক ('ভিডিওস্লাইডার') -> __ ('ভিডিও URL লিখুন'),
          'শ্রেণী' => 'প্রয়োজনীয়-প্রবেশ',
          'স্টাইল' => 'প্রস্থ: 700px;',
          'প্রয়োজনীয়' => সত্য,
          'নাম' => 'ইউআরএল',
      ));

এটি করুন এবং আপনি প্রস্তুত! আপনার মডিউলে ভিউ ফোল্ডারে এই পরিবর্তনগুলি করুন এবং নিয়ামক হিসাবে সেভিশন-এ পরিবর্তন করুন যাতে আপনি এটি এডমিনের পাশেই প্রদর্শন করতে পারেন।

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