Borna66
12-25-2009, 01:17 AM
من این مشکل رو با کمک آرش مصلحی (http://www.iranwebdesigning.com/) ( اینکارهی PHP ) حل کردم و گفتم اینجا هم به صورت مرحله به مرحله بذارم که بقیه فیضشو ببرند.
در حالت عادی اگر در صفحه اول و یا صفحات فرعی دیگر ( مثلا صفحهای حاوی تمام عنواین وبلاگ ) بخواهیم تعداد بازدید رو نشون بدیم مجبوریم که فایل Counter.php رو اینکلود کنیم. بنابراین هر بار که اون صفحات ( مثلا صفحه اول ) باز میشه، یک واحد به همه اون شمارندههای واقع در اون صفحه ( یعنی به تعداد بازدید پستها ) اضافه میشه درصورتی که اون آرشیو تکی دیده نشده! یعنی آمار کلی میره بالا و غیر واقعی میشه.
یه کلام بگم که اون مدلی آمار اشتباه خواهد بود. راهحل این قضیه هم اینکلود یک فایل جدید در صفحهی اول یا ... میباشد که فقط تعداد بازدیدها رو نشون بده و به شمارنده چیزی رو اضافه نکنه.
مرحله اول:
یک فایل با نام countershow.php بسازید و اونو یه جای مناسب upload کنید. این فایل حاوی کدهای زیر خواهد بود. به توضیحاتی که توی کد نوشته شده دقت کنید. (اگه اسم Table ی که از روی راهنمای احسان ساختین، رو عوض کردین؛ اسم جدید رو به جای mt_hits وارد کنید )
کد:
<?php
function showcounter($entry)
{
$dbhost = "localhost"; // The host where your database is
$dbname = "NAME"; // Your database name
$dbuser = "USER"; // The user name
$dbpass = "PASSWORD"; // The user's password
$connect = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname, $connect);
$query = "SELECT `hits` FROM `mt_hits` WHERE `entry`='$entry' ";
$res = mysql_query($query) ;
while ( $row = mysql_fetch_array($res)){
$hits=$row["hits"];
}
echo $hits;
}
?>
مرحله دوم:
اکنون وارد تمپلیت صفحه اصلی ( یا هر جایی که میخواهید تعداد بازدیدکننده هر مطلب را نشان دهید ) خود در مووبل تایپ شده (Main Index) و تغییرات زیر را انجام دهید.
کد زیر را در یک جای مناسب (ترجیحا بالای تمپلیت) قرار دهید.
کد:
<? include ("/home/username/public_html/countershow.php"); ?>
آدرسی که در کد فوق استفاده شده مختص سرورهای لینوکس است. در هر صورت منظور آدرس به فایل countershow.php است.
در جای مناسبی که میخواهید تعداد بازدید هر مطلب دیده شود، کد زیر را قرار دهید:
کد:
<? showcounter(<$MTEntryID$>) ?>
مرحله آخر:
تمپلیتهایی را که تغییر دادهاید، دوباری سازی کنید. و نتیجه را ببنید.
در حالت عادی اگر در صفحه اول و یا صفحات فرعی دیگر ( مثلا صفحهای حاوی تمام عنواین وبلاگ ) بخواهیم تعداد بازدید رو نشون بدیم مجبوریم که فایل Counter.php رو اینکلود کنیم. بنابراین هر بار که اون صفحات ( مثلا صفحه اول ) باز میشه، یک واحد به همه اون شمارندههای واقع در اون صفحه ( یعنی به تعداد بازدید پستها ) اضافه میشه درصورتی که اون آرشیو تکی دیده نشده! یعنی آمار کلی میره بالا و غیر واقعی میشه.
یه کلام بگم که اون مدلی آمار اشتباه خواهد بود. راهحل این قضیه هم اینکلود یک فایل جدید در صفحهی اول یا ... میباشد که فقط تعداد بازدیدها رو نشون بده و به شمارنده چیزی رو اضافه نکنه.
مرحله اول:
یک فایل با نام countershow.php بسازید و اونو یه جای مناسب upload کنید. این فایل حاوی کدهای زیر خواهد بود. به توضیحاتی که توی کد نوشته شده دقت کنید. (اگه اسم Table ی که از روی راهنمای احسان ساختین، رو عوض کردین؛ اسم جدید رو به جای mt_hits وارد کنید )
کد:
<?php
function showcounter($entry)
{
$dbhost = "localhost"; // The host where your database is
$dbname = "NAME"; // Your database name
$dbuser = "USER"; // The user name
$dbpass = "PASSWORD"; // The user's password
$connect = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname, $connect);
$query = "SELECT `hits` FROM `mt_hits` WHERE `entry`='$entry' ";
$res = mysql_query($query) ;
while ( $row = mysql_fetch_array($res)){
$hits=$row["hits"];
}
echo $hits;
}
?>
مرحله دوم:
اکنون وارد تمپلیت صفحه اصلی ( یا هر جایی که میخواهید تعداد بازدیدکننده هر مطلب را نشان دهید ) خود در مووبل تایپ شده (Main Index) و تغییرات زیر را انجام دهید.
کد زیر را در یک جای مناسب (ترجیحا بالای تمپلیت) قرار دهید.
کد:
<? include ("/home/username/public_html/countershow.php"); ?>
آدرسی که در کد فوق استفاده شده مختص سرورهای لینوکس است. در هر صورت منظور آدرس به فایل countershow.php است.
در جای مناسبی که میخواهید تعداد بازدید هر مطلب دیده شود، کد زیر را قرار دهید:
کد:
<? showcounter(<$MTEntryID$>) ?>
مرحله آخر:
تمپلیتهایی را که تغییر دادهاید، دوباری سازی کنید. و نتیجه را ببنید.