উন্মুক্ত ফিল্টারটির url পরিবর্তন করা


15

আমি যখন কোনও উন্মুক্ত ফিল্টার ব্যবহার করি তখন ফিল্টার নির্বাচনটি ইউআরএলে নাম / মান জোড় হিসাবে পাস হয়, উদাহরণস্বরূপ:

members?field_a=valuea&field_b=valueb

"পাঠাটো" শৈলীর আরও বেশি ইউআরএল ব্যবহার করতে কীভাবে আমি এটি সেট আপ করতে পারি:

members/valuea/valueb

দুর্দান্ত প্রশ্ন। আফাইক, কোড ব্যতীত এখনই এটি সম্ভব নয়। পাওয়া এই যা সমস্যা সমাধানের জন্য মনে হয়, কিন্তু এখনো তা পরীক্ষা করা হয়নি।
কাউন্টজারো

আপনি পরিষ্কার URL সহ সমস্যা হয়, পড়া এই পোস্টটি drupal.org/getting-started/clean-urls
subhojit777

1
আমি পরিষ্কার ইউআরএল সক্ষম করেছি, অন্য পৃষ্ঠাগুলির জন্য এটি সিও বান্ধব স্বরলিপিতে রয়েছে তবে উদ্ভাসিত ফিল্টারটির জন্য এটি কেবল ক্যোয়ারিং স্ট্রিং যেমন আমি যখন কোনও নিবন্ধে যাই, ইউআরএল সিও বান্ধব। আমি যদি কিছু মিস করছি তবে দয়া করে আমাকে জানান।
কল্পনা প্যাটেল

আমি দেখতে পাচ্ছি এটির কিছুটা কারণ থাকতে পারে তবে সমস্যায় যাওয়ার আগে আমি প্রকৃতপক্ষে প্রমাণ খুঁজব। কী আরও গুরুত্বপূর্ণ: একটি "এসইও-বান্ধব ইউআরএল" বা সামগ্রী যা সাধারণ অনুসন্ধানগুলির সাথে মিলে যায়? যদি কোনও ফলাফলের পৃষ্ঠার শক্তিশালী শিরোনাম থাকে তবে আমি সন্দেহ করি যে এটির URL এর চেয়ে অনেক বেশি মূল্যবান হব। আমি অবশ্যই প্রথমে যেকোন ক্ষেত্রে সামগ্রীতে মনোনিবেশ করব।
আলফ্রেড আর্মস্ট্রং

উত্তর:


9

আমার এক সহকর্মী কিছুক্ষণ আগে পথের ডেটা নামে একটি মডিউল তৈরি করেছিলেন । তাঁর উদ্দেশ্য ছিল খুব সমস্যা সমাধান করা। দুর্ভাগ্যবশত এটি পরিণত করেছে যে এটি নিয়মিত পথ alias লেখা সাথে সংঘাত, তাই এটি drupal.org যে alias লেখা ব্যবহার করে না মত একটি সাইট কাজ করবে, কিন্তু হবে সাইট ব্যবহার একটি পথ-ওরফে লিঙ্ক ভঙ্গ করো না।

বর্তমানে, আমার বিশ্বাস যে এই সমস্যাটি সমাধানের একমাত্র জেনারিক উপায় হ'ল হয় httpd স্তরটিতে ইউআরএলগুলি চালিত করা , বা হুক_উরাল_ইনবাউন্ড_াল্টার এবং হুক_উরাল_আউটবাউন্ড_াল্টার ব্যবহার করা । এই প্রশ্নে আপনি উল্লিখিত হুকগুলি সম্পর্কে আরও কিছুটা পড়তে পারেন ।

যাইহোক, যদি আমি নিজেই এটি অন্য একটি শ্যুট দিতে পারি তবে আমি পরিবর্তে একটি ভিউ নির্দিষ্ট সমাধান চেষ্টা করব, কারণ এই সমস্যাটি যথেষ্ট সাধারণ যে এটির জন্য একটি মডিউল যুক্তিযুক্ত হওয়া উচিত।

