আমি কীভাবে কোনও ব্লক সামগ্রীকে কোনও প্রোডাকশন সাইটে স্থানান্তরিত করব?


24

অবশেষে আমি দ্রুপাল ৮-এর দিকে গুরুত্ব সহকারে তাকাতে শুরু করেছি এবং আমি বিশেষভাবে কনফিগারেশন পরিচালনায় আগ্রহী। আমি এমন কিছু বিষয় নিয়ে এসেছি যা কিছুটা সমস্যাযুক্ত হতে পারে এবং এটি কাস্টম ব্লকের সামগ্রী সম্পর্কিত।

আমি দেখতে পাচ্ছি যে কনফিগারেশন ম্যানেজমেন্ট সিস্টেম ব্লক কনফিগারেশন - অঞ্চল, থিম, ওজন, দৃশ্যমানতা ইত্যাদি রফতানি করতে সক্ষম হয় তবে কনফিগার এক্সপোর্টে প্রকৃত ব্লক সামগ্রীটি আসে না, যা যুক্তিসঙ্গত এবং বোধগম্য।

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

কাস্টম ব্লকগুলি কোনও ডেভ / স্টেজিং সার্ভার থেকে একটি প্রোডাকশন সার্ভারে স্থানান্তরিত করা যায়? আমি বুঝতে পারি যে ড্রুপাল 8-এ ব্লকগুলি নোডের মতো ক্ষেত্রযোগ্য সত্তা এবং তাই একইভাবে স্থানান্তরিত করা দরকার এবং আমি বুঝতে পারি দ্রুপাল 8-তে একটি মাইগ্রেট এপিআই রয়েছে তবে এটি ড্রুপাল 6 এবং 7 সাইট থেকে সামগ্রী স্থানান্তরের জন্য নির্মিত বলে মনে হচ্ছে দ্রুপাল 8 ড্রুপাল 8 থেকে দ্রুপাল 8 সাইটগুলির বিপরীতে।

এই ইস্যুটি বিশেষত কাস্টম ব্লক সম্পর্কিত কারণ অন্যান্য মডিউলগুলির দ্বারা নির্মিত ব্লক যেমন ভিউগুলি অবশ্যই কনফিগারেশন হিসাবে স্থানান্তরিত হবে।

blocks  8 

মোতায়েন মডিউল এবং অ্যান্টিপাইলট ডটকম (অস্বীকৃতি, এটি আমার পণ্য) সহ কাজগুলিতে বেশ কয়েকটি সামগ্রী মঞ্চায়ন সমাধান রয়েছে
লরোলান

উত্তর:


7

আমি এখানে উল্লিখিত না হওয়া অন্য উত্তরটি হ'ল সিম্পল ব্লক মডিউলটি ব্যবহার করা , যা কোরের 'কাস্টম ব্লক' সেটআপের সাথে প্রায় একই রকম, তবে সামগ্রী + কনফিগারেশনের একটি অদ্ভুত সংকর পরিবর্তে আপনার সমস্ত ব্লক সেটিংস এবং সামগ্রী রয়েছে কনফিগারেশনে সঞ্চিত, যা পরিষ্কারভাবে রফতানি এবং আমদানি করা যায়।

দেখুন, ড্রুপাল 8 কোর সম্পর্কে আরও আলোচনার জন্য: কাস্টম ব্লকগুলি সঠিকভাবে রফতানি এবং আমদানি করা যায় না


3

আমি স্রেফ একটি অবদানযুক্ত মডিউল প্রকাশ করেছি যা এটি সমাধান করে। মূলত, মডিউলটি কনফিগারেশন (ফিক্সড ব্লক) এর উপর ভিত্তি করে এক ধরণের ব্লক সরবরাহ করে যা একটি কাস্টম ব্লক (সামগ্রী ব্লক) মোড়ানো করে। যদি সামগ্রী ব্লকটি বিদ্যমান না থাকে তবে এটি একটি ডিফল্ট সামগ্রী সহ তৈরি করা হয় বা কোনও ডিফল্ট সামগ্রী সেট না করা হলে খালি থাকে। সমস্ত কিছুই ইউআইয়ের মাধ্যমে করা হয়, কোনও বিশেষ ফাইল বা কাস্টম মডিউল প্রয়োজন হয় না।

আমি এটিকে ফিক্সড ব্লক সামগ্রীর নাম দিয়েছি এবং এটি এখানে প্রকাশিত হয়:

https://www.drupal.org/project/fixed_block_content


