CMS sayfaları sipariş nasıl?

2 Cevap php

Ben (o kullanmak asla ana içerik yönetim sistemleri kabartmak olmadan) ihtiyacı özellikle ne yapar ki benim müşteri biri için basit bir CMS yazdı.

Sayfaları ve haber (kenar çubuğunda göstermek kısa mesaj): CMS içerik iki tür oluşturmak ve yönetmek için onu sağlar.

Sayfaları alfabetik olarak sıralanmış web sitesinin navigasyon menüsünde görüntülenir. Müvekkilim özel bir sırayla sayfaları kendini sıralamak mümkün olmak istiyorum.

Bu programlama yapmak için en iyi yolu nedir? Ben sayfaları masaya "öncelik" adında bir sütun ekleyerek düşünüyorum. Bu bir numara olacak ve sayfaları ya ascendingly veya descendingly bu sayısına göre sıralanır. Ve müşteri her sayfa için bu numarayı düzenleme olabilir?

Sadece merak bu konuda düşünceleriniz nelerdir? Bunu yapmak için daha iyi bir yolu var mı? Bu amaç için bazı tasarım deseni?

2 Cevap

Ben şahsen jQuery UI sıralanabilir eklentisi kullanın. İstemci sürükleyin ve sırasını değiştirerek, bir listeden öğeleri bırakabilirsiniz.

Sonraki Ben öğeleri listesinde döngü tekrar jQuery kullanmak, kimlik CSV listesini derlemek ve sunucuya gönderin.

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(","));
}

ve sunucuda:

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

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

Bu güzel Design Pattern daha "hızlı 'n kirli" olabilir, ama çalışıyor.

Ben bir bütçe olsaydı, ben kullanıcı düzenlemek veya başka türlü kontrol etmek için bir alan verirdim. Kolay bir yöntem değerleri çoğaltılamaz edilebilir bir tamsayı alanı - bunları numarasını almak ve bir alana elle yazın izin. Açıkçası, bu hızlı ve kirli bir düzeltmedir - kullanıcılar sayfaların büyük bir dizisini kurar, daha sonra belirli bir yuvaya ortasında bir şey eklemek istiyor, bu bir sorun - öncelik değeri eşittir, böylece daha sonra sıralamak zorunda başka bir şey.

Float değerleri kullanarak başka bir olasılıktır. Siz bu durumda kullanıcı, sayısını görmek izin vermeyin. Kullanıcı öğeleri A ve B arasında madde C koymak istiyorsa, C=(A+B)/2 ondalık duyarlık bitmeden onları kez üzerinde birçok operasyon bu tür (birçok) yapalım olacağını bilmenin önceliğini ayarlayabilirsiniz hassas. Her zaman bir bakım komut sırayla veri almak ve yeni değerler atamak için yapabilir - Bu ayda bir ya da yılda bir kez çalıştırmak olabilir.

Fantezi değil, ama bunu uygulamak için ucuz.