মতামত উন্মুক্ত ফর্ম থিম কিভাবে?


12

আমি বেশ কয়েকটি উন্মুক্ত ফিল্টার সহ একটি ভিউ তৈরি করেছি, তবে এটি দেখতে বেশ কুরুচিপূর্ণ।

এখানে চিত্র বর্ণনা লিখুন

ফিল্ডসেটে পুরো জিনিসটি মুড়িয়ে ফেলার পাশাপাশি অন্যান্য উপাদানগুলির কয়েকটি গ্রুপ করা (যেমন প্রকাশিত এবং আপডেট হওয়া ইনপুটগুলির জুড়ি দেওয়া) সহ আমি থেরিংয়ের উন্নতি করতে চাই, তবে কীভাবে এটি করবেন তা নিশ্চিত নই।

আমি ফর্মটি var_dump করার চেষ্টা করেছি, তবে মনে হয় এটি চিরদিনের জন্য চলেছে এবং আমার ব্রাউজারটি লক হয়ে গেছে, তাই আমি সহজেই ফর্মটি সম্পর্কে কিছু শিখতে পারি না।

আমি ফিল্ডসেট শিশু হিসাবে ফর্মটি অন্য একটি ফর্মের মধ্যে রাখার চেষ্টাও করেছি, তবে সমস্ত ফর্ম আইডির তথ্য পেয়েছি এবং সমস্যাযুক্ত প্রমাণিত হয়েছে (যদিও, আমি ফিল্ডসেট স্টাইলিং পেয়েছি)।

কেউ কি কোন পয়েন্টার পেয়েছে?

হালনাগাদ:

আমি মডিউলটি আমার সাইটের থিম ডিরেক্টরিতে টেমপ্লেটটিতে অনুলিপি করেছি এবং একটি সূচনা করেছি।

<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>

তারিখের ক্ষেত্রগুলি কীভাবে যুক্ত করা যায় তা আমি বুঝতে পারি না - আমাকে কোনওভাবে উইজেট বৈশিষ্ট্যগুলি সংশোধন করতে হবে যাতে আমি এগুলি এইচটিএমএলগুলিতে গুটিয়ে রাখতে পারি (হুক_ফর্ম_াল্টার ব্যবহার করে কাজ হয় না কারণ # প্রাকফিক্স এবং # সুফিক্স যোগ করা হয়েছে $widget->widgetতাই তারা আউটপুট বিরতি)

উত্তর:


22

থিমিং ভিউজের উন্মুক্ত ফর্মটি শক্ত কারণ এটি বেশিরভাগ ফর্মের মতো আচরণ করে না এবং নিজস্ব লেবেল প্রক্রিয়াটি ব্যবহার করে না। সুতরাং, আপনি উপাদানগুলি 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>

7

আপনি টেমপ্লেটটিকে ওভাররাইড করতে আপনার থিমের পথে সাইটগুলি / সমস্ত / মডিউল / ভিউ / থিম থেকে দর্শন-এক্সপোজড-form.tpl.php অনুলিপি করতে পারেন।


এছাড়াও আপনি শুধুমাত্র মতো প্যাটার্নগুলি সঙ্গে নির্দিষ্ট দেখা ওভাররাইড করতে পারে views-exposed-form--view_id.tpl.phpবা views-exposed-form--view_id--display_id.tpl.php, আরও তথ্যের
user56reinstatemonica8

3

এছাড়াও কটাক্ষপাত করা বেটার উন্মুক্ত ফিল্টার মডিউল। সংযোগযোগ্য ফিল্টার বিকল্পগুলি পেতে আপনার -দেব প্রকাশের প্রয়োজন হবে, যদিও আমি শীঘ্রই একটি উপযুক্ত 1.1 প্রকাশ প্রকাশ করব বলে আশা করছি ...


3

form['#theme']আইটেমটি কী তা আপনার খতিয়ে দেখা উচিত । এটি করার সর্বোত্তম উপায় (এর চেয়ে ভাল var_dump()) ব্যবহার করা dsm($form)বা এমনকি ব্যবহার করা kpr($form)হবে, আপনি ডিভেল মডিউলটি ইনস্টল করার পরে এই ফাংশনগুলি উপলভ্য হবে ( http://drupal.org/project/devel )। form['#theme']প্রায় 7 টি উপাদানের একটি অ্যারে হওয়া উচিত। এই উপাদানগুলি থিম হুকের নাম যা এই ফর্মটি যখন রেন্ডার করা হয় তখন ডাকা হয়। আপনি ফর্ম থিম করার নিজস্ব নিজস্ব পদ্ধতি প্রয়োগ করতে এগুলি ব্যবহার করতে পারেন।

একটি আইটেম কল করা হবে views_exposed_form__VIEW_NAME__DISPLAY_ID

আপনার মডিউলে (যদি আপনার একটি থাকে) সেখানে হুক_থেম () প্রয়োগ করা উচিত

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";
}

2

পূর্ববর্তী পরিস্থিতিতে আমি হুক_ফর্ম_ল্টার () ব্যবহার করে উপসর্গ যুক্ত করতে উপসর্গ এবং প্রত্যয় যুক্ত করে সেগুলি ডিভগুলিতে গুটিয়ে রাখি যা পরে স্টাইল করা যেতে পারে। যদিও ফিল্ডসেটে মোড়ানো সম্পর্কে নিশ্চিত নয়।

যেমন।

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

1

ফর্মটি পরিবর্তন করতে দ্রুপালের হুক_ফর্ম_এফএআরএম_আইডি_এল্টার ব্যবহার করুন। এটিই আমার দাম ক্ষেত্রের একটি £ চরিত্রের উপসর্গের সমস্যাটি সমাধান করেছে (এটি আপনার কাস্টম মডিউলে রাখুন):

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'] = "£";
   }
}