1

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

<?php
/**
* Import a piece of content exported by default content module.
*/
function example_import_default_content($path_to_content_json) {
  list($entity_type_id, $filename) = explode('/', $path_to_content_json);
  $p = drupal_get_path('profile', 'guts');
  $encoded_content = file_get_contents($p . '/content/' . $path_to_content_json);
  $serializer = \Drupal::service('serializer');
  $content = $serializer->decode($encoded_content, 'hal_json');
  global $base_url;
  $url = $base_url . base_path();
  $content['_links']['type']['href'] = str_replace('http://drupal.org/', $url, $content['_links']['type']['href']);
  $contents = $serializer->encode($content, 'hal_json');
  $class = 'Drupal\\' . $entity_type_id . '\Entity\\' . str_replace(' ', '', ucwords(str_replace('_', ' ', $entity_type_id)));
  $entity = $serializer->deserialize($contents, $class, 'hal_json', array('request_method' => 'POST'));
  $entity->enforceIsNew(TRUE);
  $entity->save();
}

8 এর আইডি সহ একটি কাস্টম ব্লক রফতানি করুন:

drush dcer block_content 8

(আপনি যদি ড্রশ সেটিংসে আপনার প্রোফাইলের পথটি সেট না করেন তবে আপনাকে উপরে এটি নির্দিষ্ট করতে হবে))

এবং ফলস্বরূপ রফতানিটি আপনার উদাহরণে ইনস্টল করুন.এর মতো ফাইল ইনস্টল করুন:

<?php
/**
* Add the footer block content.
*
* Implements hook_update_N().
*/
function example_update_8001() {
  example_import_default_content('block_content/136efd63-021e-42ea-8202-8b97305cc07f.json');
}

http://data.agaric.com/easily-add-content-update-hooks-use-default-content-module-exports-create-content-needs-be-sync-conf


0

আমি নিশ্চিত নই যে একাধিক পরিবেশের মধ্যে ব্লক কনফিগারেশনগুলি সিঙ্ক করার কোনও শক্তিশালী সুবিধা আমি দেখতে পাচ্ছি কারণ কন্টেন্টের সাথে ব্লকগুলি এতটাই জড়িত।

এর কারণ হ'ল yML ফাইলগুলি থেকে একটি নতুন ব্লক তৈরি হচ্ছে যার শিরোনাম / বডি (সামগ্রী) নেই এবং তাই 'ভাঙ্গা / নিখোঁজ' বার্তা দিচ্ছে।

আপনি ইউইউডি করার চেষ্টা করতে পারেন (যদি আপনি উভয় স্থানেই ব্লক তৈরি করতে চান - আপনার বিকাশের ব্লক_সামগ্রী সারণিতে মেশিনের নাম মেলে কিনা তা নিশ্চিত করুন) আপনার উত্পাদনে যে ইউইডি রয়েছে তা মিলছে (অন্যান্য সম্পর্কগুলি সত্তাটি ব্যবহার করে বলে মনে হচ্ছে) ID)। তারপরে, আপনি যখন একটি কনফিগার সিঙ্ক করেন তখন আপনি yML ফাইলগুলিতে 'দেখুন পার্থক্য' দেখতে পাবেন এবং সম্ভবত প্রোডাকশন uuids এর সাথে মেলে এটির জন্য আপনাকে আরও কী পরিবর্তন করতে হবে তা দেখতে পেলাম, তবে এটি এখনও কাজ করে ফেলেছি still কোডে আপনার সমস্ত ব্লক কনফিগারেশন উপেক্ষা করা সহজ আপনি যদি না এই প্রক্রিয়াটি অবলম্বন করেন বা ব্লক_ কনটেন্ট, ব্লক_ কনটেন্ট_বডি এবং ব্লক_ কনটেন্ট_ফিল্ড_ডাটা ব্যবহার করে নিজের জন্য কোনও ধরণের ডাটাবেস ব্লক সিঙ্ক তৈরি করেন।

এটি খুব মার্জিত নয় তবে আপনাকে কোডটিতে আপনার ব্লক কনফিগারেশন রাখতে দেয়। অন্যথায়, আপনি যদি কনফিগারেশনের মাধ্যমে ব্লক মোতায়েন করে রাখেন তবে সেগুলি সর্বদা 'ভাঙ্গা বা অনুপস্থিত' থাকবে।

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


0

