آرشيو نويسندگان در مويبل تايپ

سلام.
از كجا شروع كنم؟ آهان!
اگر شما يك سايت يا وبلاگ گروهي داريد و بر حسب اتفاق اونو با Movable Type درست كرده باشيد ممكنه براتون پيش اومده باشه كه بخواهيد در كنار آرشيو تاريخي (روزانه، هفتگي، ماهيانه) و آرشيو موضوعي يك آرشيو بر اساس نويسندگان سايت داشته باشيد.
خب! اين مساله اين قدرها هم سخت نيست.
مواد لازم:
1- پلاگين mtauthors
2- چند دستور اسكريپت
3- چند دستور ام‌تي

روش كار:
ابتدا پلاگين mtauthors-1_32 را دانلود كنيد. سپس فايل mtauthors-1_32.zip را unzip‌ كرده، فايل authors.pl را در پوشه plugins و فايل authors.pm را در پوشه extlib/bradchoate در شاخه اصلي mt كپي كنيد.

(mt folder)/plugins/authors.pl
(mt folder)/extlib/bradchoate/authors.pm

مي‌خواهيم از اين پلاگين طوري استفاده كنيم كه اسامي كليه نويسندگان سايت را نمايش دهد و هنگامي كه روي هركدام از آنها كليك كرديم آرشيو مطالب نوشته شده توسط آن نويسنده نمايش داده شود.
براي نمايش نام نويسندگان از تگ <MTAuthors> استفاده مي‌كنيم. بدين صورت كه دستور زير ليست نويسندگان سايت شما رو نمايش مي‌ده:

<MTAuthors>
<MTAuthorNickname>
</MTAuthors>

راهنماي كامل پلاگين mtauthors رو مي‌تونيد از اينجا بخوانيد.
براي اين كه مطالب يك نويسنده هم نمايش داده بشه كافيه از اين دستور استفاده كنيد:
<MTEntries authors="اسم نويسنده">
...
...
</MTEntries>

تا اينجاي مساله چيز مبهمي نداره فقط موضوع اينه كه اگر بخواهيم از mtentries استفاده كنيم بايد در مقابل authors اسم نويسنده رو بنويسيم. براي اين كه به صورت اتوماتيك همه نويسنده‌ها رو داشته باشيم در اينجا از تگ MTEntryAuthor بايد استفاده كنيم. اشكالي كه به وجود مياد اينه كه ليست تمام نويسنده‌ها و مطالب اونها پشت سر هم نمايش داده مي‌شه كه خوب مطلوب ما نيست. ما مي‌خواهيم كه فقط ليست نويسنده دلخواه نمايش داده بشه نه همه. از طرفي نمي‌شه به اين سادگي كاري كرد كه براي هر نويسنده يك فايل درست بشه. به همين خاطر صفحه‌اي طراحي مي‌كنيم كه همه نويسنده‌ها و مطالبشون رو ايجاد كنه منتهي فقط يك نويسنده رو نمايش بده. براي اين كار از display: none بايد استفاده كنيم. براي اين كه بعد از كليك روي نام نويسنده اي يك div يا table نمايش داده بشه يا بالعكس از script استفاده مي‌كنيم.
خب ديگه! توضيحات اضافه بسه.

براي درست كردن قالب آرشيو نويسندگان به قسمت قالب‌ها (template) برويد. در قسمت تمپليت‌هاي اصلي يه قالب جديد ايجاد كنيد. اسمشو بگذاريد آرشيو نويسندگان يا authors archive اسم فايل خروجي رو هم بگذاريد authors.html يا هر چيزي كه خودتون مناسب مي‌دونيد. كدهاي تمپليت وبلاگ يا سايتتون رو اونجا بگذاريد تا كدهاي لازم براي نمايش آرشيو نويسندگان رو هم در جاي مناسب قرار بديم.
كدهايي كه براي اين منظور لازمه سه بخشه.
1- اسكريپت
2- نمايش نام نويسنده
3- نمايش مطالب نويسندگان
::::
1- اسكريپت
قبل از body اين دستورات رو قرار بديد:

<SCRIPT language=JavaScript type=text/javascript>
<!--
/* change page location to option selected from navigation drop-down */
function goUrl(Selected) {
var newURL = Selected.options[Selected.selectedIndex].value ;
if (newURL!=" ") {
document.location.href = newURL;
}
}
// -->

