我会按标题排序顺序显示值。它仅显示按page_order排序的值,我将Page_model->get_pages((order_by('page_order'(编辑为order_by('title'(,但它继续按page_order显示。我似乎找不到关于这个话题的答案。如何在以下代码中按标题对值进行排序:
<?php
foreach ($menu_links as $item):
if ($item['parent_id'] != "0" && $item['subcat_recip_id'] != "" ):
?>
<?php
$valuesub = explode(",",$item['subcat_recip_id']);
foreach($valuesub as $dt):
if (html_escape("$dt") == html_escape("$subrecp")):
?>
<li><a href="<?php echo html_escape($item["slug"]);?>?subrecp=<?php echo html_escape("$subrecp"); ?>"><?php echo html_escape($item["title"]) ?></a></li>
<?php
endif;
endforeach;
?>
<?php
endif;
endforeach;
?>
食谱模型
* recipes Page
*/
public function recipes()
{
$this->load->model('page_model');
$data['page'] = $this->page_model->get_page('recipes');
if ($data['page']->page_active == 0) {
$this->error_404();
} else {
$data['title'] = get_page_title($data['page']);
$data['description'] = get_page_description($data['page']);
$data['keywords'] = get_page_keywords($data['page']);
$data['page_settings'] = get_page_settings();
$data['menu_links'] = $this->navigation_model->get_menu_links();
$this->load->view('partials/_header', $data);
$this->load->view('recipes', $data);
$this->load->view('partials/_footer');
}
}
Navigation_model->get_Menu_links
public function get_menu_links()
{
$menu = array();
$pages = $this->page_model->get_pages();
if (!empty($pages)) {
foreach ($pages as $page) {
$page_type = "page";
if (!empty($page->link)) {
$page_type = "link";
}
$item = array(
'order' => $page->page_order,
'id' => $page->id,
'lang_id' => $page->lang_id,
'parent_id' => $page->parent_id,
'subcat_recip_id' => $page->subcat_recip_id,
'title' => $page->title,
'slug' => $page->slug,
'link' => lang_base_url() . $page->slug,
'type' => $page_type,
'location' => $page->location,
'visibility' => $page->page_active,
'subcat_recip_id' => $page->subcat_recip_id,
);
if ($page_type == "link") {
$item["link"] = $page->link;
}
if ($page->slug == "index") {
$item["link"] = lang_base_url();
}
array_push($menu, $item);
}
}
$categories = $this->category_model->get_categories();
if (!empty($categories)) {
foreach ($categories as $category) {
$item = array(
'order' => $category->category_order,
'id' => $category->id,
'lang_id' => $category->lang_id,
'parent_id' => $category->parent_id,
'title' => $category->name,
'slug' => $category->slug,
'link' => lang_base_url() . "category/" . $category->slug,
'type' => "category",
'location' => "header",
'visibility' => $category->show_on_menu,
'subcat_recip_id' => $page->subcat_recip_id,
);
array_push($menu, $item);
}
}
sort($menu);
return $menu;
}
Page_model->get_pages
//get pages
public function get_pages()
{
$this->db->where('pages.lang_id', $this->selected_lang->id);
$this->db->order_by('page_order');
$query = $this->db->get('pages');
return $query->result();
}
ksort()
函数。
从这里参考(官方文档(。
首先尝试从get_menu_links()
中删除sort($menu);
。否则,无论你得到什么顺序get_pages()
,它都会被排序破坏。
在任何一种情况下,您都可以使用usort
它允许使用自定义比较函数对数组进行排序。
比较函数必须返回小于、等于或 如果第一个参数被视为 分别小于、等于或大于秒。
usort($menu_links, function($a, $b) {
return strcmp($a['title'], $b['title']);
});