it-swarm.asia

كيف تصنع جداول قابلة للفرز مع جهاز النداء مع البيانات من جدول مخصص؟

ل Drupal 6 يمكنك فعل شيء كهذا:

$header = array(
  array('data' => t('Order id'), 'field' => 'order_id'),
  ...
  array('data' => t('Transaction time'), 'field' => 'payment_time', 'sort' => 'desc'),
);
$sql = "...";
$sql .= tablesort_sql($header);
$limit = 25;
$result = pager_query($sql, $limit);
...

لقد ألقيت نظرة و drupal 7 وكلاهما pager_query و tablesort_sql رحل الآن. يبدو أنه بدلاً من ذلك ، يمكن استخدام فئة PagerDefault لإنشاء استعلام بيجر باستخدام DBTNG. لم أتمكن من العثور على أي أدلة على واجهة برمجة تطبيقات بسيطة لإرفاق جدول قابل للفرز بالاستعلام كما هو الحال في Drupal 6.

فكيف يمكنك إنشاء جدول قابل للفرز مع جهاز النداء يسحب البيانات من جدول مخصص؟

20
googletorp

يمكنك استخدام ما يسمى الموسعات. في حالتك ، سيكون الرمز مشابهًا للرمز التالي.

$header = array(
  array('data' => t('Order id'), 'field' => 'order_id'),
  // ...
  array('data' => t('Transaction time'), 'field' => 'payment_time', 'sort' => 'desc'),
);

// Initialize $query with db_select().
$query = db_select('your table name');

// Add the fields you need to query.
// ... 

// Add the table sort extender.
$query = $query->extend('TableSort')->orderByHeader($header);

// Add the pager.
$query = $query->extend('PagerDefault')->limit(25);
$result = $query->execute();

انظر HowTo: تحويل وحدة إلى DBTNG ، الاستعلامات الديناميكية: فرز الجدول و الموسعات .

8
Berdir

استخدم TableSort و PagerDefault الموسعات.

$query = db_select('node', 'n');
$query->fields('n', array('nid', 'title', 'status'));

$table_sort = $query->extend('TableSort') // Add table sort extender.
  ->orderByHeader($header); // Add order by headers.

$pager = $table_sort->extend('PagerDefault')
  ->limit(5); // 5 rows per page.

$result = $pager->execute();
6
Serjas

استخدم DataTables الوحدة النمطية.

تدمج الوحدة النمطية DataTables المكون الإضافي jQuery DataTables في Drupal كنمط طرق العرض ووظيفة السمة القابلة للاستدعاء. تتيح لك DataTables إضافة ميزات ديناميكية إلى الجداول ، بما في ذلك:

  • ترقيم الصفحات بطول متغير
  • التصفية الفورية
  • الفرز مع الكشف عن نوع البيانات
  • معالجة ذكية لعرض الأعمدة
  • عن طريق CSS
  • والمزيد في المستقبل ...
2
Satya

يمكنك فقط تضمين نفس Drupal 6 tablesort_sql في التعليمات البرمجية ويعمل بشكل جيد.

بالنسبة إلى جهاز النداء:

$count = <Total No. of Table rows>

$sql = "...";
$sql .= tablesort_sql($header);
$limit = 25; //Pager limit

$results = db_query( $sql );
$rows = array();
//Loop through the result.
while ( $row = $results->fetchAssoc() ) {
$rows = <Get your array values for Table row>
}
$current_page = pager_default_initialize($count, $limit);
$chunks = array_chunk($rows,$limit, TRUE);
$output = theme( 'table', array( 'header' => $headers, 'rows' => $chunks[$current_page] ) );
$output .= theme( 'pager', array('quantity',$count ) );
print $output;
0
Paulraj