কীভাবে শর্তটি সংশোধন করতে হুক_ভিউ_কোয়ারি_াল্টার () ব্যবহার করবেন?


12

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

<?php
/**
 * Implementation of hook_views_query_alter
 * @param type $view
 * @param type $query
 */
function nashreneydev_views_query_alter(&$view, &$query) {
  //krumo($query);
  //krumo($view);
  if ($view->name == 'custom_search') {
    $search_term = $view->exposed_raw_input['combine'];

    **//$query->where[0]['conditions'][0]['field']= "?????";**
    $view->query->orderby[1]['field'] = "CASE node_type WHEN 'product_display' THEN 1 ELSE 2 END";
    $view->query->orderby[1]['direction'] = "ASC";
    $view->query->orderby[0]['field'] = "CASE node_title WHEN '".$search_term."' THEN 1 ELSE 2 END";
    $view->query->orderby[0]['direction'] = "ASC";
    //krumo($view->query->orderby);
  }
}
?>

শর্ত এখনই অনুসরণ হিসাবে যেখানে জন্য devel ফলাফল। : ভিউ_কোম্বাইন% s% এর সমান।

CONCAT_WS ('', নোড.টাইটেল, '', ফিল্ড_ডাটা_ডিবিডি.ফিল্ড_ডাটা_ডাটা_ফিল্ড_অর্ডার.ফিল্ড_অ্যাক্টিটার_তারেকেট_আইডি, '', ফিল্ড_ডাটা_ফিল্ড_ট্রান্সলেটর.ফিল্ড_ট্রাট_রেট_ফিল্ড_ট্যাগ_সক্ষেত্র_সৃজন_ত্যাগ_ত্যাগ_ত্যাগ:


"@ পরিম ..." মন্তব্যে হুকের প্যারামিটারগুলি লেখার প্রয়োজন নেই (নিরুৎসাহিত হয়ে)। এই প্যারামিটারগুলি সর্বদা প্রতিটি হুকের জন্য একই এবং ভাল নথিভুক্ত।
wranvaud

বেশ ঠিক আছে, ব্যবহারের পক্ষে সেরা@inheritdoc
আজমেডওয়ে

উত্তর:


9

শর্তের মানটি সংশোধন করে এমন কোনও বিষয়বস্তু আপনি অ্যাক্সেস করতে পারবেন:

$query->where[0]['conditions'][0]['value'] = 'something...';

অর্ডারবাইয়ের সাথে আপনি যা করেছেন তা খুব সুন্দর। এছাড়াও আপনি শুল্ক যুক্ত করতে পারেন যেখানে শর্তাদি ( https://api.drupal.org/api/views/plugins%21views_plugin_query_default.inc/function/views_plugin_query_default%3A%3Add_where/7 এবং https://api.drupal.org/api/ % 21 ভিউস / প্লাগইন% 21 ভিউ_প্লুগিন_কোয়ারী_ডিফল্ট.আইঙ্ক / ফাংশন / ভিউ_প্লাগিন_কোয়ারী_ডিফাল্ট% 3 এ% 3 অ্যাড_হোয়ার_এক্সপ্রেসন / 7 )


টানেক্স অনেকটা, ঠিক আমি যা খুঁজছিলাম
নুশিনহা

14

একটি নতুন যুক্ত করতে যেখানে আপনি যে ক্লজটি ব্যবহার করতে পারেন সেখানে যোগ করুন where

উদাহরণ স্বরূপ :

$query->add_where(1,'taxonomy_term_data_node.tid', $value, 'NOT IN');

2
function mymodule_views_query_alter(&$view, &$query) {
  // Term id's to unset from result set.
  $tids = array(346,355,359);
  if ($view->name == 'yourviewname') {

    $query->add_where(1,'taxonomy_term_data_node.tid', $tids, 'NOT IN');
    $query->orderby[0]['field'] = "CASE WHEN taxonomy_term_data_taxonomy_term_hierarchy.weight IS NULL THEN taxonomy_term_data_node.weight ELSE taxonomy_term_data_taxonomy_term_hierarchy.weight END";
    $query->orderby[0]['direction'] = "ASC";
    $query->orderby[1]['field'] = "taxonomy_term_data_node.weight";
    $query->orderby[1]['direction'] = "ASC";
  }
}

0

এটা চেষ্টা কর,

 $location_value = strtolower($string);
 $query->where[1]['conditions'][0] = array('field'=>"node.title","value"=>'%'.$location_value.'%',"operator"=>"LIKE");

0

আপনি ঠিক মত ব্যবহার করতে পারেন

$query->add_where(1,'node.nid',$value,'=');  
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.