如何在CMS中订购页面?

Ric*_*nop 2 php mysql database-design

我为我的一个客户编写了一个简单的CMS,它专门满足他的需求(没有他永远不会使用的主流内容管理系统).

CMS使他能够创建和管理两种类型的内容:页面和新闻(侧边栏中显示的短消息).

页面按字母顺序显示在网站的导航菜单中.我的客户希望能够以自定义顺序对页面进行排序.

以编程方式执行此操作的最佳方法是什么?我正在考虑在页面表中添加一个名为"priority"的列.它将是一个数字,页面将根据此数字按升序或降序排序.客户可以为每个页面编辑这个号码吗?

只是好奇你对此有何看法?有一个更好的方法吗?为此目的的一些设计模式?

Les*_*Les 7

我个人使用jQuery ui可排序插件.客户端可以从列表中拖放项目,更改顺序.

接下来,我再次使用jQuery循环遍历项目列表,编译id的CSV列表并将其发送到服务器.

var imageList;

function init() {
    imageList = $("#imagelist");

    if(imageList.length > 0) {
        imageList.sortable({stop:onStopSorting});
    }
}

function onStopSorting() {
    var datas = imageList.find("span.data");
    var result = new Array();
    for(var i = 0; i < datas.length; i++) {
        result.push(datas.eq(i).html());
    }
    $("#imageSort").val(result.join(","));
}
Run Code Online (Sandbox Code Playgroud)

并在服务器上:

if(isset($_REQUEST["imageSort"]) && $_REQUEST["imageSort"] != "") {
    $imageIdList = explode(",", $_REQUEST["imageSort"]);

    for($i = 0; $i < count($imageIdList); $i++) {
        $this->setImagePriority($imageIdList[$i], $i+1);
    }
}
Run Code Online (Sandbox Code Playgroud)

它可能比一个漂亮的设计模式更"快"'脏,但它的工作原理.