كيف يمكنك إزالة العنوان الافتراضي وحقول النص في نوع محتوى Drupal الذي تم إنشاؤه بواسطة CCK؟

StackOverflow https://stackoverflow.com/questions/89672

  •  01-07-2019
  •  | 
  •  

سؤال

عندما تقوم بإنشاء نوع محتوى جديد في Drupal باستخدام Content Creation Kit، فإنك تحصل تلقائيًا على حقلي العنوان والنص في النموذج الذي تم إنشاؤه.هل هناك طريقة لإزالتهم؟

هل كانت مفيدة؟

المحلول

إذا لم تكن مطورًا (أو تريد اختصار عملية التطوير)، فإن الحل الآخر الممكن هو استخدام وحدة auto_nodetitle.سيتيح لك عنوان العقدة التلقائي إنشاء قواعد لإنشاء عنوان العقدة.يمكن أن تكون هذه قواعد برمجية، أو رموز مميزة تم استبدالها، أو مجرد نص ثابت.يستحق نظرة إذا لم يكن هناك شيء آخر.

نصائح أخرى

لإزالة النص، قم بتحرير النوع، وقم بتوسيع "إعدادات نموذج التقديم" ثم ضعها فارغة لتسمية حقل النص.بالنسبة للعنوان، يمكنك إعادة تسميته إلى حقل نصي آخر.إذا لم تكن بحاجة حقًا إلى أي حقول نصية، فيمكنك إنشاء وحدة مخصصة، ولنقل تسمى foo، وإنشاء وظيفة foo_form_alter() التي تحل محل $form['title'] بـ #قيمة عندما يكون $form['type']['#value'] هو نوع العقدة لديك.

لا حاجة لتثبيت أي شيء:
عند تعديل نوع المحتوى اضغط على "تحرير"
(في قائمة تحرير | إدارة الحقول | عرض الحقول)
انقر على إعدادات نموذج التقديم

على تسمية حقل النص:
اتركه فارغًا، سيؤدي ذلك إلى إزالة حقل النص.

إذا لم تكن مطورًا (أو كنت ترغب في اختصار عملية التطوير) ، فهو حل آخر ممكن هو الاستفادة من وحدة Auto_nodetitle.سيتيح لك nodetitle التلقائي إنشاء قواعد لإنشاء عنوان العقدة.يمكن أن تكون هذه قواعد برمجية أو رموز يتم استبدالها أو ببساطة نص ثابت.يستحق نظرة إذا لم يكن هناك شيء آخر.

وللإضافة إلى وليام أوكونور حل...

تم توثيق الوحدة بشكل سيئ لسوء الحظ.إنها حقًا فعالة فقط إذا كنت تستخدم PHP معها في رأيي.قم بإلغاء تحديد "تقييم PHP في النمط" واكتب في حقل "نمط العنوان" شيئًا مثل:

<?php echo $node->field_staff_email[0]['email']; ?>

أو:

<?php echo $node->field_staff_name[0]['value'] . '-' . gmdate('YmdHis'); ?>

...حيث كان لدي حقل باسم داخلي "field_staff_email" وكنت أستخدم وحدة البريد الإلكتروني CCK - وبالتالي تم استخدام نوع "البريد الإلكتروني".أو كان لدي حقل باسم داخلي "field_staff_name" وكان مجرد حقل نص عادي - وبالتالي تم استخدام نوع "القيمة".الغرض من استدعاء gmdate()‎ في النهاية هو ضمان التفرد لأنه قد يكون لديك موظفان أو أكثر يحملان نفس الشيء.

الطريقة التي اكتشفت بها كل هذا كانت من خلال التجربة أولاً مع:

<?php print_r($node); ?>

... الأمر الذي أعطى نتائج مجنونة بالطبع، ولكن على الأقل تمكنت من تحليل المخرجات ومعرفة كيفية استخدام كائن $node بشكل صحيح هنا.

لاحظ فقط أنه إذا كنت تستخدم أيًا من إجراءات PHP هذه، فسينتهي بك الأمر بقائمة المحتوى في Drupal Admin التي تعرض الإدخالات تمامًا كما قمت بتشفير PHP.لهذا السبب لم أستخدم gmdate() فقط لأنه قد يكون من الصعب العثور على السجل الخاص بي لتحريره.

لاحظ أيضًا أنك قد تتمكن من استخدام التحويل Base-36 على gmdate() لتقليل حجم الإخراج لأن gmdate('YmdHis') طويل إلى حد ما.

الإجابات الأولية كلها جيدة.تمامًا كفكرة أخرى لجزء العنوان ...ماذا عن إنشاء ملف قالب مخصص لنوع عقدة CCC.يمكنك نسخnode.tpl.php إلىnode-TYPE.tpl.php، ثم تحرير الملف الجديد وإزالة مكان عرض العنوان.(لا تنس مسح ذاكرة التخزين المؤقت الخاصة بك).

القيام بذلك بهذه الطريقة يعني أن كل عقدة لا تزال تحتوي على عنوان، لذلك بالنسبة لإدارة المحتوى، لن يتبقى لديك عناوين فارغة أو أي شيء من هذا القبيل.

هث!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top