it-swarm.asia

كيف تصمم شكل المشاهدات المكشوفة؟

لقد قمت بإنشاء طريقة عرض بعدد من المرشحات المكشوفة ، لكنها تبدو قبيحة جدًا.

enter image description here

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

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

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

أي شخص لديه أي مؤشرات؟

تحديث:

لقد قمت بنسخ النموذج من الوحدة النمطية إلى دليل السمات الخاص بموقعي ، وبدأت.

<fieldset>
    <legend>Filters</legend>

    <div class="views-exposed-form">
        <div class="views-exposed-widgets clear-block">
            <?php foreach($widgets as $id => $widget): ?>
                <div class="views-exposed-widget">
                    <?php if (!empty($widget->label)): ?>
                        <label for="<?php print $widget->id; ?>">
                            <?php print $widget->label; ?>
                        </label>
                    <?php endif; ?>
                    <?php if (!empty($widget->operator)): ?>
                        <div class="views-operator">
                            <?php print $widget->operator; ?>
                        </div>
                    <?php endif; ?>
                    <div class="views-widget">
                        <?php print $widget->widget; ?>
                    </div>
                </div>
            <?php endforeach; ?>
            <div class="views-exposed-widget">
                <?php print $button ?>
            </div>
        </div>
    </div>
</fieldset>

