তারিখ পরিসীমা দ্বারা একটি দৃশ্য ফিল্টার কিভাবে (শুরু, শেষ)?


18

দ্রুপাল In-এ একটি তারিখের মডিউল সক্ষম হয়েছে এমন দৃশ্যের সাথে , তারিখ অনুসারে ভিউ ফিল্টার করা বেশ সহজ ছিল: ইউআই আপনাকে কেবল এটি করার বিকল্প দিয়েছে।

Drupal এর 8 অবশ্য তারিখ ক্ষেত্র ও মতামত কোর অংশ, কিন্তু যদি আপনি একটি তারিখ বাছুন পরিসীমা আপনার তারিখ নির্দিষ্ট অপশন আর অফার করে না দেখার ফিল্টার হিসাবে ক্ষেত্র, কিন্তু শো আপনি শুধুমাত্র পাঠ্য ক্ষেত্রের জন্য বিকল্পগুলি ফিল্টারিং:এখানে চিত্র বর্ণনা লিখুন

তারিখ সুনির্দিষ্ট বিকল্পগুলি, তবে ´ বিষয়বস্তু: পরিবর্তিত´ এর মতো অভ্যন্তরীণ তারিখের মানগুলির জন্য উপলব্ধ ´ এখানে চিত্র বর্ণনা লিখুন

যেহেতু আমি আসল তারিখের আগে বা তার পরে একটি তারিখ সহ কেবলমাত্র নির্দিষ্ট নোডগুলি দেখাতে চাই, যেখানে তারিখটি একটি কাস্টম তারিখের সীমার ক্ষেত্র দ্বারা নির্দিষ্ট করা আছে, এটি আমার প্রয়োজনের সাথে খাপ খায় না।

তারিখ সুনির্দিষ্ট ক্রিয়াকলাপের সাথে তারিখ ক্ষেত্রের মাধ্যমে আমি কীভাবে দ্রুপাল 8 এ একটি দৃশ্য ফিল্টার করতে পারি?


সঠিক দর্শন ফিল্টারগুলি তারিখের সীমাগুলির জন্য প্রক্রিয়া সংক্রান্ত সমস্যা। প্যাচটি কাজ করে তবে আপডেটের পথটি অত্যন্ত কঠিন।
এমপিডোনাদিও

@ এমপিডোনাদিও আপনি কি প্যাচটির লিঙ্কটি আমাকে সাহায্য করতে পারেন, দয়া করে?
ব্যবহারকারী5950

2
এটি drupal.org/node/2786577 , তবে সতর্ক হতে হবে আপডেটের পথটি পুরোপুরি পরীক্ষিত নয় tested আপনার নিজের ঝুঁকিতে এই প্যাচটি ব্যবহার করুন।
এমপিডোনাদিও

@ পিয়ের.ভ্রিয়েন্স এটি কোনও সদৃশ নয়। এটি সেই ক্ষেত্র সম্পর্কে যা শুরু এবং শেষ তারিখগুলি এবং সেইগুলিতে ফিল্টারিং। শুধু একটি একক মানের ক্ষেত্র নয়।
নেওোগ্রাফ 734

@ নিওগ্রাফ 7373৪ ঠিক আছে, এটি পার্থক্যগুলি আরও ভালভাবে বুঝতে সহায়তা করে (ভোট প্রত্যাহার)। তবে ওপার এই প্রশ্নটি আরও ভালভাবে সম্পাদন করে এটি আসল প্রশ্নেও অন্তর্ভুক্ত করতে (অন্যকে এড়াতে এটিকে নকল হিসাবে উপলব্ধি করতে পারে) ... শুভকামনা!
পিয়ের.ভ্রিয়েন্স

উত্তর:


14

আশ্চর্যজনকভাবে ড্রুপাল 8 দিয়ে এটি এখনও সম্ভব নয়। কিন্তু এটি কাজ করা বের করার চেষ্টা এক দীর্ঘ ইতিহাস হল: https://www.drupal.org/node/2786577 গত প্যাচ , আপনি এই পোস্টে খুঁজতে হয়েছে বলে মনে হয়। আপনি নিম্নলিখিত আদেশগুলি ব্যবহার করে এটি ডাউনলোড এবং প্রয়োগ করতে পারেন:

