في ملف قالب ، قبل print render($content['field_image']);
أود إضافة فئة CSS إلى الصورة في $content['field_image']
صفيف التقديم. كيف يمكنني أن أفعل هذا؟ إليك مصفوفة التجسيد:
Array
(
[#theme] => field
[#weight] => 2
[#title] => Image
[#access] => 1
[#label_display] => hidden
[#view_mode] => full
[#language] => und
[#field_name] => field_image
[#field_type] => image
[#field_translatable] => 1
[#entity_type] => node
[#bundle] => ll_basic_page
[#object] => stdClass Object
[#items] => Array
(
[0] => Array
(
[fid] => 6777
[alt] => alt text
[title] =>
[uid] => 1
[filename] => imageFile.jpg
[uri] => public://imageFile.jpg
[filemime] => image/jpeg
[filesize] => 28742
[status] => 1
[timestamp] => 1314312382
[rdf_mapping] => Array
(
)
)
)
[#formatter] => image
[0] => Array
(
[#theme] => image_formatter
[#item] => Array
(
[fid] => 6777
[alt] => alt text
[title] =>
[uid] => 1
[filename] => imageFile.jpg
[uri] => public://imageFile.jpg
[filemime] => image/jpeg
[filesize] => 28742
[status] => 1
[timestamp] => 1314312382
[rdf_mapping] => Array ()
)
[#image_style] =>
[#path] =>
)
)
وهذا هو ناتج HTML:
<div class="field field-name-field-image field-type-image field-label-hidden" thmr="thmr_96">
<div class="field-items">
<div class="field-item even">
<span thmr="thmr_97">
<span thmr="thmr_98">
<img typeof="foaf:Image" src="http://..../sites/default/files/imageFile.jpg" alt="alt text" />
</span>
</span>
</div>
</div>
</div>
حاولت إضافة فصل إلى $content['field_image']['#attributes']['class']
، لكن ذلك لم ينجح.
هل لديك أي فكرة عن كيف يمكنني تحقيق ما أحاول القيام به؟
أعتقد أنه سيكون:
$content['field_image'][0]['#attributes']['class'][] = 'my-class';
أو لتخصيصه لكل عنصر ،
foreach (element_children($content['field_image'] as $key) {
$content['field_image'][$key]['#attributes']['class'][] = 'my-class';
}
لم تعمل الحلول المذكورة أعلاه معي (ولم يتم وصفها بوضوح في أي حال). إليك طريقة حل هذه المشكلة بالضبط. ربما هذه ليست الطريقة الأفضل ، وبالتأكيد ليست الوحيدة ، لكنها طريقة "دروبال" صالحة وتعمل. افتح ملف template.php لقالبك.
الصق الوظيفة التالية ، والتي سيكون عليك تعديلها وتخصيصها لسيناريو الاستخدام الخاص بك. على سبيل المثال ، يجب استبدال <TEMPLATENAME>
باسم القالب الخاص بك ، وإضافة أو طرح الفئات حسب الرغبة وأشياء أخرى ، كما سترى.
function <TEMPLATENAME>_preprocess_image(&$variables) {
// If this image is of the type 'Staff Photo' then assign additional classes to it:
if ($variables['style_name'] == 'staff_photo') {
$variables['attributes']['class'][] = 'lightbox';
$variables['attributes']['class'][] = 'wideborder';
}
}
لقد قمت بإنشاء عبارة "if" لتحديد متى يجب إضافة الصف إلى الصورة ، ولكن سيتعين عليك تخصيص ذلك كيفما تشاء - يمكنك حذفه تمامًا إذا كنت تريد فصلًا في جميع صور حقل الصورة ، أو قد يقول if (drupal_is_front_page())
إذا كنت ترغب فقط في تطبيقها على الصفحة الأولى ، إلخ.
في حالتي ، قمت بإنشاء نمط صورة (التكوين> الوسائط> أنماط الصور) لصور الموظفين وأضفت شرط if لتطبيق الفئات المفضلة فقط على الصور الخاصة بهذا النمط المحدد. أعتقد أن هذه طريقة رائعة للقيام بذلك ، ولكن يمكنك أن تفعل ما تريد.
الآن ، عندما أقوم بعرض عقدة تحتوي على حقل صورة بنمط صورة "صور الموظفين" ، تظهر الفئات بشكل سحري في علامة IMG ، وهو ما أحتاجه تمامًا.
تبدو هذه المشكلة ثابتة في جوهر 7.23
في العقدة tpl ، أضف هذا في الأعلى:
<?php
$content['field_name'][0]['#item']['attributes']['class'][] = 'your-class';
?>
يمكنك أيضًا فعل شيء كهذا:
$array['container']['#prefix'] = '<div id = "container">';
$array['container']['#suffix'] = '</div>';
إذا كنت بحاجة إلى بعض الشروط لتطبيق الفصل ، فستحتاج إلى جمع معلومات حقول الصفحة.
يمكنك القيام بذلك باستخدام الوظيفة template_preprocess_field(&$variables)
.
template_preprocess_field(&$variables) {
if ($variables['element']['#field_type'] == 'image') {
$variables['items'][0]['#item']['attributes']['class'][] = 'your-class';
}
}
لأولئك منكم في "field - field-image.tpl.php" ، استخدم هذا:
$item['#item']['attributes']['class'][] = 'your-class';
كنت أبحث عن حل مماثل ، ولكن لتصميم عنصر إدخال نموذج وليس صورة. داخل داخل برنامج commerce_coupon.checkout_pane.inc المخصص الخاص بي ، قمت بإضافة صفيف # سمات يحتوي على الفئات اللازمة.
لذلك إذا كنت تبحث عن حل متشابك للوحدة النمطية بدلاً من القالب المضمن ، فقد يكون هذا بديلاً جيدًا.
يعمل على Drupal 7.39
$pane_form['coupon_add'] = array(
'#type' => 'button',
'#value' => t('Add coupon'),
'#name' => 'coupon_add',
'#limit_validation_errors' => array(),
'#ajax' => array(
'callback' => 'commerce_coupon_add_coupon_callback',
'wrapper' => 'commerce-checkout-coupon-ajax-wrapper',
),
'#attributes' => array('class' => array('btn', 'btn-13')),