it-swarm.asia

أفضل طريقة لإسقاط حقل من نوع المحتوى

ما هي أفضل طريقة لإزالة حقل Drupal 7 من نوع محتوى محدد عبر واجهة المستخدم الرسومية؟ أريد استخدام hook_update_N بحيث يمكن نشر التغييرات على خوادم متعددة عند تشغيل update.php. لا يمكنني إيجاد حل. يبدو أن db_drop_table () منطقي بالنسبة للمخططات المعرفة المخصصة ، ولكن ليس لنوع/حقل المحتوى المحدد من خلال واجهة المستخدم الرسومية.

20
amateur barista

هناك وظيفتان لواجهة برمجة التطبيقات لحذف الحقول:

إذا كنت لا تريد إعادة استخدام الحقل ، فقد يكون حذف الحقل بالكامل بدلاً من حذفه على نوع المحتوى المعني أكثر نظافة. أنت فقط يمكن أن تحكم على ذلك.

18
googletorp

نعم ، field_delete_instance () هي وظيفة لحذف مثيلات الحقل.

لاحظ أن 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() إلى حدوث خطأ لأن الجدول لا يزال في الهيكل القديم. ومع ذلك ، يختلف الوضع الخاص بالوحدات المساهمة ، حيث يجب تنفيذها دائمًا بعد جميع التحديثات الأساسية وبالتالي تحتاج إلى العمل مع أحدث إصدار أساسي.

ولكن ، هذا هو النمط الذي قد ترغب في استخدامه لوظائف API الخاصة بك والتي تستخدمها في وظائف التحديث.

بالإضافة إلى ذلك ، لا تقوم دالات _update هذه بتنفيذ عمليات ربط لأن النتيجة غير متوقعة (على سبيل المثال ، لأن الوحدة النمطية التي يتم تشغيل التحديث لها قد تكون معطلة).

9
Berdir