ক্ষেত্র মোছার সাথে ওয়ার্কফ্লো ইস্যু বৈশিষ্ট্যযুক্ত


14

ধরুন আমি একটি বিষয়বস্তুর প্রকার আছে Personক্ষেত্রের সাথে: Name, Age,Email

এই সামগ্রীর ধরণটি এমন কোনও বৈশিষ্ট্য দ্বারা নিয়ন্ত্রিত হয় যা testআমি উত্সটি এটি নিয়ন্ত্রণ করতে এবং লাইভ সাইটে ধাক্কা দিতে পারি।

আমার কর্মপ্রবাহ এই রকম:

  • আমি একটি নতুন ক্ষেত্র যোগ PersonনামকPhone
  • স্থানীয়ভাবে আমি করি: drush fu test -y
  • test.infoসংস্করণ সংখ্যা বাড়ানোর জন্য আমি সম্পাদনা করি
  • আমি আমার সংগ্রহস্থলের পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ
  • আমি বৈশিষ্টটিকে লাইভ সাইটে ঠেলাচ্ছি (বৈশিষ্ট্যযুক্ত ফাইলগুলি অনুলিপি করুন)
  • লাইভ সাইটে আমি করি: drush fr test -y
  • লাইভ সাইটে আমি করি: drush cc all

তারপরে লাইভ সাইটগুলিতে নতুন ক্ষেত্রটি উপস্থিত হবে Person

যদি প্রথম পদক্ষেপে আমি ক্ষেত্রের কোনও ক্ষেত্র সরিয়ে ফেলি Personতবে লাইভ সাইট থেকে মুছে ফেলা হবে না। আমি কীভাবে এটি সমাধান করব? আমি লাইভ সাইটে ইউআই থেকে এটি ম্যানুয়ালি মুছে ফেলতে চাই না।
এই কর্মপ্রবাহটি কি সঠিক?


1
সংস্করণ নম্বরটি স্বয়ংক্রিয়ভাবে বর্ধিত করতে ড্রশ ফু পরীক্ষা -y - রূপান্তর-বৃদ্ধি ব্যবহার করুন
মাইকে

উত্তর:


9

এটি একটি দ্বি প্রান্তযুক্ত তরোয়াল, ডেটা মুছে ফেলা রোধ করার জন্য এটি এর মতো যা সর্বদা ভাল জিনিস। আসলে সমাধান করার মতো কিছুই নেই, এটি প্রত্যাশিত আচরণ।

এটি একই ওয়ার্কফ্লো আমরা ব্যবহার করি এবং এক বছর ধরে এটি করে যাচ্ছি এবং এটি সত্যিই ভালভাবে কাজ করে। আমি বলব এটি সঠিক তবে এটি একটি অত্যন্ত বিষয়গত উত্তর।


এবং আমি যদি সত্যিই ক্ষেত্রটি মুছতে চাইতাম? আমি আপডেট হুক সন্ধান করা উচিত? (আমি একজন ডি 7 নবাগত)
চেরোভিম

3
আপডেট হুক আদর্শ হবে, বা ম্যানুয়ালি এটিকে সরিয়ে ফেলবে।
ডিজিটাল

2
ঠিক আছে, আমিও করতে drush field-delete field
পেরেছিলাম

@cherouvim সুতরাং আপনি প্রতিবার কোনও বৈশিষ্ট্য পুনরায় তৈরি করার সময় তা করতে হবে?
অ্যালেক্সভালিজো

বৈশিষ্ট্যের। ইনস্টল ফাইলটিতে একটি হুক_আপডেট_এন () কাজ করবে।
মাইকে

10

বৈশিষ্ট্যগুলি তৈরি করা সামগ্রী মুছে ফেলার সঠিক উপায় হুক_আপডেট_এন (যা ফাইলটিতে প্রয়োগ করা উচিত your_module.install) এর মাধ্যমে।