if (document.getElementById){
document.write('<style type="text/css">\n')
document.write('.submenu{display: none;}\n')
document.write('</style>\n')
}

/* function SwitchMenu(obj){
if(document.getElementById){
var el = document.getElementById(obj);
var ar = document.getElementById("masterdiv").getElementsByTagName("span");
if(el.style.display != "block"){
for (var i=0; i<ar.length; i++){
if (ar[i].className=="submenu")
ar[i].style.display = "block";
}
el.style.display = "block";
}else{
el.style.display = "none";
}
}
} */

function load()
{
window.status = "massage"
}
/* div for text and pictuer */
if (document.getElementById){
document.write('<style type="text/css">\n')
document.write('.submenu1{display: none;}\n')
document.write('</style>\n')
}
function SwitchMenu1(obj){
if(document.getElementById){
var el = document.getElementById(obj);
var ar = document.getElementById("masterdiv1").getElementsByTagName("span");
if(el.style.display != "block"){
for (var i=0; i<ar.length; i++){
if (ar[i].className=="submenu1")
ar[i].style.display = "none";
}
el.style.display = "block";
}else{
el.style.display = "none";
}
}
}

function load()
{
window.status = "massage"
}
</SCRIPT>

2- نمايش نام نويسندگان:
براي اين منظور اين دستورات رو در جايي كه مي‌خواهيد نام نويسندگان نمايش داده شوند قرار بديد:

آرشيو نويسندگان  <$MTBlogName$>:<br><br />
| <MTAuthors>
<b><span class=menutitle1 onclick="SwitchMenu1('sub<MTAuthorID>')"><a
href=#<MTAuthorID>><MTAuthorNickname></a></span> </b>|
</MTAuthors>
<br><br>&nbsp;
بر روي نام نويسنده كليك كنيد تا تيتر مطالبش نشان داده شود.<br />

3- نمايش آرشيو مطالب نويسندگان:
براي اين منظور دستورات زير رو در محلي كه مي‌خواهيد آرشيو مطالب نوشته شده‌ نويسنده دلخواه نمايش داده بشه قرار بديد. اين دستورات رو بهتره پايين‌تر از نام نويسندگان (قسمت دوم) قرار بديد:

<hr>
<DIV id=masterdiv1>
<MTAuthors>
<SPAN class=submenu1 id=sub<MTAuthorID>>
<MTAuthorNickname> :: تعداد مطالب: (<MTAuthorEntryCount>) <MTIfNonEmpty tag="MTAuthorEmail">::
<a href="mailto:<MTAuthorEmail spam_protect>">ايميل </a></MTIfNonEmpty><MTIfNonEmpty
tag="MTAuthorURL">:: <a target="_blank" href="<MTAuthorURL>">سايت</a></MTIfNonEmpty><br
/>
<hr>
<a name="#<MTAuthorID>"></a>
<MTEntries authors=MTEntryAuthor>
<div class=title_left>
<font face="Wingdings">û</font>&nbsp;<a href="<$MTEntryPermalink$>" title="لينك
مستقل"> <b><$MTEntryTitle$></b></a>
</div>
</MTEntries>
</span>
</MTAuthors>
</DIV>

در صفحه آرشيوي كه بدين روش درست مي‌شه نام نويسندگان نمايش داده مي‌شه، اگر بر روي هركدام از اونها كليك كنيد آرشيو مطالبش در زير نمايش داده مي‌شه. تعداد مطالب نوشته شده آن نويسنده نشون داده مي‌شه و در صورتي كه نويسنده ايميل يا سايت خودش رو در پروفايلش وارد كرده بود آنها هم در كنار اسمش نمايش داده مي‌شود.
توجه كنيد كه در اين جا در واقع اسمي كه از نويسنده نمايش داده مي‌شه اسم مستعارشه، اگر بخواين اسم اصلي يا همون يوزر نمايش داده بشه بايد از MTEntryAuthor به جاي MTAuthorNickname استفاده كنيد.
نمونه طراحي شده اين صفحه رو مي‌تونيد در صفحه آرشيو نويسندگان نسل3 مشاهده كنيد.
موفق باشيد.

Posted by motahari at | Comments (1)