it-swarm.asia

كيف أعرض قيمة الحقل بما في ذلك تنسيقها؟

أنا أقرأ قيمة الحقل وتنسيقه من قاعدة البيانات. كيف يمكنني تقديم هذه القيمة بالتنسيق؟

9
SomethingOn

بينما يمكنك قضاء الكثير من الوقت في تشريح كيفية عمل واجهة برمجة التطبيقات الميدانية ، يجب عليك حقًا استخدام واجهة برمجة التطبيقات الميدانية مباشرةً لتقديم المحتوى الميداني بدلاً من الاستعلام عن قاعدة البيانات بنفسك. هناك الكثير من التغليف والتجريد المضاف إلى الحقول التي ستوقظ الآلهة القديمة إذا تم تجاوزها.

باستخدام واجهة برمجة التطبيقات للحقل ، إذا كنت تريد الحقل المنسق بالكامل ، كاملاً مع التسمية وجميع القيم ، فأنت تريد استخدام field_view_field() :

$nid = 1;
$node = node_load($nid);
$output = field_view_field('node', $node, 'field_foo');

// $output is a render array, so it needs to be rendered first
print render($output);

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

// Must load field content for entity before using field_view_value()
$fields = field_get_items('node', $node, 'field_foo');

// $index corresponds to the value you want to render. First value = 0.
$index = 0;
$output = field_view_value('node', $node, 'field_foo', $fields[$index]);

print render($output);

إذا كنت تريد استخدام مُنسق غير الافتراضي المحدد لمثيل الحقل ، فمرره باستخدام المعلمة $display في field_view_field() أو field_view_value():

$display = array('type' => 'my_formatter');
$output = field_view_field('node', $node, 'field_foo', $display);
35
user7

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

1) قم بإعداد fomat لتاريخ مخصص وإعطاء اسم آلة مثل "short_date_only" أو أيا كان. 2) تكوين خيارات العرض لنوع المحتوى لاستخدام هذا التنسيق 3) تجاوز قالب الحقل إلى شيء مثل field - field_date_custom-content_type.tpl

0
Daniel

من خلال التحقق من واجهة برمجة التطبيقات ، أعتقد أنك تبحث عن هذا. (لم أختبر الرمز على أي حال)

$the_field = field_view_field($entity_type, $entity, $field_name, $display = array(), $langcode = NULL);

// render the field
drupal_render($the_field);

تحديث: إجابة مكررة ، قد تحذفني فقط. تم نشر إجابة أخرى أثناء كتابة هذه الإجابة.

0
gilzero

إذا كنت تستخدم الوحدة النمطية Custom Formatters لا تنس إضافة البادئة "custom_formatters_" قبل اسم ماكينة المنسق الخاص بك مثل هذا:

$display = array('type' => 'custom_formatters_my_formatter');
0
Dmitry