বৈশিষ্ট্যগুলির সাথে মূল ধারণাটি হ'ল কোড সহ কনফিগারেশন পরিচালনা করা। ব্যবহারটি hook_update_Nতার সাথে সামঞ্জস্যপূর্ণ, যেহেতু ক্ষেত্রটি মোছা কোডে রয়েছে (যা সংস্করণ নিয়ন্ত্রণের সাথে পরিচালনা করা যায়) - যেখানে সমপরিমাণ কমান্ড drush field-delete fieldপরিচালিত কোড থেকে কল করা হচ্ছে না; এটি একটি পৃথক কমান্ড-লাইন পদক্ষেপ যা আপনার সম্পাদন করতে হবে (এবং সঞ্চালনের জন্য মনে রাখা)।


কেন? drush field-delete fieldভাল কাজ করবে না ?
চেরোভিম

5
অবশ্যই, এটি কার্যকর হবে এবং এটি একটি সহজ সমাধান হতে পারে। তবে বৈশিষ্ট্যগুলির সাথে মূল ধারণাটি হ'ল কোড সহ কনফিগারেশন পরিচালনা করা। ব্যবহারটি hook_update()তার সাথে সামঞ্জস্যপূর্ণ, যেহেতু ক্ষেত্রটি মুছে ফেলা কোডে রয়েছে (যা সংস্করণ নিয়ন্ত্রণের সাথে পরিচালনা করা যায়) - যেখানে ড্রাশ কমান্ড পরিচালিত কোড থেকে কল করা হচ্ছে না; এটি একটি পৃথক কমান্ড-লাইন পদক্ষেপ যা আপনার সম্পাদন করতে হবে (এবং সঞ্চালনের জন্য মনে রাখা)।
স্মোক্রিস

কোন বৈশিষ্ট্যের কোন ফাইলটিতে আমি হুক_আপডেট () ব্যবহার করব? হুক_আপডেট () প্যারামিটার হিসাবে নোড অবজেক্ট নেয়, তাই বৈশিষ্ট্যটি সক্ষম করার সময় এটি নোড অবজেক্ট সরবরাহ করা সম্ভব নয়।
subhojit777

@ subhojit777: ওফস, আমি ভুল হুক ডকুমেন্টেশন পৃষ্ঠার সাথে লিঙ্ক করেছি। আমি স্রেফ লিঙ্কটি ঠিক করেছি; দয়া করে দস্তাবেজগুলি দেখুন hook_update_N
স্মোক্রিস

@ স্মোক্রিস :) আমি আমার উত্তরে সেই হুকটি উল্লেখ করেছি
subhojit777

2

"Your_feature_name.install" নামে একটি নতুন ফাইল তৈরি করুন

ফাইলটি হুক_আপডেট_এন ডিক্লেয়ারের ভিতরে , সেখানে আপনি ফিল্ড_ডিলেট_ফিল্ড () ব্যবহার করতে পারেন এবং ক্ষেত্রের নাম নির্দিষ্ট করতে পারেন যা আপনি প্যারামিটার হিসাবে মুছতে চান।

আপডেট.এফপি চালান এবং ক্ষেত্রগুলি মুছে ফেলা হবে।


0

আপনি যদি field_phoneঅন্য ক্ষেত্রে ব্যবহার করে থাকেন তবে আপনি এটি আপনার ব্যক্তিগত সামগ্রী প্রকার থেকে সরাতে চাইবেন তবে এটি পুরোপুরি আপনার সাইট থেকে মুছবেন না। YOUR_FEATURE_NAME.installআপনার বৈশিষ্ট্যের ফোল্ডারে ম্যানুয়ালি একটি ফাইল তৈরি করুন:

/**
 * Implements hook_update_N().
 *
 * Removes field_phone from Person content type.
 */
function YOUR_FEATURE_NAME_update_7001() {
  if ($instance = field_info_instance('node', 'field_phone', 'person')) {
    field_delete_instance($instance);
  }
  field_purge_batch(500);
  features_revert_module('YOUR_FEATURE_NAME');
}

আপনি যদি এটি কোনও ব্যক্তির বিষয়বস্তুর প্রকারের পরিবর্তে একজন ব্যক্তির অনুচ্ছেদে থেকে মুছে ফেলছিলেন তবে আপনি প্রথম শর্তযুক্ত বিবৃতিটিকে এরকম কিছুতে পরিবর্তন করতে পারেন:

if ($instance = field_info_instance('paragraphs_item', 'field_phone', 'person')) {
  ...
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.