কোনও সামগ্রীর ধরণ থেকে ক্ষেত্রটি ফেলে দেওয়ার সর্বোত্তম উপায়


21

জিইউআইয়ের মাধ্যমে সংজ্ঞায়িত করা সামগ্রীর ধরণ থেকে একটি ড্রুপাল 7 ক্ষেত্র সরানোর সর্বোত্তম উপায় কী? আমি hook_update_N ব্যবহার করতে চাই যাতে আপডেট.এফপি চালানোর পরে পরিবর্তনগুলি একাধিক সার্ভারে প্রচার করা যায়। তবে আমি কোনও সমাধান খুঁজে পাচ্ছি বলে মনে হচ্ছে না। db_DP_table () কাস্টম সংজ্ঞায়িত স্কিমাগুলির জন্য আমার কাছে বোধগম্য হবে, তবে GUI এর মাধ্যমে সংজ্ঞাযুক্ত কোনও সামগ্রী / ক্ষেত্রের জন্য নয়।


আপনি একটি সামগ্রীর ধরণের সংজ্ঞা দিতে একটি কাস্টম মডিউল তৈরি করেছেন?
আইস্ট্রিকার 4

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

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

বর্তমানে আমার "প্রার্থী" পাবলিক ফাংশনটি ফিল্ড_ডিলিট_ইনস্ট্যান্স ()।
অপেশাদার বড়স্তা

উত্তর:


18

ক্ষেত্রগুলি মোছার জন্য দুটি এপিআই ফাংশন রয়েছে:

  • field_delete_field পুরো ক্ষেত্রটি (ক্ষেত্রের সমস্ত উদাহরণ) মুছতে
  • field_delete_instance শুধুমাত্র কোনও ক্ষেত্রের উদাহরণ মুছতে - এটি কোনও সত্তার সাথে কীভাবে সংযুক্ত।

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


2
কবজির মতো কাজ করেছেন। ফাংশনটি কোনও যুক্তি ফিরিয়ে দেয় না, সুতরাং একটি হুক_আপডেট_এন () এর সাথে সংমিশ্রণ করার সময় আমি আপনার আপডেটের পরিবর্তনগুলি লগ করতে একটি ওয়াচডগ () করার পরামর্শ দিচ্ছি।
অপেশাদার বড়িস্তা

9

হ্যাঁ, ফিল্ড_ডিলেট_ইনস্ট্যান্স () হ'ল ক্ষেত্রের দৃষ্টান্তগুলি মোছার ফাংশন।

মনে রাখবেন যে যদি অবশিষ্ট কোনও দৃষ্টান্ত না থাকে তবে field_delete_instance()স্বয়ংক্রিয়ভাবে কল করুন field_delete_field(), field_delete_instance()আপনার সম্ভবত যা প্রয়োজন সম্ভবত এটিই ঘটে ।

_update_7000_field_delete_instance()কোর আপডেট ফাংশনগুলির জন্য ডিজাইন করা হয়েছে। উদাহরণ: আপডেট ফাংশনে x_update_7000(), আপনি ব্যবহার করছেন field_delete_instance()। তারপরে x_update_7001(), আপনি {field_config}টেবিলটি একটি বেমানান উপায়ে পরিবর্তন করেছেন এবং field_delete_instance()স্পষ্টতই এটিও পরিবর্তন করা দরকার।

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

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

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

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