ইন hook_views_pre_build , এক তারপর "সদস্য / valuea / valueb" এর মতো একটি URL থেকে ডেটা গ্রহণ করতে পারে $ _GET [ 'থ'] মধ্যে এই মান ধাক্কা, ভিউ এটা ক্যোয়ারী "URL এর মধ্যে" পেতে আর্গুমেন্ট এইজন্য গড়ে তুলতে দেয়, সম্ভবত তাদের সরিয়ে আবার হুক_ভিউ_পোস্ট_বিল্ডে


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

হুঁ, আমি যদি এমনটি করি যে পৃষ্ঠা থেকে ইউআরএল ফর্মটি পরিবর্তন করতে আমি জাভাস্ক্রিপ্টটি ব্যবহার করতে পারি? নাম 1 = মান 1 এবং নাম 2 = মান 2 পৃষ্ঠা / মান 1 / মান 2 স্ট্যাকওভারফ্লো / প্রশ্ন / 58815995/… তে । জাভাস্ক্রিপ্ট অক্ষম থাকলে আমার ফ্যালব্যাক হিসাবে আমার আসল ভিউ থাকে।
uwe

@letharion: Dont Drupal এর 7. জন্য কোনো সহায়তা দেখতে
প্রতিক্রিয়া বিকাশকারী

4

ইউআরএল-এর ক্যোয়ারী প্যারামিটারগুলির একটি মডিউল রয়েছে, যা আমি সম্প্রতি প্রকাশ করেছি যা আপনি যে সমস্যার বর্ণনা করছেন তার সমাধান করে:

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

কোনও সাধারণ নিয়মিত অভিব্যক্তি ব্যবহার করে বা মডিউল হুক প্রয়োগ করে কোন পাথগুলিতে তাদের ক্যোয়ার যুক্তিগুলি পরিষ্কার URL উপাদান হিসাবে পুনরায় লিখিত হওয়া উচিত তা কনফিগার করতে পারেন।

এইভাবে আপনি মতামত প্রকাশিত ফিল্টার URL টি রূপান্তর করতে পারেন

http://example-site.com/events?field_category_id 0০0==100&field_category_id 1 = 101 এবং ক্ষেত্র_অথিকার_নাম [0] = জন এবং ক্ষেত্র_অথিকার_সৌনক [0] = ডো

মধ্যে http://example-site.com/events/p/field_category_id/0__100--1__101/field_author_name/0__John/field_author_surname/0__Doe

এর নীচে হুক_উরাল_বাইন_উন্ডার_ল্টার, হুক_উরাল_আউটবাউন্ড_াল্টার এবং হুক_আইনিট যেখানে প্রয়োজন সেখানে পুনর্নির্দেশগুলি ব্যবহার করে।


ড্রুপাল 8 সম্পর্কে কী?
ইন্সপায়ার্ডকডার

1

উদ্ভাসিত ফিল্টারগুলি হ'ল ফর্মগুলি, যার অর্থ হ'ল তারা যে জায়গাতে পুনর্নির্দেশ করছে ("ক্রিয়া" বৈশিষ্ট্য), ব্যবহারকারী কোনও বিকল্প চয়ন করার আগে তার জানা দরকার। সুতরাং আমরা তাকে এমন কোনও সুন্দর URL- এ পুনর্নির্দেশ করতে পারি না যা তার পছন্দ সম্পর্কিত তথ্য ধারণ করে। কর্মক্ষেত্র:

  1. জাভাস্ক্রিপ্ট। ব্যবহারকারীরা বেছে নেওয়া বিকল্পগুলির উপর ভিত্তি করে এক্সপোজড ফিল্টার ফর্মের ফ্লাই "অ্যাকশন" বৈশিষ্ট্যে ফ্লাই পরিবর্তন করতে জাভাস্ক্রিপ্ট ব্যবহার করুন এবং কনফিগার করা যথাযথ প্রসঙ্গত ফিল্টারগুলি সহ সঠিক দৃশ্যের URL এ "ক্রিয়া" সেট করুন। তবে আমি সন্দেহ করি এটি তখন "এসইও বান্ধব" হবে (দয়া করে কেউ আমাকে ভুল করে থাকলে আমাকে সংশোধন করে)।

  2. ডাবল পুনর্নির্দেশ করুন। হুক_ফর্ম_ল্টার ব্যবহার করে, ফর্মটি পাওয়ার পরে, ব্যবহারকারীকে তার ইনপুটের উপর ভিত্তি করে উপযুক্ত প্রাসঙ্গিক ফিল্টারগুলি কনফিগার করা সহ যথাযথ দৃশ্যের ইউআরএলে পুনঃনির্দেশ করুন। এটি সম্ভবত কিছু ব্রাউজারে ব্যবহারকারীর নিশ্চয়তার প্রয়োজন হতে পারে, তাই এটি চরম বিরক্তিকর হতে পারে।