wget https://www.drupal.org/files/issues/improve_the_views-2786577-76-core.patch
git apply improve_the_views-2786577-76-core.patch

যদি gitআপনার সার্ভারে উপলব্ধ না হয়, চেষ্টা করুন:

patch -p1 < improve_the_views-2786577-76-core.patch

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


আপনি দয়া করে আমাকে কীভাবে প্যাচটি প্রয়োগ করবেন তা আমার জন্য কাজ করছে না বলুন !! @ ব্যবহারকারী5950
মেক-

প্যাচ -p1 <উন্নত_পরিচিত_দর্শনগুলি_ইন্টিগ্রেশন_ফোর্স_ডেটরেনজ_ফিল্ডস -2786577-60.patch আমার জন্য কাজ করেছে ধন্যবাদ @ ব্যবহারকারী5950
মেক-

আপনি ডাটাবেস আপডেটগুলি প্রয়োগ করেছেন তা নিশ্চিত করুন:drush updatedb --entity-updates
ফিলিপ মিগুয়েল ফোনসেকা

আপনি যদি প্যাচগুলি প্রয়োগ করতে সুরকার ব্যবহার করেন তবে মডিউলগুলি আপডেট করার পরে সেগুলি স্বয়ংক্রিয়ভাবে প্রযোজ্য হবে। এটি বলেছিল যে এটি 8.6 এ অন্তর্ভুক্ত হতে চলেছে - প্যাচটি কিছু দিন আগে প্রতিশ্রুতিবদ্ধ হয়েছিল!
মার্টোনা 42

5
ঠিক একটি মাথা আপ হিসাবে, এই কার্যকারিতা এখন 8.6.0 দিয়ে শুরু হবে
ম্যাট ফ্লেচার

0

নিলামের তারিখগুলি সমেত একটি সামগ্রীর টাইপ আমাকে তিনটি গ্রুপে ফিল্টার করতে হয়েছিল (এখন অনলাইন, আসন্ন এবং নিবন্ধনের জন্য প্রস্তুত)। এতে একাধিক ডেটরেঞ্জ জড়িত থাকায়, আমি এই নিবন্ধটির উপর ভিত্তি করে একটি প্লাগইন লিখেছি: https://www.webomelet.com/creating-custom-views-filter-drupal-8

মূলত তিনটি কাজ করে: ক্ষেত্রের তারিখগুলি স্থানীয় তারিখ এবং সময়কে রূপান্তর করুন। - ফিল্টারটিতে তিনটি সম্ভাব্য সেটিংস রয়েছে 'এখন অনলাইনে', 'আসন্ন' এবং 'অন্যান্য' - সেটিংসের উপর ভিত্তি করে এটি কোয়েরিতে যেখানে ক্লজ-ক্লজগুলি যুক্ত করে

