在我下面的模式中,蛞蝓像
$parent_slug . '_' . url_title($posted_category_name)
.
因此,如果id_category = 1
的 slug 发生变化,例如Acura => My acura
,这意味着所有 subs slug 必须根据循环进行更改,但$parent_slug . '_' . url_title($posted_category_name)
在循环期间再次更改......但是如何?
在下面的数组之后,我添加了递归函数。
数据数组
Array
(
[0] => Array
(
[id_category] => 1
[id_parent] => 0
[level] => 1
[category] => Acura
[slug] => acura
[children] => Array
(
[0] => Array
(
[id_category] => 3
[id_parent] => 1
[level] => 2
[category] => Vigor
[slug] => acura_vigor
[children] => Array
(
[0] => Array
(
[id_category] => 5
[id_parent] => 3
[level] => 3
[category] => LS
[slug] => acura_vigor_ls
[children] => Array
(
[0] => Array
(
[id_category] => 6
[id_parent] => 5
[level] => 4
[category] => Alt 1
[slug] => acura_vigor_ls_alt-1
)
[1] => Array
(
[id_category] => 7
[id_parent] => 5
[level] => 4
[category] => Alt 2
[slug] => acura_vigor_ls_alt-2
)
)
)
)
)
)
)
)
rebuild_category_slug_index($target_map)
function rebuild_category_slug_index($target_table)
{
$active_table = tr_url_title($target_table);
$this->db->table_exists('my_'.$active_table ) || show_error(lang('admin|erros|table_not_found'),'500',lang('admin|errors|header500'));
$raw_data = $this->category_m->get('my_'.$active_table,array(),$order_str='id_category asc, id_parent asc',array(),'result_array'); // It just returns get all from table.
if($raw_data)
{
$treearr = array('0' => array('children'=> array()));
foreach($raw_data as $item)
{
// Here is the work. I should get $parent_slug and create current slug.
// $item['slug'] = $parent_slug . '_' . tr_url_title($item['category']);
$treearr[$item['id_category']] = $item;
if(!isset($treearr[$item['id_parent']])) $treearr[$item['id_parent']] = array('children'=> array());
$treearr[$item['id_parent']]['children'][] = &$treearr[$item['id_category']];
}
$tree = $treearr[0]['children'];
unset($treearr);
vdebug($tree); // For displaying formatted results
//return $tree;
}
}
我对此很满意,任何光线都值得赞赏。