উপরের দুটি পদ্ধতিতে আপনাকে এই ফর্মগুলির পদ্ধতিটি পোস্টে পরিবর্তন করতে https://drupal.org/project/views_expost ব্যবহার করতে হবে , সুতরাং ভেরিয়েবলগুলি ইউআরএলকে দূষিত করবে না।

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


1

অগ্রগতিগত দৃষ্টিকোণ থেকে, আপনি সর্বদা তার জন্য hook_url_inbound_alter () এবং hook_url_outbound_alter () হুক ব্যবহার করতে পারেন।

আপনি ইউআরএল মডিউলে ক্যোয়ারী প্যারামিটারগুলিতে চেষ্টা করে দেখতে পারেন বা যদি আপনি অনুসন্ধান API এবং দিকগুলি ব্যবহার করেন তবে আপনি ফেস্ট এপিআই সুন্দর পাথ ব্যবহার করতে পারেন ।

আপনি আপনার পথে আর্গুমেন্টগুলি ব্যবহার করতে এবং পুনর্নির্দেশ মডিউলটি ব্যবহার করতে নিজের দৃষ্টিভঙ্গিকে রূপান্তর করতে পারেন ।

উপরোক্ত বিষয়গুলি ছাড়াও, এটি অর্জনের কোনও সহজ উপায় নেই, কারণ ড্রুপাল 8 এর জন্য এখনও বৈশিষ্ট্য মুলতুবি রয়েছে; দেখতে URL টি alias লেখা ক্যোয়ারী স্ট্রিং অনুমতি দিন

আপনি যখন প্যানেল ব্যবহার করছেন যা দেখেছে এবং উদাহরণস্বরূপ আরও ভাল উদ্ভাসিত ফিল্টার ব্যবহার করছে, আপনি কয়েকটি হ্যাকের মতো করতে পারেন (ইউআরএল উদাহরণ: / প্যানেল_আরল? বিভাগ = 123):

/**
 * Implements hook_url_inbound_alter().
 */
function foo_url_outbound_alter(&$path, &$options, $original_path) {
  if (arg(0) == 'panel_url') {
    // Convert URL like: /panel_url?category=29 into /panel_url/term_name (SEO friendly)
    $path_info = parse_url($path);
    switch (@$path_info['path']) {
      case 'panel_url/term_name':
      case 'panel_url/term_name2':
        $path = 'panel_url/all'; // Convert loopy urls into base url
    }
    if (strpos($path, '?category=') !== FALSE) { // Convert term id into human name
      list(, $tid) = explode('=', current(explode('&', $path_info['query']))); // get tid from URL
      $term_name = strtolower(taxonomy_term_load((int)$tid)->name);
      $path = '/panel_url' . '/' . $term_name; // See also: $path_info['path']
    }
  }
}

আরও তথ্যের জন্য, দয়া করে ফলক বা ব্লকটি দেখতে প্যানেলের ইউআরএল থেকে পাসিং আর্গুমেন্টটি দেখুন

শেষ অবধি , আপনি আপনার কাস্টম মেনু কলব্যাকগুলি সংজ্ঞায়িত করতে এবং প্রোগ্রামটিমে আপনার ভিউ লোড করতে হুক_মেনু () ব্যবহার করতে পারেন ।


-1

আপনি নিম্নলিখিত কোড ব্যবহার করতে পারে।

function hook_form_alter(&$form, &$form_state, $form_id) {   
  if ($form_id == "abcd") {
    $form['#submit'] = array('custom_search_redirect');
  }
}


function custom_search_redirect($form, &$form_state) {  
  $form_state['redirect'] = "members/valuea/valueb;
}

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