কিছু দৃশ্যের পারফরম্যান্স সংক্রান্ত সমস্যাগুলি সমাধান করার জন্য এবং সর্বোত্তম অনুশীলনের প্রতি শ্রদ্ধা জানাতে আমি নিজের কাস্টম হ্যান্ডলারদের দ্বারা কিছু সময় আগে কনফিগার করা কিছু ভিউ পিএইচপি প্রতিস্থাপন করতে চাই ।
উদাহরণস্বরূপ, আমি একটি সেট পিএইচপি ফিল্ড পেয়েছি, প্রদর্শন থেকে বাদ , সেটআপ সঙ্গে:
মান কোড:
if( $row->sticky ==1 ) {
return 100;
} else {
if ( isset($row->product_id) && $row->product_id != "" ){
$query = "SELECT COUNT(statut.entity_id) FROM field_data_field_statut_depart statut"
. " INNER JOIN field_data_field_product product ON statut.entity_id= product.field_product_product_id"
. " INNER JOIN field_data_field_date_depart depart ON statut.entity_id = depart.entity_id"
. " WHERE product.entity_id = ". $row->nid." AND field_statut_depart_value IN (2,3) AND field_date_depart_value > NOW(); ";
$select = db_query($query);
$count = $select->fetchField();
return $count;
}
else {
return -1;
}
}
আউটপুট কোড :
<?php print $value ; ?>`
তারপরে আমি বিশ্বব্যাপী পিএইচপি সাজানোর মানদণ্ডে সেই ক্ষেত্রটিকে প্রথম সাজানোর মানদণ্ড ( আরোহণ ) হিসাবে ব্যবহার করি :
if ($row1->php> $row2->php) return -1; else return 1;
আপনি যদি আমাকে সঠিক উপায়ে রাখতে পারতেন তবে আমি সত্যিই কৃতজ্ঞ হব: কোন ফাংশন (গুলি) তে আমি পিএইচপি দিয়ে ডেটাবেজে শেষ করতে একই কোডটি তৈরি করব?
সারসংক্ষেপ :
অনুসন্ধান এবং অগ্রগতি, প্লাস @ রেনারহফ সাহায্যের পরে, বেশিরভাগ বাস্তবায়ন ঠিক আছে, নীচে বিস্তারিত বলে মনে হচ্ছে। তবে আমি এখনও একটি পয়েন্ট নিয়ে লড়াই করছি : আমি একটি মান গণনা করতে একটি কাস্টম ফিল্ড হ্যান্ডলার যুক্ত করেছি, তবে কীভাবে আমি এই হ্যান্ডলারের অর্ডার করতে পারি?
সম্পাদনা:
আমি এ পর্যন্ত কি করেছি:
.info ফাইল
files[] = views_handler_vts_products_sort.inc
files[] = includes/views_handler_vts_count_depconf_field.inc
মডিউল ফাইল
/**
* Implements hook_views_data().
*/
function vts_views_handler_views_data() {
$data['custom']['table']['group'] = t('Custom');
$data['custom']['table']['join'] = array(
// #global is a special flag which let's a table appear all the time.
'#global' => array(),
);
$data['custom']['custom_handler'] = array(
'title' => t('Vts custom Sort Handler'),
'help' => 'Sorts products by sticky first then by custom statut field',
'sort' => array(
'handler' => 'views_handler_vts_products_sort',
),
);
$data['custom']['count_depconf_field'] = array(
'title' => t('Sum of products with status confirmed '),
'help' => t('Calculate Sum of products with status confirmed, to order lists".'),
'field' => array(
'handler' => 'views_handler_vts_count_depconf_field',
'click sortable'=> TRUE,
),
/*'sort' => array(
'handler' => 'views_handler_sort',
), */
);
return $data;
}
function vts_views_handler_views_api() {
return array(
'api' => 3,
'path' => drupal_get_path('module', 'vts_views_handler'),
);
}
views_handler_vts_products_sort
ফাইল
/**
* Base sort handler that has no options and performs a simple sort.
*
* @ingroup views_sort_handlers
*/
class views_handler_vts_products_sort extends views_handler_sort {
function query() {
$this->ensure_my_table();
// Add the field.
$this->query->add_orderby('node', 'sticky', 'DESC');
}
}
views_handler_vts_count_depconf_field
ফাইল
/*
* A simple field to calculate the value I wish to order by.
*/
class views_handler_vts_count_depconf_field extends views_handler_field {
function query() {
//do nothing
}
function render($values) {
$count = 0;
$product_id = isset($values-> commerce_product_field_data_field_product_product_id)? $values-> commerce_product_field_data_field_product_product_id: NULL;
if(!is_null($product_id)){
$query = "SELECT COUNT(statut.entity_id) FROM field_data_field_statut_depart statut"
. " INNER JOIN field_data_field_product product ON statut.entity_id= product.field_product_product_id"
. " INNER JOIN field_data_field_date_depart depart ON statut.entity_id = depart.entity_id"
. " WHERE product.entity_id = " . $values->nid . " AND field_statut_depart_value IN (2,3) AND field_date_depart_value > NOW(); ";
$select = db_query($query);
$count = $select->fetchField();
}
return $count;
}
}
অবশিষ্ট প্রশ্ন:
কাস্টম ফিল্ড হ্যান্ডলার দ্বারা অর্ডার কিভাবে? আমি কাস্টম বাছাই হ্যান্ডলারে
'click sortable'=> TRUE,
OR'sort' => array('handler' => 'views_handler_sort',),
বা যোগ করার চেষ্টা করেছি$this->query->add_orderby('custom', 'count_depconf_field', 'DESC');
। 'অর্ডার ক্লজ' এ অজানা কলামটি ছাড়া আর কিছুই কাজ করে নাশাবাশ আমি কিভাবে পেতে পারেন
$row->product_id
এবং$row->nid
ভিতরেquery()
? সাবকিউরিটি তৈরি করার জন্য আমার এটি দরকার। : একটি দর্শন হ্যান্ডলার ক্ষেত্র যুক্ত হয়েছে এবং রেন্ডারে ($ মান) সারি মানগুলি খুঁজে পেয়েছে ...- সমাপ্ত : উদাহরণ হ্যান্ডলারের কোন অংশটি আমাকে সম্পাদনা করতে হবে? শুধুমাত্র ক্যোয়ারী ফাংশন? আমার কি পুরো উদাহরণ কোড বা কেবলমাত্র কাস্টম অংশগুলি রাখা দরকার?
ধন্যবাদ