একই সমস্যা থাকা এবং আসলেই সমাধান নয়, কেবল যুক্তগুলি: সহযোগিতামূলক বিকাশে আমরা একটি স্টেজিং সার্ভার ব্যবহার করছি যা সংগ্রহস্থল থেকে টানা এবং সমস্ত কনফিগারেশন পুনরায় সেট করে। এর অর্থ হ'ল ব্লক কনফিগারেশন স্বয়ংক্রিয়ভাবে পুনরায় সেট করা হচ্ছে, আপনি কেবল সেই সার্ভারে "সামগ্রী" হিসাবে বিবেচিত ব্লকগুলি সরাসরি রাখতে পারবেন না।

আপনি কী করেছেন তা সঠিকভাবে জেনে গিয়ে কোনও কনফিগারেশন পরিবর্তনগুলি মোতায়েনের জন্য বোঝানো হচ্ছে তা নিশ্চিত করে ড্রশ কনফিগার-এক্সপোর্ট সিঙ্ক ব্যবহার করা সহজ। তবে ড্রুপাল আমাদের জন্য সিদ্ধান্ত নিয়েছে যে ব্লকগুলি কনফিগারেশন (স্পষ্টতই ব্লক সামগ্রীগুলি সামগ্রী হিসাবে পরিচালিত হয়)। সুতরাং এটি নকশা দ্বারা ভাঙ্গা বলে মনে হচ্ছে।

প্রদত্ত সময়ের জন্য আমি গণনা করা সবচেয়ে ব্যবহারিক সমাধান হ'ল .gitignore এ ব্লক-সম্পর্কিত yML ফাইল যুক্ত করা।


1
কনফিগ উপেক্ষা করুন .gitignore চেয়ে সম্ভবত উত্তম: drupal.org/project/config_ignore
bdanin

0

আমিও নিশ্চিত নই, তবে, যদি আপনি কোনও সমাধান না পান তবে আপনি এই মডিউলটি https://www.drupal.org/project/deploy দেখতে পাবেন । সত্য কথা বলতে গেলে, আমি মনে করি না ডিইভি থেকে পিআরডি-তে ধাক্কা ব্লক স্থাপন করতে পারে বা না।


0

আমি মনে করি এটি হ্যান্ডেল করার সর্বোত্তম উপায় হ'ল:

এটি আমি সাধারণত লোকজন ব্যবহার করতে দেখি এবং আমি ব্যক্তিগতভাবে ব্যবহার করি। তবে এটি কেবলমাত্র ব্লক সামগ্রীর তুলনায় সম্পূর্ণ ডাটাবেস সিঙ্ক করে।


ডাটাবেস ওভাররাইটে সমস্যা না থাকলে এটি কাজ করতে পারে। এখন, যদি একমাত্র ইচ্ছাটি একটি নতুন কাস্টম ব্লকটিকে একটি বিদ্যমান ডাটাবেসে স্থানান্তরিত করা হয় তবে এই পদ্ধতিটি কার্যকর করা কঠিন।
করোলাস

এই উত্তরটির নিজস্ব অবস্থান রয়েছে, তাত্ত্বিকভাবে। তবে বাস্তবে, এটি কোনও ভাল সমাধান নয়, বিশেষত যদি প্রকল্পটি কনফিগারেশন বিভাজন ব্যবহার করে, বা পরিবেশের মধ্যে কোনও আলাদা কনফিগারেশন থাকে (যা খুব সম্ভবত)।
কমলেনিক

0

স্ট্রাকচার সিঙ্ক মডিউলটিতে দয়া করে হাত দিন ।

স্ট্রাকচার সিঙ্কটি কনফিগারেশন হিসাবে বিবেচিত হতে পারে এমন সামগ্রী সিঙ্ক্রোনাইজ করার জন্য ড্রশ কমান্ড এবং অ্যাডমিন ইন্টারফেস স্ক্রিন সরবরাহ করে। মেনু আইটেমগুলি, কাস্টম ব্লক এবং বিভাগের শর্তাদি অন্তর্ভুক্ত।

পদক্ষেপ:

  1. স্ট্রাকচার সিঙ্কে যান।
  2. ব্লক ট্যাবে যান।
  3. রপ্তানি।
  4. আপনার কনফিগারেশন এবং সামগ্রী কনফিগারেশন ফোল্ডারে রফতানি হবে।
  5. অন্যান্য সাইটগুলিতে কনফিগারেশনগুলি নিন এবং আমদানি করুন।
  6. কাঠামো সিঙ্ক এ যান এবং আমদানিতে ক্লিক করুন।
  7. সম্পন্ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.