يبدو أنني لا أستطيع معرفة كيفية إقران حقول التاريخ - أحتاج إلى تعديل خصائص الأداة بطريقة ما حتى أتمكن من لفها بتنسيق HTML (لا يعمل استخدام hook_form_alter لأنه يتم إضافة #prefix و #suffix إلى $widget->widget حتى يكسروا الناتج)

12
HorusKol

الشكل المكشوف لـ Theming Views صعب لأنه لا يتصرف مثل معظم النماذج ويستخدم آلية التسمية الخاصة به. لذا ، لا يمكنك ببساطة استخدام form_alter ربط لإضافة #prefix و #suffix للعناصر. ولكن باستخدام THEME_preprocess_views_exposed_form ، يمكنك صياغة آلية اللاحقة/البادئة الخاصة بك:

function THEME_preprocess_views_exposed_form(&$variables) {
  if ($variables['form']['#id'] == 'views-exposed-form-VIEWNAME-DISPLAYID') {
    foreach ($variables['widgets'] as $id => &$widget) {
      switch ($id) {
        case 'first_date_id':
          $widget->prefix = '<div class="date-widgets-wrapper">';
          break;
        case 'last_date_id':
          $widget->suffix = '</div>';
          break;
      }
    }
  }
}

وفي ملف القالب

<fieldset>
    <legend>Filters</legend>

    <div class="views-exposed-form">
        <div class="views-exposed-widgets clear-block">
            <?php foreach($widgets as $id => $widget): ?>
                <?php if (!empty($widget->prefix)) print $widget->prefix; ?>
                <div class="views-exposed-widget">
                    <?php if (!empty($widget->label)): ?>
                        <label for="<?php print $widget->id; ?>">
                            <?php print $widget->label; ?>
                        </label>
                    <?php endif; ?>
                    <?php if (!empty($widget->operator)): ?>
                        <div class="views-operator">
                            <?php print $widget->operator; ?>
                        </div>
                    <?php endif; ?>
                    <div class="views-widget">
                        <?php print $widget->widget; ?>
                    </div>
                </div>
                <?php if (!empty($widget->suffix)) print $widget->suffix; ?>
            <?php endforeach; ?>
            <div class="views-exposed-widget">
                <?php print $button ?>
            </div>
        </div>
    </div>
</fieldset>
22
Pierre Buyle

يمكنك نسخ طرق عرض يتعرض- form.tpl.php من مواقع/كل/وحدات/طرق عرض/سمة إلى مسار السمة الخاص بك لتجاوز القالب.

7
Adam S

يجب أن تنظر إلى ما يوجد في عنصر form['#theme']. أفضل طريقة للقيام بذلك (أفضل من var_dump()) هي استخدام dsm($form) أو حتى kpr($form) ، ستكون هذه الوظائف متاحة بعد تثبيت وحدة التطوير (- http://drupal.org/project/devel ). form['#theme'] يجب أن يكون مصفوفة من حوالي 7 عناصر. هذه العناصر عبارة عن أسماء لخطافات السمات التي يتم استدعاؤها عند تقديم هذا النموذج. يمكنك استخدامها لتنفيذ طريقتك الخاصة في تصميم نموذج.

سيتم استدعاء أحد العناصر views_exposed_form__VIEW_NAME__DISPLAY_ID.

في الوحدة الخاصة بك (إذا كان لديك واحدة) يجب أن يكون هناك تنفيذ hook_theme ()

function MYMODULE_theme($existing, $type, $theme, $path) {
  return array(
    'views_exposed_form__VIEW_NAME__DISPLAY_ID' => array(
      'function' => 'my_exposed_form_theme_function',
      'render element' => 'form',
    )
  );
}

// somwhere later in code

function my_exposed_form_theme_function($vaiables) {
  //$vaiables['form'] contains a form array
  //to display a form element call drupal_render($vaiables['form']['some element'])
  //don't forget to call drupal_render($form) 
  //after you are done with rendering individual elements
  //
  //you can use template_preprocess_views_exposed_form() from 
  // views/theme/theme.inc as an example

  return "concatenated results of multiple drupal_render() calls";
}
3
ihor marusyk

نلقي نظرة أيضا على أفضل مرشحات مكشوفة الوحدة. ستحتاج إلى إصدار -dev للحصول على خيار المرشحات القابلة للطي ، على الرغم من أنني آمل في الحصول على إصدار مناسب 1.1 قريبًا ...

3
mikeker

في المواقف السابقة ، استخدمت Hook_form_alter () لإضافة بادئة ولاحقة لتشكيل عناصر لفها في div والتي يمكن بعد ذلك تصميمها. لست متأكدا من التفاف في الحقول بالرغم من ذلك.

على سبيل المثال.

$form['submitted']['full_name']['#prefix'] = '<div class="background">';        
$form['submitted']['message']['#suffix'] = '</div>';
2
Teegan

طرق عرض النموذج المكشوف (D7) الوحدة النمطية ستساعدك مع طرق عرض الأشكال المكشوفة.

1
skorzh

استخدم hook_form_FORM_ID_alter الخاص بـ Drupal لتعديل النموذج. هذا هو ما حل مشكلتي في إضافة حرف £ إلى حقل السعر الخاص بي (ضع هذا في الوحدة النمطية المخصصة):

function THEME_form_views_exposed_form_alter(&$form, &$form_state, $form_id) {
   // check this is the right form
   if ($form['#theme'][0] == 'REPLACE_THIS') {
      // add the prefix
      $form['price']['min']['#prefix'] = "£";
   }
}
1
jackocnr

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

توضح لنا معلومات السمة هذه كيفية تسمية ملف وفقًا للتسلسل الهرمي (أو نطاق تأثير ملف القالب الذي ستقوم بإلغاء قوالب طرق العرض الخاصة به.)

الآن ، قد لا تظهر معلومات السمة هذه جميع ملفات القالب التي تستخدمها طريقة العرض لتقديم هذا العرض المحدد.

لذلك ، انتقل إلى المواقع/كل/وحدات/طرق العرض/السمة وانسخ ملف طرق العرض -العرض- form.tpl.php (لأننا في هذه الحالة نريد تجاوز الإعداد الافتراضي لعرض الفلاتر!) ولصقه داخل مجلد السمة الخاص بك ، الآن عليك اتباع نفس الطريقة للتحكم في تأثير ملف القالب المهيمن هذا الذي وضعته داخل مجلد السمة الخاص بك عن طريق إعادة تسميته وفقًا لذلك. على سبيل المثال طرق عرض مكشوفة - طريقة عرض جزء اسم العرض ..tpl.php (ستفهم التسمية من خلال النظر إلى الموضوع: معلومات في صفحة تحرير طريقة العرض)

يمكنك الآن إضافة css إلى أدوات فردية (تم إنشاؤها بواسطة معالجات عوامل التصفية) في ملف القالب هذا وسيتم تطبيق هذه الإعدادات على عوامل التصفية.

قم بزيارة http://eureka.ykyuen.info/2011/07/25/drupal-theme-the-exposed-filter-in-views/

0
dresh