কীভাবে বহুভাষিক স্ট্যাটিক ব্লক তৈরি করবেন


23

আমার বহুভাষিক স্ট্যাটিক ব্লক তৈরি করা দরকার। এখন পর্যন্ত আমি আইডি 'ডেলিভারি_রেটস' দিয়ে স্ট্যাটিক ব্লক তৈরি করেছি।

আমি এটিকে ক্যাটালগ \ পণ্য \ view.phtml এ কল করছি:

$deliveryBlock = Mage::getModel('cms/block')->load('delivery_returns');
echo $deliveryBlock->getTitle();
echo $deliveryBlock->getContent();

আমি বুঝতে পারি যে এই ব্লকটি অনুবাদ করতে:

  1. আমার কেবল অন্য একটি তৈরি করা উচিত।
  2. স্টোর_ভিউ ক্ষেত্র থেকে আমার পছন্দসই ভাষা চয়ন করুন
  3. এবং স্ট্যাটিক ব্লক সনাক্তকারীকে মূল হিসাবে একই রাখুন।

এই পদ্ধতিটি 'ফুটার_লিংকস' এর সাথে এবং আমি তৈরি করা আরও একটি স্ট্যাটিক ব্লকের সাথেও কাজ করে, যাকে 'হেডার_লিঙ্কস' বলা হয়, তবে দৃশ্যত এটি 'ডেলিভারি_রেটস' ব্লকের সাথে কাজ করছে না। স্টোরের ভাষা পরিবর্তন করা অনুবাদ করা 'ডেলিভারি_রেটস' ব্লককে বোঝায় না

আমি কী মিস করছি? এটি অর্জনের জন্য আরও ভাল উপায় আছে কি?

উত্তর:


25
  1. একই ভাষার সনাক্তকারীর সাহায্যে প্রতিটি ভাষার জন্য একটি স্ট্যাটিক ব্লক তৈরি করুন।
  2. ব্লকটি ব্লকের সাথে রেন্ডার করুন cms/block। এটি ব্লকের সঠিক সংস্করণটি লোড করতে স্বয়ংক্রিয়ভাবে স্টোর আইডি যুক্ত করবে।

টেমপ্লেট ফাইলটিতে ব্লকটি লোড এবং রেন্ডার করার একটি সহজ উপায়:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('delivery_returns')->toHtml() ?>

বিকল্পভাবে, একটি বিন্যাস ফাইলটিতে ব্লকটি ঘোষণা করুন এবং এটিকে রেন্ডার করুন <?php echo $this->getChildHtml('delivery_returns') ?>:

<block type="cms/block" name="product.delivery_returns" as="delivery_returns">
    <action method="setBlockId"><block_id>delivery_returns</block_id></action>
</block>

1
আমি এটা জানতাম না। অসাধারণ.
ফিলিঙ্কল

