2013-02-08 59 views
0

我正在使用wordpress,并且我正在为网站的每个页面创建一个“小部件选择器”。在每个页面的后端,我有15个复选框 - 如果用户选择一个复选框,它会在该页面的侧边栏中显示特定的小部件。使用PHP重新排序包括基于优先级/订单号

我有一个很大的PHP文档,包含15个。每个包括一个小部件。如果用户在该页面上选中一个框,则包括如下触发:

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

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

继承人什么我thinking-如果我能得到每个复选框吐出指定的顺序,我需要的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来完成。有什么想法吗?

+0

为小部件创建类,那么你可以创建订单,你想 – Tarilo 2013-02-08 15:00:34

+0

你能对你的想法扩展位实例?我可以为每个部件创建类......我想让用户提供订单。 – JCHASE11 2013-02-08 15:02:48

+0

我可以以某种方式将每个“块”放入单个数组中,然后使用排序功能? – JCHASE11 2013-02-08 15:06:21

回答

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; 
} 
+0

,这看起来很有前景,正是我所希望的。让我测试一下... – JCHASE11 2013-02-08 15:11:04

+0

这个很好用,谢谢!!! – JCHASE11 2013-02-08 15:34:19