使用PHP重新排序包括基于优先级/订单号

时间:2013-02-08 14:44:51

标签: php sorting include

我正在使用wordpress,我正在为网站的每个页面创建一个“小部件选择器”。在每个页面的后端,我有15个复选框 - 如果用户选择了一个复选框,它会在该页面的侧边栏中显示该特定的小部件。

我有一个大型PHP文档,包含15个。每个包含都是一个小部件。如果用户选中该页面上的某个框,则会触发该包含:

 if( in_array( 'Blog', get_field('modules') ) ) { 
    include 'modules/blog.php'; 
 }

这很棒!但是,用户无法指定窗口小部件的显示顺序。我需要开发某种系统,允许用户选择模块的顺序。

继续我的想法 - 如果我可以让每个复选框吐出指定的顺序,我需要某种方式在PHP中重新定位包含:

 if( in_array( 'Blog', get_field('modules') ) ) { 
    $order = 2;
    include 'modules/blog.php'; 
 }

if( in_array( 'Gallery', get_field('modules') ) ) { 
    $order = 1;
    include 'modules/gallery.php'; 
}

现在我需要一些方法根据提供的订单重新排序这两个“块”。我能以某种方式实现这一目标吗?显然我想使用PHP,但如果不可能,我可以使用jQuery。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

不是包含模块,而是将列表推送到最后将包含它们的数组。像:

$final_modules = array();
 if( in_array( 'Blog', get_field('modules') ) ) { 
    $order = 2;
    $final_modules[$order] = 'modules/blog.php';
 }

if( in_array( 'Gallery', get_field('modules') ) ) { 
    $order = 1;
    $final_modules[$order] = 'modules/gallery.php';
}

//sort based on key
ksort($final_modules);

foreach($final_modules as $order => $include_file) {
    include $include_file;
}