0

একটি দৃশ্যের সম্পাদনা পৃষ্ঠায় আমরা থিমের তথ্য (নীচের ডানদিকে) পরীক্ষা করতে পারি। এটি স্ক্রিনে ভিউয়ের বিভিন্ন অংশ রেন্ডার করার জন্য দ্রুপাল দ্বারা ব্যবহৃত টেম্পলেট ফাইল সম্পর্কিত তথ্য দেয়। ডিফল্টরূপে ভিউ মডিউল দ্বারা সরবরাহিত টেম্পলেট ফাইলগুলি (এর থিম ফোল্ডারের অভ্যন্তরে) ব্যবহৃত হয়, তবে ক্ষেত্রে যেখানে আমরা একটি ভিউ প্রদর্শিত হয় সেভাবে পরিবর্তন করতে চাই যেখানে আমরা আমাদের টেম্পলেট ফাইলগুলিকে কাস্টম টেম্পলেট ফাইলগুলি ওভাররাইড করতে পারি যা আমরা আমাদের ভিতরে রাখতে পারি নিজস্ব কাস্টম থিম ফোল্ডার (বা যে থিমটি এই দর্শনটি প্রদর্শন করতে ব্যবহৃত হবে)

এই থিম তথ্যটি আমাদের দেখায় যে স্তরক্রম অনুসারে কোনও ফাইলের নামকরণ কীভাবে করা যায় (বা আপনি যে টেম্পলেট ফাইলটির প্রভাবের ক্ষেত্র যা দেখায় তার নিজস্ব টেমপ্লেটগুলি ওভাররাইড করতে পারেন))

এখন, এই থিমের তথ্যটি সমস্ত নির্দিষ্ট টেম্পলেট ফাইলগুলি না দেখাতে পারে যা ভিউ এই নির্দিষ্ট ভিউটি রেন্ডার করতে ব্যবহার করে।

সুতরাং, সাইটগুলিতে যান / সমস্ত / মডিউল / ভিউ / থিম এবং দেখুন-অনাবৃত-form.tpl.php অনুলিপি করুন (কারণ এই ক্ষেত্রে আমরা ফিল্টারগুলি রেন্ডারিংয়ের জন্য ডিফল্টকে ওভাররাইড করতে চাই!) এবং এটি আপনার নিজের থিম ফোল্ডারের ভিতরে পেস্ট করুন, আপনার নিজের থিম ফোল্ডারটির নাম অনুসারে এর নাম পরিবর্তন করে রেখে দেওয়া এই ওভাররাইডিং টেম্পলেট ফাইলটির প্রভাব নিয়ন্ত্রণ করতে এখন আপনাকে একই পদ্ধতি অনুসরণ করতে হবে। যেমন- ভিউ-এক্সপোজড-ফর্ম - আপনার দর্শন নাম-ফলক নাম.tpl.php (আপনি থিমটি দেখে নামটি বুঝতে পারবেন: ভিউয়ের সম্পাদনা পৃষ্ঠায় তথ্য)

এখন আপনি এই টেম্পলেট ফাইলটিতে পৃথক উইজেটগুলিতে (ফিল্টার হ্যান্ডলার দ্বারা উত্পন্ন) সিএসএস যুক্ত করতে পারেন এবং সেটিংগুলি ফিল্টারগুলিতে প্রয়োগ করা হবে।

পরিদর্শন http://eureka.ykyuen.info/2011/07/25/drupal-theme-the-exposed-filter-in-views/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.