آقاي مزینانی عزيز در نظر خواهي مطلب " آن وبلاگ نويس به مديرمسئول كيهان چه گفت؟ " با بي توجه اي به همه خواهش هاي من مبني بر نگذاشتن کامنت بي ربط به يادداشت، يک سوالي را مطرح کردند به اين صورت:
آیا می شه مطالب مرتبط از چند وبلاگ ام تی مختلف در یک سایت انتخاب بشن؟
مثلا در سه تا ساب دامین وبلاگ داشته باشیم و مطالب مرتبط از هر سه برای مطلب انتخاب بشه ؟
سوال خيلي جالبيه نه؟ راستش اول به ذهنم رسيد که به وسيله پلاگين otherblog اين کار را بکنم ولي انگار کارم يکم احمقانه بود، چون وقتي وارد ديتا بيس مي شوي چيزي بنام Category ID مي بيني که اينطور فکر کنم براي هر کتگوري يک آي دي داده ميشه و به اين صورت چون دو تا وبلاگ مختلف هم هستند بنابراين اي دي کتگوري ها متفاوت مي شود.
قبل از جواب سوال من يک روش جديدي متفاوت از پلاگين مطالب مرتبط براي نمايش مطالب مرتبط اينجا بگويم که اين روش براي کساني که که اصلا از کتگوري استفاده نمي کنند و مي خواهند يه چيزي توي مايه هاي مطالب مرتبط داشته باشند خيلي مفيد بيده هست. براي اين روش از پلاگين SQL استفاده کنيم که من قبلا روش اينستال کردنش را توي يادداشت "ادغام دو وبلاگ" نوشتم. بعد از اينکه اين پلاگين را نصب کرديد. اول بايد يک query براي متن در ديتابيستون انجام بديد. مثلا من براي وبلاگ خودم چون قسمت Excerpt به انگليسي هست و از قسمت Keywords هم واسه نظر خواهي استفاده مي کنم(که فکر کنم خيلي کار احمقانه اي دارم مي کنم و بايد تغييرش بدهم) واسه همين از اين دو قسمت چيز چندان جالبي نمي گيرم واسه همين من از قسمت Title و Body يک يادداشت استفاده مي کنم تا يه سرچ کامل بکنم و يکسري متن بگيرم، براي اين کار از کدهاي زير استفاده مي کنم :
ALTER TABLE mt_entry ADD FULLTEXT ( entry_title, entry_text, entry_excerpt )
بعد بوسيله پلاگين MTSQL از کدهاي زير استفاده مي کنم تا مطلبم را با مطالبي که بوسيله اون query سرچ شده مقايسه کنه و اگر مشابه هستند انها را ليست کنه. به اين ترتيب شما ليست مطالبي را خواهيد گرفت که کلمات مشابهي در انها بکار رفته و خوب قاعدتا موضوعي مشابه دارند.
<MTSQLEntries query="SELECT entry_id, entry_blog_id, MATCH (entry_title, entry_text, entry_excerpt) AGAINST ('[MTEntryBody encode_php='q']') AS score FROM mt_entry
WHERE MATCH (entry_title, entry_text, entry_excerpt) AGAINST ('[MTEntryBody encode_php='q']')
AND entry_id != '[MTEntryID]' AND entry_blog_id = [MTBlogID] AND entry_status=2 ORDER
BY score DESC LIMIT 0 , 4" unfiltered="1">
<a href="<MTEntryLink>"><MTEntryTitle></a><br/>
</MTSQLEntries>
ام تي کارها خودشون با يک نگاه مي توانند بفهمند که چگونه ميشه از همين کدها براي نشان دادن مطلب مرتبط از يک وبلاگ ديگه توي يک وبلاگ ديگه استفاده کرد. براي اين کار از کدهاي زير استفاده مي کنيد :
<MTSQLEntries query="SELECT entry_id, entry_blog_id, MATCH (entry_title, entry_text, entry_excerpt) AGAINST ('[MTEntryBody encode_php='q']') AS score FROM mt_entry
WHERE MATCH (entry_title, entry_text, entry_excerpt) AGAINST ('[MTEntryBody encode_php='q']')
AND entry_id != '[MTEntryID]' AND entry_blog_id in (2) AND entry_status=2 ORDER
BY score DESC LIMIT 0 , 4" unfiltered="1">
<a href="<MTEntryLink>"><MTEntryTitle></a><br/>
</MTSQLEntries>
همين طور که مي بيند تنها چيزي که بهش اضافه شده blog_ID هست که اينجا شما مشخص مي کنيد مطلب کدام وبلاگ را با اين يکي وبلاگ مقايسه بکنه. اگر هم الان به يکسري از مطالب وبلاگ من نگاه کنيد مي بينيد که يکسري لينک از وبلاگ
کليک انلاين در پايين مطالب هست که نتيجه همين کدها هست. جالب تر اينکه اگر چنيدن وبلاگ داريدمي توانيد مطالب همه وبلاگها را با يکي مقايسه کنيد و مطالب مشابه را نمايش دهيد براي اين کار تنها کاري که بايد بکنيد اين هست که اي دي وبلاگ ها را با يک کاما از هم جدا کنيد، به اين صورت :
<MTSQLEntries query="SELECT entry_id, entry_blog_id, MATCH (entry_text,
entry_excerpt) AGAINST ('[MTEntryBody encode_php='q']') AS score FROM mt_entry
WHERE MATCH (entry_text, entry_excerpt) AGAINST ('[MTEntryBody encode_php='q']')
AND entry_id != '[MTEntryID]' AND entry_blog_id in (1,2) AND entry_status=2 ORDER
BY score DESC LIMIT 0 , 4" unfiltered="1">
<a href="<MTEntryLink>"><MTEntryTitle></a><br/>
</MTSQLEntries>
اينجوري وبلاگهايي که همشون روي يه دومين هستند و از يک ديتابيس استفاده مي کنند و مثلا نويسنده هاي مختلفي دارند مي توانند به مطالب مشابه همديگر لينک دهند.
نکته مهم براي استفاده از اين روش چگونگي سرچ کردن اولي يا همان query اولي هست. براي کساني که از Excerpt و Keywords استفاده اي نمي کنند بهتر است که اين query را مبني بر اين دو تا قسمت اجرا بکنند. اينجوري نتيجه بهتري به دست ميارند. من خودم چنيدن بار اين کدها را براي وبلاگ خودم عوض کردم تا بالاخره توانستم او راهي که بهترين مطالب را نمايش ميدهد را انتخاب کنم. پس اگر بار اول کار کرد بايد هي اين کدها را عوض کنيد و خودتون باهاش در واقع بازي کنيد تا بتوانيد راهش بياندازيد. نکته ديگه هم اينکه من براي وبلاگ خودم مطالب گرفته از جستجوي ديتابيس را فقط با متن وبلاگ اصلي ام مقايسه کدم شما مي توانيد آنها را با تيتر و يا حتي با Keywords يادداشت مقايسه کنيد، يعني کدهاي مربوط به query ميشه:
ALTER TABLE mt_entry ADD FULLTEXT ( entry_keywords, entry_title, entry_excerpt )
و کدهاي نمايش مطالب ميشه:
<MTSQLEntries query="SELECT entry_id, MATCH (entry_keywords, entry_title,
entry_excerpt) AGAINST ('[MTEntryKeywords encode_php='q'] [MTEntryTitle encode_php='q']')
AS score FROM mt_entry WHERE MATCH (entry_keywords, entry_title, entry_excerpt)
AGAINST ('[MTEntryKeywords encode_php='q'] [MTEntryTitle encode_php='q']') AND
entry_id != '[MTEntryID]' AND entry_blog_id = [MTBlogID] AND entry_status=2 ORDER
BY score DESC LIMIT 0 , 4" unfiltered="1">
<a href="<MTEntryLink>"><MTEntryTitle></a><br/>
</MTSQLEntries>
همينجوري که مي بينيد اينجا شما ده ها راه مختلف داريد، خلاصه اين راه يه چند روزي سرگرمتون مي کند :)
تکميل: جهت احتياط اگر کسي نمي داند چگونه يک query روي يک ديتابيس اجرا کنه:
۱ - cpanel وب سايت، ۲- وارد MySQL Databases مي شويد، ۳- در پايين صفحه روي phpMyAdmin کليک کنيد، ۴- بالا گوشه سمت چپ چند تا ايکون(icon)(واسه من۵ تا، فکر کنم واسه همه همين طور باشد.)هست. وسطي (يا حالا يکشون) نوشته querywindow ، وقتي روش کليک کنيد يک صفحه کوچولو باز مي شه که کدهاتون را در ان وارد مي کنيد و کلمه Go را مي زنيد!
همین طور در این باره در کلیک آنلاین :
در بین نوشته های قبلی در این باره :
2005, 02, 01 -
اختصاص عكس به هر موضوع
2004, 10, 04 -
پينگ سايت weblogs.com چه مرگشه؟!
2004, 09, 26 -
پلاگين "در چنين روزي" با پي اچ پي
2004, 09, 06 -
متمايز کردن نوشته هاي جديد در ام تي
2004, 08, 25 -
نظر خواهي هاي بسته شده در ام تي