এটি কাজ করে এবং ভবিষ্যতের আপডেটগুলিতে দৃ seems় বলে মনে হয়।

    <?php

    /**
     * @file
     * Definition of Drupal\d8views\Plugin\views\filter\NodeTitles.
     */

    namespace Drupal\d8views\Plugin\views\filter;

    use Drupal\views\Plugin\views\filter\FilterPluginBase;
    use Drupal\views\Plugin\views\filter\InOperator;
    use Drupal\views\Plugin\views\filter\ManyToOne;
    use Drupal\views\ViewExecutable;
    use Drupal\views\Views;
    /**
     * Filters by given list of node title options.
     *
     * @ingroup views_filter_handlers
     *
     * @ViewsFilter("d8views_node_titles")
     */
    class NodeTitles extends FilterPluginBase {
        // exposed filter options
        protected $alwaysMultiple = TRUE;

        /**
         * Provide simple equality operator
         */
        public function operatorOptions() {
            return [
                'nu_online' => $this->t('Nu online'),
                'binnenkort' => $this->t('Binnenkort'),
                'anders' => $this->t('Anders'),
            ];
        }


        public function query() {
            //Get the current domain.  
            //$domain = domain_get_domain();
            $nu_in_utc = new \DateTime('now', new \DateTimezone('UTC'));
            $nu_in_utc_in_iso = $nu_in_utc->format('Y-m-d\TH:i:s');
            $nu_date = $nu_in_utc->format('Y-m-d');
            /* 
            * Voeg relatie met datum veiling toe
            */
            $configuration = [
                'table'      => 'node__field_datum_veiling',
                'left_table' => 'node_field_data',
                'left_field' => 'nid',
                'field'      => 'entity_id',
                'type'       => 'LEFT',
                'extra_operator'   => 'AND',
            ];
            $join = Views::pluginManager('join')->createInstance('standard', $configuration);
            $this->query->addRelationship('node__field_datum_veiling', $join, 'node_field_data');

            /* 
            * Voeg relatie met online datum van de veiling
            */
            $configuration = [
                'table'      => 'node__field_datum_online',
                'left_table' => 'node_field_data',
                'left_field' => 'nid',
                'field'      => 'entity_id',
                'type'       => 'LEFT',
                'extra_operator'   => 'AND',
            ];

            $join = Views::pluginManager('join')->createInstance('standard', $configuration);
            $this->query->addRelationship('node__field_datum_online', $join, 'node_field_data');
            switch($this->operator) {
                case 'nu_online':
                    /* 
                    * Condities voor 'Nu online'
                    */
                    //dpm('Nu online');
                    $this->query->addWhere('AND', 'node__field_datum_veiling.field_datum_veiling_end_value', $nu_in_utc_in_iso, '>');
                    $this->query->addWhere('AND', 'node__field_datum_online.field_datum_online_value', $nu_date, '<=');
                    break;
                case 'binnenkort':
                    /* 
                    * Condities voor 'Binnenkort'
                    */
                    //dpm('Binnenkort');
                    $this->query->addWhere('AND', 'node__field_datum_veiling.field_datum_veiling_end_value', $nu_in_utc_in_iso, '>');
                    $this->query->addWhere('AND', 'node__field_datum_online.field_datum_online_value', $nu_date, '>');
                    break;
                case 'anders':
                    /* 
                    * Condities voor 'Anders' (dwz online, binnenkort, maar nog niet geweest)
                    */
                    $this->query->addWhere('AND', 'node__field_datum_veiling.field_datum_veiling_end_value', $nu_in_utc_in_iso, '>');
                    break;
            }
        }
    }

0

অন্তর-ফিল্টার প্লাগইন ব্যবহার করে আপনি ন্যূনতম এবং সর্বাধিক তারিখ হিসাবে যথাক্রমে দুটি ক্ষেত্র বেছে নিতে পারেন, এটি পরিসরের ধারণাটি প্রবর্তন করে। তারপরে আপনি এমন কোনও তারিখ নির্দিষ্ট করে ভিউগুলি ফিল্টার করতে পারেন যা অবশ্যই সীমার মধ্যে থাকা বা থাকা উচিত নয়।

: কটাক্ষপাত https://github.com/barsan-ds/interval-filter উদাহরণের জন্য


0

বর্তমানে দর্শনগুলি তারিখের সীমা সম্পর্কে খুব সচেতন নয়। এটি শুরু বা শেষের তারিখে পৃথক ফিল্টার হিসাবে ফিল্টার করতে পারে তবে পুরো তারিখের পরিসীমা নয়।

তারিখের পরিসরের উপর ভিত্তি করে ফিল্টারিং সক্ষম করতে আমি মডিউলটি প্রদর্শন তারিখ রেঞ্জ ফিল্টার তৈরি করেছি । ডেটটাইম রেঞ্জ ক্ষেত্রের জন্য বর্তমানে এটিতে 3 টি অতিরিক্ত ফিল্টার রয়েছে:

সহ

তারিখ ব্যাপ্তি অনুসারে ফিল্টারগুলি সরবরাহিত তারিখ অন্তর্ভুক্ত করে।

ওভারল্যাপ

তারিখের পরিসীমা অনুযায়ী ফিল্টারগুলি সরবরাহিত তারিখের ব্যাপ্তির সাথে ওভারল্যাপ হয়।

শেষ হয়

তারিখের পরিসীমা অনুযায়ী ফিল্টারগুলি সরবরাহিত তারিখ দ্বারা শেষ হয়। "সমাপ্তির তারিখ <= সরবরাহের তারিখ" এর সমান। "শুরুর তারিখ" ব্যবহার করার সময় গোষ্ঠীযুক্ত ফিল্টারগুলির জন্য দরকারী।


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