PDA

View Full Version : بهترین روش ساخت Archive در وبلاگ چیه؟



chemical
پنج شنبه 23 فروردین 1386, 10:40 صبح
کسی می دونه بهترین روش برای ایجاد یه Archive در وبلاگی که خودمون برنامشو نوشته باشیم چیه؟
البته می تونم یه جورای درستش کنم اما میخوام بدونم که راه استاندارد یا بهینه ای وجود داره یا نه!!
ممنون میشم.

Keramatifar
پنج شنبه 23 فروردین 1386, 15:31 عصر
چه جالب اتفاقا منم در حال نوشتن وبلاگ هستم و الان دارم بخش آرشیوش را می نویسم (البته با C# )
چند تا راه برای اینکار وجود داره (البته نگفتی با تاریخ شمسی یا میلادی) من با تاریخ شمسی در نظر می گیرم:

اول باید یه Query (Stored Procedure)بنویسی که دو تا پارامتر از نوع DateTime داشته باشه و در ظرط Where مشخص میکنی که رکوردهایی رو نمایش بده که فیلد DateTime شون بین این دو تاریخ باشه


ALTERProcedure [dbo].[SP_Posts_SelectArchive]
@DateTime1 datetime,
@DateTime2 datetime
As
Begin
SELECT Posts.[DateTime], Posts.Title,Posts.CategoryID, Categories.Title as [CateTitle] ,Posts.ID, Posts.UserID, Posts.[Text], Posts.[DateTime], Users.Username
FROM Posts LeftJOIN
Users ON Posts.ID = Users.ID
LeftJoin Categories ON
Posts.CategoryID = Categories.ID
Where Posts.[DateTime] between @DateTime1 and @DateTime2
End

، بعد توی برنامه یک TreeView میذاری و بعد ماه های سال رو بهش Add می کنی بعد می آی توی
TreeView1_SelectedNodeChangedبرنامه این دو تا پارامتر رو بر اساس ماهی که انتخاب شده مقدار دهی می کنی: مثلا ماه فروردین: 21 مارچ تا 20 آپریل



switch (TreeView2.SelectedValue.ToString())
{
case"1":
{
int yearshamsi = int.Parse(DropDownList2.SelectedValue);
int yearmiladi = yearshamsi + 621;
SqlDataSource5.SelectParameters["DateTime1"].DefaultValue = yearmiladi.ToString() + "/03/21";
SqlDataSource5.SelectParameters["DateTime2"].DefaultValue = yearmiladi.ToString() + "/04/20";
Repeater1.DataSource = SqlDataSource5;
Repeater1.DataSourceID = "";
Repeater1.DataBind();
break;
}
case"2":
{
int yearshamsi = int.Parse(DropDownList2.SelectedValue);
int yearmiladi = yearshamsi + 621;
SqlDataSource5.SelectParameters["DateTime1"].DefaultValue = yearmiladi.ToString() + "/04/21";
SqlDataSource5.SelectParameters["DateTime2"].DefaultValue = yearmiladi.ToString() + "/05/21";
Repeater1.DataSource = SqlDataSource5;
Repeater1.DataSourceID = "";
Repeater1.DataBind();
break;
}

البته دو خط اول بخش های Case رو برای تبدیل سال میلادی به شمسی قرار دادم که شما می تونید این کار رو نکنید ...

البته روشهای دیگری هم برای نوشتن آرشیو هست که بهتره ولی وقتگیر تره من ترجیح دادم از این روش ساده تر استفاده کنم

Pioneers
پنج شنبه 23 فروردین 1386, 15:42 عصر
see http://www.kayhannews.ir/arch.htm for instance.

you must categories your archive ba a category like day, week and so on.

chemical
پنج شنبه 23 فروردین 1386, 18:21 عصر
مممممم، خیلی ممنون Wish Master، روش جالبیه. البته من نمی خوام از TreeView استفاده کنم اما خوب به هر حال با هر نوع لینک یا دکمه میشه این کدها رو call کرد. فقط به نظرم بهتره شما به جای 12 بار تکرار این کد yearshamsi و yearmiladi رو به یه سابروتین یا کلاس Pass کنین.
و اما روش پیشنهادی شما Pioneers عزیز. بیشتر وبلاگها رو که دیدم انگار از این روش استفاده کردن ولی آیا با استفاده از این روش هی باید دستی Folder بسازیم و فایل کپی کنیم و آدرس بدیم؟ یا با کد نویسی Folder میسازیم؟ کلا روشش چیه؟