ci分页样式需匹配前端框架:修改full_tag_open等参数调整html结构,确保base_url和uri_segment正确,设置num_links限制页码数量,所有配置须在initialize()前完成。

分页链接样式乱、和 Bootstrap/Tailwind 冲突,不是分页类有问题,是默认输出的 HTML 结构和 class 名没对齐前端框架要求。
怎么改 create_links() 输出的 HTML 标签和 class
CI 默认生成的是 <div class="pagination"><span>...</span></div> 这种结构,但 Bootstrap 5 要的是 <nav><ul class="pagination">...</ul></nav>,Tailwind 更依赖自定义 class。直接覆盖配置项就能换掉:
-
full_tag_open和full_tag_close控制最外层容器,比如设为'<nav aria-label="Page navigation"><ul class="pagination">'</ul></nav>和'
first_tag_open/first_tag_close 等控制“首页”按钮的包裹标签,若不用文字按钮,可设 first_link 为空字符串cur_tag_open 默认是 '<span class="current">'</span>,Bootstrap 要 '<li class="page-item active"><span class="page-link">'</span></li>,就得连带改 cur_tag_close 和 num_tag_open
*_tag_open 类参数都必须成对设置,漏一个会导致 HTML 错位,create_links() 可能返回空或结构断裂为什么自定义后点击页码还是跳转到首页或 404
样式改了,但链接地址没生效,大概率是 base_url 配置错了,或者 uri_segment 和实际 URL 段数不一致:
-
base_url必须含完整路径,比如base_url('news/index/')或'https://example.com/news/',不能只写'/news/'(协议和域名缺失会导致相对路径解析失败) - URL 是
/news/3,页码在第 3 段 →uri_segment = 3;如果是/news/page/3,就是第 4 段 →uri_segment = 4;设错后$this->uri->segment(4)返回空,偏移量永远是 0 - 启用
use_page_numbers = TRUE后,链接会变成/news/1、/news/2,但控制器方法签名得同步改成public function index($page = 1),否则 CI 无法把路径段注入参数
分页数字太多、想限制显示范围
默认会把全部页码都列出来,数据一多就撑满屏幕。用 num_links 控制两侧数字个数,再配合 display_pages = TRUE/FALSE 开关是否显示所有数字:
-
num_links = 2表示当前页左右各显示 2 个页码,如当前是 5,就显示 3–4–5–6–7 - 若总页数超 10,建议设
display_pages = FALSE,只保留「首页」「上一页」「下一页」「末页」+ 当前页附近数字,避免 DOM 膨胀 -
first_link和last_link默认非空,如果视图里已用图标导航,记得设成空字符串,否则会重复渲染
真正容易被忽略的是:所有 HTML 定制参数都得在 $this->pagination->initialize() 之前传入,且一旦调用过 create_links(),再改配置也不会重新渲染——得 reload library 或重走初始化流程。











