it-swarm.asia

كيف تضيف فئة CSS إلى مصفوفة تجسيد؟

في ملف قالب ، قبل 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'] ، لكن ذلك لم ينجح.
هل لديك أي فكرة عن كيف يمكنني تحقيق ما أحاول القيام به؟

6
Mark

أعتقد أنه سيكون:

$content['field_image'][0]['#attributes']['class'][] = 'my-class';

أو لتخصيصه لكل عنصر ،

foreach (element_children($content['field_image'] as $key) {
  $content['field_image'][$key]['#attributes']['class'][] = 'my-class';
}
8
tim.plunkett

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

4
Matt F

تبدو هذه المشكلة ثابتة في جوهر 7.23

في العقدة tpl ، أضف هذا في الأعلى:

<?php
$content['field_name'][0]['#item']['attributes']['class'][] = 'your-class';
?>
2
FVANtom

يمكنك أيضًا فعل شيء كهذا:

  $array['container']['#prefix'] = '<div id = "container">';
  $array['container']['#suffix'] = '</div>';
2
starsinmypockets

إذا كنت بحاجة إلى بعض الشروط لتطبيق الفصل ، فستحتاج إلى جمع معلومات حقول الصفحة.

يمكنك القيام بذلك باستخدام الوظيفة template_preprocess_field(&$variables).

template_preprocess_field(&$variables) {
  if ($variables['element']['#field_type'] == 'image') {
        $variables['items'][0]['#item']['attributes']['class'][] = 'your-class';
  }
}
0
Aporie

لأولئك منكم في "field - field-image.tpl.php" ، استخدم هذا:

$item['#item']['attributes']['class'][] = 'your-class';
0
ben.hamelin

كنت أبحث عن حل مماثل ، ولكن لتصميم عنصر إدخال نموذج وليس صورة. داخل داخل برنامج 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')),
0
rawdesk.be