ترقيم الصفحات في Codeبرنامج Igniter 4 مع مثال
⚡ ملخص ذكي
ترقيم الصفحات في Codeيقوم Igniter بتقسيم مجموعات نتائج قواعد البيانات الكبيرة إلى صفحات صغيرة يسهل تصفحها باستخدام مكتبة الترقيم المدمجة. يشرح هذا الدليل كيفية إنشاء مثال عملي يستعلم عن جدول المؤلفين، ويُحدد حدود كل صفحة، ويعرض روابط تنقل مرقمة.

قواعد البيانات كيانات حية، تتطور مع مرور الوقت. عند تصميم التطبيقات، يجب مراعاة كثرة السجلات التي سيتصفحها المستخدمون. تتيح لنا خاصية الترقيم تقسيم النتائج إلى أجزاء صغيرة يسهل التعامل معها. تُظهر الصورة التالية مثالًا على الترقيم في Google بحث.
في هذا الدرس التعليمي، ستتعلم كيفية تقسيم نتائج قاعدة البيانات إلى صفحات. Codeاستخدام مكتبة الترقيم في برنامج Igniter. يفترض هذا الشرح أنك على دراية بأساسيات... CodeIgniter Active Record. إذا لم تكن على دراية به بعد، فيمكنك قراءة الدروس السابقة. الافتراض الآخر هو أنك قمت بتنزيله بالفعل. Codeأنبوب.
تكوين قاعدة البيانات
سنبدأ بإنشاء قاعدة البيانات وإدراج بعض السجلات الوهمية فيها. وستكون عبارة عن قاعدة بيانات جدول واحد تحتوي على 50 سجلًا.
قم بتشغيل البرنامج النصي التالي ضد MySQL لإنشاء جدول مؤلفي قاعدة البيانات. أدخل 50 سجلاً وهمياً.
CREATE SCHEMA ci_pagination; DROP TABLE IF EXISTS `authors`; CREATE TABLE `authors` ( `id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `last_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `birthdate` date NOT NULL, `added` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (1, 'Brielle', 'O\'Hara', 'alexandre67@example.com', '1974-05-21', '1999-09-17 19:17:28'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (2, 'Flavio', 'Lehner', 'mafalda85@example.net', '1971-10-14', '1998-09-09 00:25:06'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (3, 'Elmira', 'Johns', 'wellington52@example.org', '1983-11-28', '2015-02-07 15:56:43'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (4, 'Elza', 'Mitchell', 'marisol46@example.org', '1989-03-08', '1992-08-21 00:21:39'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (5, 'Viva', 'Greenfelder', 'era94@example.com', '1995-04-17', '2017-04-30 05:55:39'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (6, 'Maxwell', 'VonRueden', 'mcassin@example.net', '1994-07-01', '1996-05-08 23:30:14'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (7, 'Deontae', 'Becker', 'rory.kub@example.org', '1992-02-19', '2017-07-22 11:49:15'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (8, 'Sylvester', 'Christiansen', 'erohan@example.org', '1990-09-03', '2004-05-08 08:15:37'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (9, 'Torrey', 'Strosin', 'adams.luciano@example.net', '1999-10-09', '2009-08-30 21:30:44'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (10, 'Kelli', 'Smitham', 'daniel.catalina@example.com', '2012-11-07', '1986-01-22 20:52:57'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (11, 'Abigale', 'Schuppe', 'andreanne.hayes@example.net', '2018-02-18', '1994-05-07 06:26:36'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (12, 'Letha', 'Gleason', 'eldridge.heaney@example.net', '2009-02-06', '1998-05-25 04:37:54'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (13, 'Sienna', 'Upton', 'monique57@example.org', '2017-08-17', '2009-08-08 19:08:10'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (14, 'Harley', 'Gutkowski', 'breilly@example.net', '1987-11-30', '1998-07-31 11:08:01'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (15, 'Lois', 'Bednar', 'hpouros@example.net', '2002-02-11', '2001-07-26 15:04:16'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (16, 'Gail', 'McDermott', 'reina.kerluke@example.com', '1987-03-30', '2004-12-15 20:38:29'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (17, 'Sydney', 'Strosin', 'dweber@example.net', '1985-04-29', '2010-08-07 08:50:35'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (18, 'Anne', 'Cremin', 'fritz.schmitt@example.com', '1976-02-15', '1980-03-25 05:29:41'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (19, 'Norberto', 'Bergnaum', 'franecki.javon@example.net', '1971-03-11', '1993-03-20 23:36:25'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (20, 'Arvid', 'Johns', 'pschultz@example.org', '2016-01-03', '1995-04-30 17:07:15'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (21, 'Bernita', 'Fay', 'arne96@example.org', '1983-12-26', '1987-02-23 16:55:28'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (22, 'Gonzalo', 'Gorczany', 'velma.huels@example.com', '1987-10-19', '2016-10-18 19:25:46'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (23, 'Jackie', 'Klein', 'gretchen.howe@example.com', '1971-01-20', '2010-11-16 02:58:05'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (24, 'Andrew', 'Kessler', 'collins.faye@example.org', '1984-08-07', '1971-12-15 08:46:42'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (25, 'Claire', 'Hudson', 'madalyn.wunsch@example.org', '1984-12-19', '1991-07-04 14:35:53'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (26, 'Prudence', 'Runte', 'koch.laurie@example.net', '2008-12-27', '1985-09-30 04:57:55'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (27, 'Destinee', 'Romaguera', 'tromp.tiffany@example.com', '1978-11-09', '1997-11-09 19:58:08'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (28, 'Marianna', 'Harvey', 'clovis.schuppe@example.com', '2013-08-28', '1990-08-06 19:29:19'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (29, 'Eloy', 'Lakin', 'wmorissette@example.net', '1989-12-08', '1974-03-16 03:21:16'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (30, 'Rubie', 'McClure', 'haley.louisa@example.net', '1987-09-12', '1998-07-02 10:45:36'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (31, 'Marisa', 'Stracke', 'zachary76@example.org', '1975-05-28', '1975-03-19 00:57:35'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (32, 'Jacey', 'Beatty', 'dahlia.hermann@example.org', '1979-12-17', '1971-01-21 16:50:58'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (33, 'Idella', 'Ruecker', 'elda.reichert@example.com', '2009-09-15', '1996-04-19 22:27:31'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (34, 'Dimitri', 'Bednar', 'freida.parker@example.org', '1998-12-02', '2008-12-30 23:29:57'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (35, 'Elfrieda', 'Smitham', 'padberg.rex@example.org', '2018-07-23', '1972-04-01 07:52:25'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (36, 'Dwight', 'Walter', 'gmosciski@example.org', '2016-08-15', '1994-07-02 11:06:55'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (37, 'Macie', 'Fay', 'uschuppe@example.net', '1976-01-29', '2005-12-13 18:44:46'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (38, 'Lori', 'Kshlerin', 'mhansen@example.net', '1983-04-08', '1986-01-18 16:03:52'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (39, 'Jeffry', 'Paucek', 'alisha35@example.net', '2002-10-02', '2004-03-29 07:06:03'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (40, 'Yvonne', 'Bernhard', 'jaqueline21@example.net', '2017-11-04', '1986-12-15 23:55:23'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (41, 'Ludwig', 'Heathcote', 'marcelino.kirlin@example.org', '1981-02-09', '2000-08-02 20:45:48'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (42, 'Jadyn', 'Wiegand', 'georgianna.swift@example.net', '1982-06-16', '1980-12-05 13:09:37'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (43, 'Ferne', 'Smitham', 'melany22@example.com', '1996-12-17', '1984-11-18 19:26:27'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (44, 'ميتا', 'Corkery', 'xharber@example.com', '1972-03-31', '2007-01-20 00:07:31'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (45, 'Toni', 'Wolf', 'wyman.crystal@example.org', '2012-04-15', '1973-06-22 12:14:37'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (46, 'Zack', 'Luettgen', 'deion.konopelski@example.org', '2003-05-29', '2018-11-19 05:03:21'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (47, 'Kameron', 'Dietrich', 'ronaldo.torphy@example.com', '1973-05-20', '1974-09-16 20:27:17'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (48, 'Zetta', 'Lebsack', 'timmothy.vandervort@example.com', '1996-11-04', '2001-03-06 01:33:01'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (49, 'Benny', 'Hane', 'leone.lueilwitz@example.net', '2008-02-02', '2006-01-27 22:12:39'); INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (50, 'Evans', 'Gleason', 'ccummerata@example.org', '1999-09-09', '1990-09-26 17:50:11');
الآن وقد أنشأنا قاعدة البيانات بنجاح وأدخلنا سجلات وهمية فيها، فلنقم بتكوينها Codeتطبيق Igniter للتواصل مع قاعدة البيانات.
افتح التطبيق/config/database.php
قم بتعيين معلمات اتصال قاعدة البيانات على النحو التالي
$db['default'] = array( 'dsn' => '', 'hostname' => 'localhost', 'username' => 'root', 'password' => 'melody', 'database' => 'ci_pagination', 'dbdriver' => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );
هنا،
- 'اسم المضيف' => 'المضيف المحلي'، يعين اسم المضيف لقاعدة البيانات
- 'username' => 'root'، يحدد اسم مستخدم قاعدة البيانات
- 'password' => 'melody'، يحدد كلمة مرور قاعدة البيانات
- 'database' => 'ci_pagination'، يحدد اسم قاعدة البيانات.
سنقوم أيضًا بتحميل مكتبة قاعدة البيانات تلقائيًا عند بدء تشغيل تطبيقنا. لنقم بذلك. افتح الملف application/config/autoload.php
قم بتحميل مكتبة قاعدة البيانات كما هو موضح بالكود أدناه
$autoload['libraries'] = array('database');
هذا كل شيء بالنسبة لتكوين قاعدة البيانات.
لنعمل الآن على نموذج قاعدة البيانات الخاص بالترقيم.
Codeنموذج قاعدة بيانات الترقيم في Igniter
قم بإنشاء نموذج جديد Authors_model في التطبيق/النماذج
أضف الكود التالي
<?php class Authors_model extends CI_Model { protected $table = 'authors'; public function __construct() { parent::__construct(); } public function get_count() { return $this->db->count_all($this->table); } public function get_authors($limit, $start) { $this->db->limit($limit, $start); $query = $this->db->get($this->table); return $query->result(); } }
هنا،
- يُعرّف المتغير `$table = 'authors'` متغيرًا محميًا يحتوي على اسم جدول قاعدة البيانات الخاص بالنموذج.
- تستدعي الوظيفة العامة __construct() {...} أسلوب المنشئ الأصلي
- الدالة العامة get_count() {…} تُعيد إجمالي عدد السجلات في جدول قاعدة البيانات. هذا ضروري لأغراض الترقيم.
- تُعرّف الدالة العامة `get_authors($limit, $start) {…}` طريقةً تُستخدم لاسترجاع نتائج مُقسّمة إلى صفحات من قاعدة البيانات. نمرّر إليها قيمة `limit` ونقطة البداية. تُحدّد `limit` العدد الإجمالي للسجلات المطلوب إرجاعها، بينما تُحدّد `start` عدد السجلات التي يجب تخطيها.
هذا كل ما يتعلق بنموذج قاعدة البيانات. لنقم الآن بإنشاء المسارات التي ستستجيب لنتائجنا المُقسّمة إلى صفحات.
Codeمسارات ترقيم الصفحات في Igniter
افتح ملف المسارات في application/config/routes.php
أضف المسار التالي
$route['authors/(:num)'] = 'authors';
هنا،
- نُعرّف مسارًا باسم "authors" يقبل مُعاملًا اختياريًا هو الرقم. يُحدد هذا المُعامل الاختياري باستخدام القوسين. يستدعي هذا المسار دالة "index" في وحدة تحكم "Authors".
لننتقل الآن إلى وحدة التحكم الخاصة بنتائجنا المُقسّمة إلى صفحات.
Codeوحدة تحكم ترقيم الصفحات
قم بإنشاء ملف Authors.php جديد في دليل التطبيق/وحدات التحكم
أضف الكود التالي
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Authors extends CI_Controller { public function __construct() { parent:: __construct(); $this->load->helper('url'); $this->load->model('authors_model'); $this->load->library("pagination"); } public function index() { $config = array(); $config["base_url"] = base_url() . "authors"; $config["total_rows"] = $this->authors_model->get_count(); $config["per_page"] = 10; $config["uri_segment"] = 2; $this->pagination->initialize($config); $page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0; $data["links"] = $this->pagination->create_links(); $data['authors'] = $this->authors_model->get_authors($config["per_page"], $page); $this->load->view('authors/index', $data); } }
هنا،
- فئة المؤلفين تمتد CI_Controller {...} نحدد فئة المؤلفين التي تمتد فئة CI_Controller
- الوظيفة العامة __construct() {...} تقوم هذه الطريقة بتهيئة المُنشئ الأصلي وتحميل مساعد url ونموذج المؤلفين ومكتبة ترقيم الصفحات.
- يحدد فهرس الوظيفة العامة () {...} الطريقة التي تستجيب لمؤلفي المسار لدينا
- $config["base_url"] = base_url() . "authors"; يحدد ترقيم الصفحات URL سيتم استخدام ذلك لإنشاء روابط ترقيم الصفحات
- يُحدد المتغير `$config["total_rows"] = $this->authors_model->get_count();` إجمالي عدد الصفوف التي يجب تقسيمها إلى صفحات. ويتم استرجاع هذه القيمة من نموذج المؤلفين باستدعاء الدالة `get_count`.
- $config[“per_page”] = 10؛ يحدد الصفوف التي يجب عرضها لكل صفحة
- يُحدد المتغير $config[“uri_segment”] = 2; URL الجزء الذي يحتوي على القيمة التي سيتم استخدامها لتجاوز السجلات
- تقوم الدالة `$this->pagination->initialize($config)` بتهيئة مكتبة الترقيم باستخدام قيم مصفوفة الإعدادات التي حددناها.
- $page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0; يتحقق هذا المتغير مما إذا كان قد تم تحديد رقم التخطي في الجزء الثاني من عنوان URI، وإذا لم يتم تحديده، فسيتم تعيين القيمة 0 للمتغير $page.
- $data["links"] = $this->pagination->create_links(); ينشئ روابط ترقيم الصفحات ويعينها لمفتاح الروابط لمتغير صفيف البيانات $.
- $data['authors'] = $this->authors_model->get_authors($config[“per_page”], $page); يسترجع سجلات المؤلفين المُقسّمة إلى صفحات ويُسندها إلى مفتاح المؤلفين في متغير المصفوفة $data
- $this->load->view('authors/index', $data); يقوم بتحميل عرض الفهرس في دليل المؤلفين ويمرر في متغير الصفيف $data.
هذا كل ما يتعلق بوحدة التحكم. لنقم الآن بإنشاء العرض الذي سيعرض نتائج قاعدة البيانات.
قم بإنشاء دليل جديد للمؤلفين في التطبيق/طرق العرض
قم بإنشاء ملف Index.php جديد في application/views/authors/index.php
أضف الكود التالي
<!DOCTYPE html> <html> <head> <title>CodeIgniter Pagination</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <h3 class="title is-3">CodeIgniter Database Pagination</h3> <div class="column"> <table class="table is-bordered is-striped is-narrow is-hoverable is-fullwidth"> <thead> <tr> <th>ID</th> <th>Contact Name</th> <th>Contact Number</th> <th>Email</th> <th>City</th> </tr> </thead> <tbody> <?php foreach ($authors as $author): ?> <tr> <td><?= $author->id ?></td> <td><?= $author->first_name ?></td> <td><?= $author->last_name ?></td> <td><?= $author->email ?></td> <td><?= $author->birthdate ?></td> </tr> <?php endforeach; ?> </tbody> </table> <p><?php echo $links; ?></p> </div> </div> </body> </html>
هنا،
- يقوم البرنامج بالمرور على نتائج المتغير $authors وطباعة النتائج في جدول.
- يطبع روابط ترقيم الصفحات في أسفل جدولنا.
لنبدأ الآن بتقديم طلبنا ونرى النتائج.
في هذا البرنامج التعليمي، نستخدم خادم الويب PHP المدمج، ولكن يمكنك استخدام أي خادم ويب يدعمه PHP.
افتح المحطة
قم بتشغيل الأمر التالي
cd C:\Sites\ci-app php -S localhost:3000
هنا،
- يتصفح الأمر أعلاه دليل رمز التطبيق ويبدأ تشغيل الخادم المدمج على المنفذ 3000.
ملاحظة: يجب أن يتطابق مسار التطبيق مع المسار الذي قمت بتنزيله منه Codeبرنامج Igniter. يمكنك استخدام أي رقم منفذ متاح على جهاز الكمبيوتر الخاص بك. ليس من الضروري استخدام المنفذ 3000.
افتح متصفح الويب وقم بتحميل ما يلي URL
http://localhost:3000/authors
يجب أن تكون قادرًا على الحصول على نتائج مشابهة لما يلي
كيفية التخصيص Codeروابط ترقيم الصفحات في Igniter
بشكل افتراضي، تُخرج دالة create_links() روابط نصية عادية. يمكنك تغليف هذه الروابط بعلاماتك الخاصة لتتوافق مع إطار عمل CSS مثل Bootstrap أو بولما. أضف مفاتيح التنسيق إلى نفس مصفوفة $config قبل استدعاء الدالة initialize().
$config['full_tag_open'] = '<nav><ul class="pagination">'; $config['full_tag_close'] = '</ul></nav>'; $config['num_tag_open'] = '<li class="page-item">'; $config['num_tag_close'] = '</li>'; $config['cur_tag_open'] = '<li class="page-item active"><a class="page-link">'; $config['cur_tag_close'] = '</a></li>'; $config['next_link'] = 'Next »'; $config['prev_link'] = '« Previous';
تم وصف أهم مفاتيح التكوين أدناه.
- full_tag_open / full_tag_close: ترميز يغلف مجموعة الروابط بأكملها، وهو مثالي لـ أو حاوية.
- num_tag_open / num_tag_close: علامات التنسيق حول كل رابط صفحة مرقم.
- cur_tag_open / cur_tag_close: علامات التنسيق حول رقم الصفحة النشطة الحالية.
- الرابط التالي / الرابط السابق: النص أو الرموز المستخدمة لأزرار التالي والسابق.
لأن التنسيق موجود بالكامل في التكوين، يمكنك إعادة تصميم الترقيم في جميع أنحاء التطبيق عن طريق تعديل مصفوفة واحدة، دون المساس بمنطق وحدة التحكم الخاصة بك.