এটিকে ব্লক ক্যাশে করার বিষয়ে কিছু সমস্যা দেয় M এই নির্দিষ্ট ব্লকের জন্য ম্যাজেন্টো ক্যাশে বন্ধ করার পাশাপাশি কীভাবে ঠিক করবেন তা নিশ্চিত নন ... :(
জরিস ক্রোস

একাধিক দোকান ছবিসহ ব্লক সঙ্গে Magento ক্যাশে সমস্যার বিষয়ে আরো তথ্য দেখুন community.magento.com/t5/Version-Upgrades/...
Joris ক্রোসে

8

নীচের উত্তরটি মডেলটি লোড করার আগে স্টোর আইডি সেট করার বিষয়ে কথা বলেছে, তবে @ বেনমার্কগুলি নীচের মন্তব্যে উল্লেখ করেছেন যে এটি অপ্রয়োজনীয়, যা ব্লকের _toHtml () এ ঘটে।

অন্যান্য অনেক ম্যাজ মডেলের মতো, মডেলটি লোড করার আগে পছন্দসই স্টোর আইডি সেট করার চেষ্টা করুন :

$deliveryBlock = Mage::getModel('cms/block')
                     ->setStoreId(Mage::app()->getStore()->getId())
                     ->load('delivery_returns');

echo $deliveryBlock->getTitle();

/**
 * You shouldn't print the content directly (although I'm assuming it's for debugging purposes only).
 * Use the code below, so as the possible content directives (the "{{ }}" thingies) would be interpreted.
 * Check out Mage_Cms_Block_Block::_toHtml().
 */
echo Mage::helper('cms')->getBlockTemplateProcessor()
                        ->filter($deliveryBlock->getContent());

2
প্রয়োজনীয় নয় - cms/blockরেন্ডারিংয়ের সময় এটি করে; দেখুন Mage_Cms_Block_Block::_toHtml()(লিঙ্ক)
বেনমার্কগুলি

তুমি ঠিক বলছো. অদ্ভুত, আমি লক্ষ্য করেছি না। এমনকি আপনি ওপিকে সেই পদ্ধতির দিকেও নির্দেশ করছেন যা আপনি বলছেন।
নেভভারমাইন্ড

আসলে, ব্লকটি পাওয়ার সময় , ম্যাজ স্টোর আইডি সেট করে। যদিও আমি সরাসরি মডেলটি ইনস্ট্যান্ট করেছি এবং এতে স্টোর আইডি সেট নেই। দেখুন Mage_Cms_Block_Block::_toHtml()
নেভভারমাইন্ড

আপনি কী বলতে চাইছেন তা সম্পর্কে আমি নিশ্চিত নই - আমি Mage_Core_Model_Blockস্টোর আইডি সেট করে এমন কোনও কিছুই দেখি না ।
বেনমার্কগুলি

এটি যে ব্লকটির বিষয়ে আমি কথা বলছি তা নয়, তবে Mage_Cms_Block_Block
নেভারভারমাইন্ড

4

আমি কয়েকটি উপায়ে একটিতে এটি সম্পাদন করেছি:

  1. কেবল আলাদা স্ট্যাটিক ব্লকের নাম ব্যবহার করুন, অনুলিপি করুন এবং অনুবাদ করুন এবং এটি আপনার থিমে আলাদাভাবে উল্লেখ করুন।
  2. আপনি নীচের কাজটি বাস্তবায়নের মাধ্যমে যে কোনও সেন্টিমিটার, স্ট্যাটিক ব্লক পৃষ্ঠাতে text {{অনুবাদ পাঠ্য = "পাঠ্য অনুবাদ করতে" "} use" ব্যবহার করতে পারেন:

    • কপি অ্যাপ্লিকেশন / কোড / কোর / পুরোনো যাদুকর / কোর / মডেল / ইমেইল / টেমপ্লেট / Filter.php করার অ্যাপ্লিকেশন / কোড / স্থানীয় / পুরোনো যাদুকর / কোর / মডেল / ইমেইল / টেমপ্লেট / Filter.php এবং নিম্নলিখিত সংশোধন:

-

public function translateDirective($construction)
{
    $params = $this->_getIncludeParameters($construction[2]);
    $text = $params['text'];
    return Mage::helper('page')->__($text);
} 

আরও তথ্য / উত্স:

http://jagdeepbanga.com/blog/magento_how_add_translation_ability_into_cms_page_or_static_block.html


হ্যাঁ, আমি সেই সমাধানগুলি দেখেছি। তবে দু'টিই কাজের ক্ষেত্র। প্রথমে এক পদ্ধতির সাহায্যে আমার পণ্য প্রতিলিপি করতে হবে every প্রতিটি স্টোর ভিউয়ের জন্য ভিউ.এফটিএমএল। পদ্ধতি 2 এর জন্য .csv ফাইল সম্পাদনা প্রয়োজন। সুতরাং দু'জনই অ-বিকাশকারী ক্লায়েন্টের সাথে কাজ করার পক্ষে উপযুক্ত নয়। এটি করার উপযুক্ত উপায় নেই? আমার পদ্ধতির সাহায্যে ক্লায়েন্ট স্থিতিশীল ব্লক সামগ্রী তৈরি এবং পরিবর্তন করতে পারে এবং এটি হেডার_লিংক এবং পাদচরণের লিঙ্কগুলির সাথে কাজ করে। ডেলিভারি_রেটসের সাথে কেন কাজ করবেন তা আমি বুঝতে পারি না: এস
রুটার

আমি চাই যে একটি 'সহজ' উপায় ছিল - এটি পরিচালনা করার একমাত্র অন্য উপায় হ'ল এজ্যাক্সের মাধ্যমে সামগ্রীটি টানতে এবং এটি কোনও বাহ্যিক উত্স থেকে লোড করা।
ফিলিভিঙ্কল

এফডাব্লুআইডাব্লু - সমাধান 2 দিয়ে আমার দুর্দান্ত ভাগ্য হয়েছে; আমি উভয়ই নিয়মিত ব্যবহার করি।
ফিলিভিঙ্কল

আমি আজাক্স সম্পর্কে ভেবেছিলাম, তবে এটি ক্লায়েন্টের পক্ষে সামগ্রী পরিবর্তন করা আরও জটিল করে তোলে। আমার ধারণা আমি আপনার পদ্ধতিটি 1 টি বেছে নেব এবং প্রতিটি ভাষার জন্য আলাদা ভিউ.এফটিএমএল ফাইল তৈরি করব। যদি খুব শীঘ্রই কেউ আরও ভাল সমাধান নিয়ে না আসে, আমি আপনার উত্তরটিকে স্বীকৃত হিসাবে চিহ্নিত করব। টিএনএক্স যাই হোক!
রুটার

1

আপনি এই উত্তরটির উপর ভিত্তি করে আমি তৈরি একটি মডিউল ডাউনলোড করতে পারেন এখান থেকে: https://github.com/miguelbalparda/MB_Translate/ এটি সিএমএস / ব্লক পৃষ্ঠাগুলিতে ম্যাজেন্টোর ইনলাইন অনুবাদক উপলব্ধ করে।


একক লিঙ্কের উত্তরগুলি সেরা নয়। আপনি এক্সটেনশন কি করবেন দয়া করে ব্যাখ্যা করুন। আমি জানি এটি কী করে এবং আমি এটির প্রস্তাব দিই তবে সবার জন্য এটিকে একটু স্পষ্ট করে তুলি।
মারিয়াস

অবশ্যই, এটি সিএমএস / ব্লক পৃষ্ঠাগুলিতে ম্যাজেন্টো-এর ইনলাইন অনুবাদক উপলব্ধ করে।
মবলপর্দা

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