raziee
شنبه 07 آذر 1388, 22:01 عصر
"با توجه به محدودیت آپلود در سایت میتوانید پاور پوینت مربوطه را دانلود کنید تا از تمامی تصاویر استفاده کنید."
"نمونه سورس برای دانلود در فایل های ضمیمه آورده شده است."
در سرویس های وبلاگ دهی به کاربر امکانات زیادی داده می شود از جمله آنکه هر کار بر بتواند قالب وبلاگ خود را با سلیقه ی شخصی اش طراحی کند. بدون آنکه نیاز به دانش برنامه نویسی و ارتباط با بانک اطلاعاتی داشته باشد و تنها دانستن کد های HTML پاسخ گوی نیاز اوست.
------------------
این مقاله برای چه کسانی مفید خواهد بود؟
اگر شما برنامه نویس تحت وب باشید و سرویس هایی را ایجاد میکنید که به کاربر سایت امکان ویرایش قالب وبسایت را می دهد این مقاله حتما مورد توجهتان قرار خواهد گرفت.
اگر شما در آینده قصد دارید که به جمع برنامه نویسان بپیوندید میتوانید با فراگیری این مقاله دیدی فرا تر از آنچه تا امروز داشته اید ، پیدا کنید.
و یا حتی اگر شما یک برنامه نویس نیستید و تنها یک نویسنده ی وبلاگ هستید نیز ممکن است این مقاله مورد توجه واقع بشود.
مواردی که هدف این مقاله نیست!
این مقاله برای آموزش برنامه نویسی و یا طراحی وب سایت نیست.
این مقاله برای ایجاد و به کار گیری بانک های اطلاعاتی نیست.
مقدمه
در سیستم های وبلاگ دهی تگ هایی وجود دارد که از تگ های تعریف شده HTML و یا DHTML نیست. همچون سرویس بلاگفا که دارای تگ <BLOGFA> است .
همچنین دارای شبهه تگ هایی نظیر :
<-blogtitle->
[-blogtitle-]
<%blogtitle%>
هستند که در این مقاله با چگونگی ایجاد و به کارگیری آن آشنا خواهید شد.
آشنایی با تگ ها:
تگ ها در یک صفحه ی HTML ، به مرورگر میفهماند که قرار است کار خاصی انجام شود.
به طور مثال:
<div style=“color:green;”>سلام</div>
زمانی که مرورگر به این تگ رسید ، متن ”سلام“ را با رنگ سبز نمایش میدهد.
تگ ها از قوائد خاصی پیروی میکنند. مثلا هر تگ که شروع میشود باید پایانی داشته باشد. که این پایان یا در همان تگ شروع است: <br/> و یا خود تگ پایانیست: </div> .
تگ های سرویس های وبلاگ:
این تگ ها کاملا شبیه به تگ های HTML هستند اما جزء تگ های معین برای HTML نیستند و فقط کد هایی به منظور مشخص کردن قسمتی برای انجام عملیات جایگذاری(replace) توسط سرور هستند.
از این رو از این بعد ار این مقاله به جای ”تگ“ به آن ها ” کدهای مشخصه ” میگوییم.
برای درک بهتر در ادامه به ساخت یک سرویس دهنده که قابلیت ”ویرایش قالب“ را داشته باشد میپردازم و با آن توضیح میدهم.
در تصویر بعدی که مشاهده خواهید کرد ، تصویر صفحه ای است که کاربران یک سرویس در آن قالب وبلاگ خود را ویرایش میکنند.
به قسمت هایی که مشخص شدند توجه کنید.
ویرایش قالب وبلاگ
کد های مشخصه را کاربر در کادر متن مربوطه (ویرایش قالب) وارد میکند.
هر کدام از این کدهای مشخصه وظیفه ی خاصی دارند که از طرف سرویس ارائه دهنده مشخص می شود.
در این مثال وظایف آنها را اینگونه بیان کردیم:
<-BlogTitle-> : مشخص کننده ی نام وبلاگ.
<-BlogDescription-> : مشخص کننده توضیحات وبلاگ.
<BLOGPOST></BLOGPOST> : ارائه ی بلاک مربوط به پست ها. کدهای مربوط به پست باید داخل این بلاک قرار بگیرد.
<-PostTitle-> : مشخص کننده عنوان پست.
<-PostContent-> : مشخص کننده متن پست.
تصویر بعد خروجی یک وبلاگ توسط کاربر (کلاینت) در یک مرورگر را نمایش خواهد داد.
40445
تصویر زیر سورس صفحه است که توسط سرویس دهنده تولید شده:
40447
مشاهده کردید که سورس آن به چه صورت است و خبری از آن کدهای مشخصه در سورس صفحه نیست.
دوباره به ویرایش قالب میرویم و قالب خود را اینگونه تغییر میدهیم.
<html>
<head>
<title><-BlogTitle-></title>
<style>
Body{background-color:Green;color:#ffffff;font-family:tahoma;}
.Post{padding:5px;background-color:#000000; border:solid 2px C#ccccc;text-align:right;}
.PostTitle{padding:5px;background-color:#ffffff; color:blue;font-weight:bold;}
.PostContent{padding:15px;font-size:9pt;}
</style>
</head>
<body dir="rtl">
<center>
<div style="width:800px;">
<h2><-BlogTitle-></h2>
<h5><-BlogDescription-></h5>
<BLOGPOST>
<div class="Post">
<div class="PostTitle"><-PostTitle-></div>
<div class="PostContent"><-PostContent-></div>
</div></br>
</BLOGPOST>
</br>
</div>
</center>
</body>
</html>
روش کار
برای پیاده سازی این روش می بایست در بانک اطلاعاتی جدولی را ایجاد کرد تا قالب های ایجاد شده توسط کار بر را ذخیره کرد.
جدول دیگری را برای نگهداری پست ها(مطالب) در بانک ایجاد میکنیم.
ساخت سورس وبلاگ
بعد از درخواست یک کاربر (کلاینت) برای نمایش یک وبلاگ به سرور ، سرور شروع به تراکنش هایی با بانک اطلاعاتی کرده و اطلاعات این دو جدول (و جداول دیگر مورد نیاز (مثلا لینکستان، آرشیو وبلاگ و ...)) را خوانده و پردازش های مورد نیاز را انجام داده و سورس HTML آن را تولید کرده و به کاربر درخواست کننده (کلاینت) می فرستند.
ایجاد کلاس و نوشتن کد
کلاسی با نام CreateSource برای ساخت سورس ایجاد کرده و در آن دو متغیر سراسری ایجاد میکنیم.
string template;
string tempPost;
نحوه کار به این صورت است که ابتدا قالب وبلاگ از بانک اطلاعاتی گرفته شده و سپس اطلاعات وبلاگ به جای کدهای مشخصه جایگذاری شود و در نهایت به سمت کاربر درخواست کننده(کلاینت) فرستاده شود.
در ادامه کدهای مربوط به متد RetrieveTemplate که به منظور گرفتن قالب وبلاگ است را مشاهده میکنید.
private void RetrieveTemplate()
{
try
{
DataTable myDataTable = new DataTable();
WeblogServise.myClass.Connection myConnection = new WeblogServise.myClass.Connection();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.CommandText = "sp_RetrieveTemplate";
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.AddWithValue("@UserID", "1");
myDataTable = myConnection.Retrieve(sqlCommand);
template = myDataTable.Rows[0]["Template"].ToString();
myDataTable = null;
myConnection = null;
sqlCommand = null;
}
catch { }
}
متد ReplaceOtherTag :
private void ReplaceOtherTag()
{
template = template.Replace("<-BlogURL->", "me.BlogServise.com");
template = template.Replace("<-BlogDescription->", "این بلاگ برای آموزش کد های سروریس دهندگان وبلاگ میباشد.");
template = template.Replace("<-BlogTitle->", "وبلاگ شخصی من....");
}
در این متد کدهای مشخصه ای که مربوط به وبلاگ میباشد جایگزین میشوند.
کدهای کامل کلاس:
using System;
using System.Data;
using System.Data.SqlClient;
namespace WeblogServise.myClass
{
public class CreateSource
{
string template;
string tempPost;
public string RetrieveSource()
{
RetrieveTemplate();
ReplaceOtherTag();
GetPostSource();
return template;
}
private void RetrieveTemplate()
{
try
{
DataTable myDataTable = new DataTable();
WeblogServise.myClass.Connection myConnection = new WeblogServise.myClass.Connection();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.CommandText = "sp_RetrieveTemplate";
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.AddWithValue("@UserID", "1");
myDataTable = myConnection.Retrieve(sqlCommand);
template = myDataTable.Rows[0]["Template"].ToString();
myDataTable = null;
myConnection = null;
sqlCommand = null;
}
catch { }
}
private void GetPostSource()
{
int startTag;
int finishTag;
int len;
startTag = int.Parse(this.template.IndexOf("<BLOGPOST>").ToString());
startTag += 10;
finishTag = int.Parse(this.template.IndexOf("</BLOGPOST>").ToString());
if (finishTag > startTag)
{
len = finishTag - startTag;
tempPost = this.template.Substring(startTag, len).Trim();
this.template = this.template.Remove(startTag, len);
}
template = template.Replace("<BLOGPOST></BLOGPOST>", ReplacePost());
}
private string ReplacePost()
{
string title;
string content;
string temp1 = "";
string temp2 = "";
try
{
DataTable myDataTable = new DataTable();
WeblogServise.myClass.Connection myConnection = new WeblogServise.myClass.Connection();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.CommandText = "sp_RetrievePost";
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.AddWithValue("@UserID", "1");
myDataTable = myConnection.Retrieve(sqlCommand);
for (int Counter = 0; Counter <= myDataTable.Rows.Count -1; Counter++)
{
temp1 = tempPost;
title = myDataTable.Rows[Counter]["Title"].ToString();
content = myDataTable.Rows[Counter]["Content"].ToString();
temp1 = temp1.Replace("<-PostTitle->", title);
temp1 = temp1.Replace("<-PostContent->", content);
temp2 += temp1;
}
myDataTable = null;
myConnection = null;
sqlCommand = null;
}
catch { }
return temp2;
}
private void ReplaceOtherTag()
{
template = template.Replace("<-BlogURL->", "me.BlogServise.com");
template = template.Replace("<-BlogDescription->", "این بلاگ برای آموزش کد های سروریس دهندگان وبلاگ میباشد.");
template = template.Replace("<-BlogTitle->", "وبلاگ شخصی من....");
}
}
}
نتیجه :
کدهایی نظیر: <Blogfa> ، <-BlogTitle-> ، <%BlogTitle%> و .... کد هایی برای مشخص کردن نقاطی برای پردازش خاصی توسط سرور است که ما آن ها را ”کدهای مشخصه“ نامیدیم.
مقادیر مربوطه را به جای کدهای مشخصه جایگزین کرده و به کاربر نمایش میدهیم.
"نمونه سورس برای دانلود در فایل های ضمیمه آورده شده است."
در سرویس های وبلاگ دهی به کاربر امکانات زیادی داده می شود از جمله آنکه هر کار بر بتواند قالب وبلاگ خود را با سلیقه ی شخصی اش طراحی کند. بدون آنکه نیاز به دانش برنامه نویسی و ارتباط با بانک اطلاعاتی داشته باشد و تنها دانستن کد های HTML پاسخ گوی نیاز اوست.
------------------
این مقاله برای چه کسانی مفید خواهد بود؟
اگر شما برنامه نویس تحت وب باشید و سرویس هایی را ایجاد میکنید که به کاربر سایت امکان ویرایش قالب وبسایت را می دهد این مقاله حتما مورد توجهتان قرار خواهد گرفت.
اگر شما در آینده قصد دارید که به جمع برنامه نویسان بپیوندید میتوانید با فراگیری این مقاله دیدی فرا تر از آنچه تا امروز داشته اید ، پیدا کنید.
و یا حتی اگر شما یک برنامه نویس نیستید و تنها یک نویسنده ی وبلاگ هستید نیز ممکن است این مقاله مورد توجه واقع بشود.
مواردی که هدف این مقاله نیست!
این مقاله برای آموزش برنامه نویسی و یا طراحی وب سایت نیست.
این مقاله برای ایجاد و به کار گیری بانک های اطلاعاتی نیست.
مقدمه
در سیستم های وبلاگ دهی تگ هایی وجود دارد که از تگ های تعریف شده HTML و یا DHTML نیست. همچون سرویس بلاگفا که دارای تگ <BLOGFA> است .
همچنین دارای شبهه تگ هایی نظیر :
<-blogtitle->
[-blogtitle-]
<%blogtitle%>
هستند که در این مقاله با چگونگی ایجاد و به کارگیری آن آشنا خواهید شد.
آشنایی با تگ ها:
تگ ها در یک صفحه ی HTML ، به مرورگر میفهماند که قرار است کار خاصی انجام شود.
به طور مثال:
<div style=“color:green;”>سلام</div>
زمانی که مرورگر به این تگ رسید ، متن ”سلام“ را با رنگ سبز نمایش میدهد.
تگ ها از قوائد خاصی پیروی میکنند. مثلا هر تگ که شروع میشود باید پایانی داشته باشد. که این پایان یا در همان تگ شروع است: <br/> و یا خود تگ پایانیست: </div> .
تگ های سرویس های وبلاگ:
این تگ ها کاملا شبیه به تگ های HTML هستند اما جزء تگ های معین برای HTML نیستند و فقط کد هایی به منظور مشخص کردن قسمتی برای انجام عملیات جایگذاری(replace) توسط سرور هستند.
از این رو از این بعد ار این مقاله به جای ”تگ“ به آن ها ” کدهای مشخصه ” میگوییم.
برای درک بهتر در ادامه به ساخت یک سرویس دهنده که قابلیت ”ویرایش قالب“ را داشته باشد میپردازم و با آن توضیح میدهم.
در تصویر بعدی که مشاهده خواهید کرد ، تصویر صفحه ای است که کاربران یک سرویس در آن قالب وبلاگ خود را ویرایش میکنند.
به قسمت هایی که مشخص شدند توجه کنید.
ویرایش قالب وبلاگ
کد های مشخصه را کاربر در کادر متن مربوطه (ویرایش قالب) وارد میکند.
هر کدام از این کدهای مشخصه وظیفه ی خاصی دارند که از طرف سرویس ارائه دهنده مشخص می شود.
در این مثال وظایف آنها را اینگونه بیان کردیم:
<-BlogTitle-> : مشخص کننده ی نام وبلاگ.
<-BlogDescription-> : مشخص کننده توضیحات وبلاگ.
<BLOGPOST></BLOGPOST> : ارائه ی بلاک مربوط به پست ها. کدهای مربوط به پست باید داخل این بلاک قرار بگیرد.
<-PostTitle-> : مشخص کننده عنوان پست.
<-PostContent-> : مشخص کننده متن پست.
تصویر بعد خروجی یک وبلاگ توسط کاربر (کلاینت) در یک مرورگر را نمایش خواهد داد.
40445
تصویر زیر سورس صفحه است که توسط سرویس دهنده تولید شده:
40447
مشاهده کردید که سورس آن به چه صورت است و خبری از آن کدهای مشخصه در سورس صفحه نیست.
دوباره به ویرایش قالب میرویم و قالب خود را اینگونه تغییر میدهیم.
<html>
<head>
<title><-BlogTitle-></title>
<style>
Body{background-color:Green;color:#ffffff;font-family:tahoma;}
.Post{padding:5px;background-color:#000000; border:solid 2px C#ccccc;text-align:right;}
.PostTitle{padding:5px;background-color:#ffffff; color:blue;font-weight:bold;}
.PostContent{padding:15px;font-size:9pt;}
</style>
</head>
<body dir="rtl">
<center>
<div style="width:800px;">
<h2><-BlogTitle-></h2>
<h5><-BlogDescription-></h5>
<BLOGPOST>
<div class="Post">
<div class="PostTitle"><-PostTitle-></div>
<div class="PostContent"><-PostContent-></div>
</div></br>
</BLOGPOST>
</br>
</div>
</center>
</body>
</html>
روش کار
برای پیاده سازی این روش می بایست در بانک اطلاعاتی جدولی را ایجاد کرد تا قالب های ایجاد شده توسط کار بر را ذخیره کرد.
جدول دیگری را برای نگهداری پست ها(مطالب) در بانک ایجاد میکنیم.
ساخت سورس وبلاگ
بعد از درخواست یک کاربر (کلاینت) برای نمایش یک وبلاگ به سرور ، سرور شروع به تراکنش هایی با بانک اطلاعاتی کرده و اطلاعات این دو جدول (و جداول دیگر مورد نیاز (مثلا لینکستان، آرشیو وبلاگ و ...)) را خوانده و پردازش های مورد نیاز را انجام داده و سورس HTML آن را تولید کرده و به کاربر درخواست کننده (کلاینت) می فرستند.
ایجاد کلاس و نوشتن کد
کلاسی با نام CreateSource برای ساخت سورس ایجاد کرده و در آن دو متغیر سراسری ایجاد میکنیم.
string template;
string tempPost;
نحوه کار به این صورت است که ابتدا قالب وبلاگ از بانک اطلاعاتی گرفته شده و سپس اطلاعات وبلاگ به جای کدهای مشخصه جایگذاری شود و در نهایت به سمت کاربر درخواست کننده(کلاینت) فرستاده شود.
در ادامه کدهای مربوط به متد RetrieveTemplate که به منظور گرفتن قالب وبلاگ است را مشاهده میکنید.
private void RetrieveTemplate()
{
try
{
DataTable myDataTable = new DataTable();
WeblogServise.myClass.Connection myConnection = new WeblogServise.myClass.Connection();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.CommandText = "sp_RetrieveTemplate";
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.AddWithValue("@UserID", "1");
myDataTable = myConnection.Retrieve(sqlCommand);
template = myDataTable.Rows[0]["Template"].ToString();
myDataTable = null;
myConnection = null;
sqlCommand = null;
}
catch { }
}
متد ReplaceOtherTag :
private void ReplaceOtherTag()
{
template = template.Replace("<-BlogURL->", "me.BlogServise.com");
template = template.Replace("<-BlogDescription->", "این بلاگ برای آموزش کد های سروریس دهندگان وبلاگ میباشد.");
template = template.Replace("<-BlogTitle->", "وبلاگ شخصی من....");
}
در این متد کدهای مشخصه ای که مربوط به وبلاگ میباشد جایگزین میشوند.
کدهای کامل کلاس:
using System;
using System.Data;
using System.Data.SqlClient;
namespace WeblogServise.myClass
{
public class CreateSource
{
string template;
string tempPost;
public string RetrieveSource()
{
RetrieveTemplate();
ReplaceOtherTag();
GetPostSource();
return template;
}
private void RetrieveTemplate()
{
try
{
DataTable myDataTable = new DataTable();
WeblogServise.myClass.Connection myConnection = new WeblogServise.myClass.Connection();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.CommandText = "sp_RetrieveTemplate";
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.AddWithValue("@UserID", "1");
myDataTable = myConnection.Retrieve(sqlCommand);
template = myDataTable.Rows[0]["Template"].ToString();
myDataTable = null;
myConnection = null;
sqlCommand = null;
}
catch { }
}
private void GetPostSource()
{
int startTag;
int finishTag;
int len;
startTag = int.Parse(this.template.IndexOf("<BLOGPOST>").ToString());
startTag += 10;
finishTag = int.Parse(this.template.IndexOf("</BLOGPOST>").ToString());
if (finishTag > startTag)
{
len = finishTag - startTag;
tempPost = this.template.Substring(startTag, len).Trim();
this.template = this.template.Remove(startTag, len);
}
template = template.Replace("<BLOGPOST></BLOGPOST>", ReplacePost());
}
private string ReplacePost()
{
string title;
string content;
string temp1 = "";
string temp2 = "";
try
{
DataTable myDataTable = new DataTable();
WeblogServise.myClass.Connection myConnection = new WeblogServise.myClass.Connection();
SqlCommand sqlCommand = new SqlCommand();
sqlCommand.CommandText = "sp_RetrievePost";
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.AddWithValue("@UserID", "1");
myDataTable = myConnection.Retrieve(sqlCommand);
for (int Counter = 0; Counter <= myDataTable.Rows.Count -1; Counter++)
{
temp1 = tempPost;
title = myDataTable.Rows[Counter]["Title"].ToString();
content = myDataTable.Rows[Counter]["Content"].ToString();
temp1 = temp1.Replace("<-PostTitle->", title);
temp1 = temp1.Replace("<-PostContent->", content);
temp2 += temp1;
}
myDataTable = null;
myConnection = null;
sqlCommand = null;
}
catch { }
return temp2;
}
private void ReplaceOtherTag()
{
template = template.Replace("<-BlogURL->", "me.BlogServise.com");
template = template.Replace("<-BlogDescription->", "این بلاگ برای آموزش کد های سروریس دهندگان وبلاگ میباشد.");
template = template.Replace("<-BlogTitle->", "وبلاگ شخصی من....");
}
}
}
نتیجه :
کدهایی نظیر: <Blogfa> ، <-BlogTitle-> ، <%BlogTitle%> و .... کد هایی برای مشخص کردن نقاطی برای پردازش خاصی توسط سرور است که ما آن ها را ”کدهای مشخصه“ نامیدیم.
مقادیر مربوطه را به جای کدهای مشخصه جایگزین کرده و به کاربر نمایش میدهیم.