PDA

View Full Version : شمارش تعداد دفعات مشاهده هر مطلب


Mahan
5 February 2006, 09:45 PM
ملزومات:
- مووبل تایپ
- phpmyadmin با هر ابزار دیگه کار با دیتابیس
- ابزار مناسب برای upload کردن فایل (ftp client)
- هوش و استعداد

مرحله اول:
در ابتدا لازمه که یه table برای این شمارنده بسازیم. من اسمش رو گذاشتم mt_hits که شبیه بقیه table های مووبل تایپ بشه. با استفاده از کد زیر table رو توی phpmyadmin بسازید.
توضیحات:
بعد از ورود به phpmyadmin وارد دیتابیسی که table های mt توی اون وجود داره بشید و بعد از منوی بالای صفحه وارد قسمت SQL شده و کدهای زیر رو داخل محل مربوطه وارد کنید.
در ضمن توجه کنید که table جدید با نام mt_hits ساخته خواهد شد و لازمه که این Table از قبل وجود نداشته باشه.


Code:CREATE TABLE `mt_hits` (`uid` int(11) NOT NULL auto_increment,`entry` int(11) NOT NULL default '0',`hits` int(11) NOT NULL default '0',PRIMARY KEY (`uid`)) TYPE=MyISAM ;






مرحله دوم:
یک فایل با نام counter.php بسازید و اونو یه جای مناسب upload کنید. این فایل حاوی کدهای زیر خواهد بود. به توضیحاتی که توی کد نوشته شده دقت کنید.

PHP Code: <?php
function counter($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) ;
if ( $row = mysql_fetch_array($res) )
{
$new_hit = $row['hits'] + 1;
$rr = mysql_query ("UPDATE `mt_hits` SET `hits` = '$new_hit' WHERE `entry` = '$entry' LIMIT 1");
return $new_hit;
}
else
{
mysql_query("INSERT INTO `mt_hits` ( `uid` , `entry` , `hits` ) VALUES ('', '$entry', '1' )");
return "1";
}
}
?>







مرحله سوم:
اکنون وارد تمپلیت تکی خود در مووبل تایپ شده (individual entry) و تغییرات زیر را انجام دهید.
کد زیر را در یک جای مناسب (ترجیحا بالای تمپلیت) قرار دهید.

Code:<? include ("/home/username/public_html/counter.php"); ?>





آدرسی که در کد فوق استفاده شده مختص سرورهای cPanel است. در هر صورت منظور آدرس به فایل counter.php است.

در جای مناسبی که میخواهید تعداد نمایش مطلب دیده شود کد زیر را قراردهید:

Code:<? echo counter(<$MTEntryID$>) ?>






مرحله آخر:
تمپلیتهای Individual Archive را دوباری سازی کنید. و نتیجه را ببنید.

اگر یه مقدار دانش php و mysql داشته باشید، خیلی راحت میتونید نتایج مفید و به درد بخوری از table آمار (mt_hits) بگیرید. مثلا پرخواننده ترین مطالب، تعداد مشاهده مطالب روی صفحه های اصلی که لیست مطالب هستند و ...
البته من سعی می کنم به مرور function های بهتری به اینی که الان هست اضافه کنم.
اگر در این زمینه مشکلی داشتید توی فروم مووبل تایپ مطرح کنید.

موفق باشید

Mahan
5 February 2006, 09:45 PM
من یه سری توضیحات به مطلب فوق اضافه کردم.

Mahan
5 February 2006, 09:46 PM
من این مشکل رو با کمک آرش مصلحی (http://www.iranwebdesigning.com/) ( این‌کاره‌ی PHP ) حل کردم و گفتم اینجا هم به صورت مرحله به مرحله بذارم که بقیه فیض‌شو ببرند.
در حالت عادی اگر در صفحه اول و یا صفحات فرعی دیگر ( مثلا صفحه‌ای حاوی تمام عنواین وبلاگ ) بخواهیم تعداد بازدید رو نشون بدیم مجبوریم که فایل Counter.php رو اینکلود کنیم. بنابراین هر بار که اون صفحات ( مثلا صفحه‌ اول ) باز می‌شه، یک واحد به همه اون شمارنده‌های واقع در اون صفحه ( یعنی به تعداد بازدید پست‌ها ) اضافه می‌شه درصورتی که اون آرشیو تکی دیده نشده! یعنی آمار کلی می‌ره بالا و غیر واقعی می‌شه.
یه کلام بگم که اون مدلی آمار اشتباه خواهد بود. راه‌حل این قضیه هم اینکلود یک فایل جدید در صفحه‌ی اول یا ... می‌باشد که فقط تعداد بازدید‌ها رو نشون بده و به شمارنده چیزی رو اضافه نکنه.


مرحله اول:
یک فایل با نام countershow.php بسازید و اونو یه جای مناسب upload کنید. این فایل حاوی کدهای زیر خواهد بود. به توضیحاتی که توی کد نوشته شده دقت کنید. (اگه اسم Table ی که از روی راهنمای احسان ساختین، رو عوض کردین؛ اسم جدید رو به جای mt_hits وارد کنید )

PHP Code: <?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) و تغییرات زیر را انجام دهید.
کد زیر را در یک جای مناسب (ترجیحا بالای تمپلیت) قرار دهید.

Code: <? include ("/home/username/public_html/countershow.php"); ?>




آدرسی که در کد فوق استفاده شده مختص سرورهای لینوکس است. در هر صورت منظور آدرس به فایل countershow.php است.

در جای مناسبی که میخواهید تعداد بازدید هر مطلب دیده شود، کد زیر را قرار دهید:

Code: <? showcounter(<$MTEntryID$>) ?>





مرحله آخر:
تمپلیتهایی را که تغییر داده‌اید، دوباری سازی کنید. و نتیجه را ببنید.

( بعضی جمله‌ها رو از راهنمای احسان کپ زدم! )

PAYAM
12 February 2006, 07:12 AM
من احتياج به اسكريپت يا پلاگيني دارم كه به وسيله اون تعداد بازديدهام رو نشون بدم. البته الان اين قابليت رو بلاگم دارم (خودم نصب نكردم) ولي چيزي ازش سردرنياوردم و البته بازديدهاي ديروز رو هم نشون نمي‌ده.
1) مي‌خواستم بدونم چه جوري مي‌شه بازديدهاي ديروز رو هم داشت؟
2) من مي‌خوام علاوه بر بازديد Unique كه الان وبلاگ من نشون مي‌ده هيت رو هم نشون بده. براي اون چي كار مي‌شه كرد؟ (بازديد Unique به اين صورت است كه براي هر آي پي فقط يك بار بازديد ثبت مي‌شود و هر صفحه اي را ببيند به تعداد بازديدها چيزي اضافه نمي‌شود اما در Hit به ازاي هر بازديد صفحه يك بازديد منظور مي‌شود)
3) اگر اسكريپت جديدي نصب كنم آمار بازديدهاي قبليم از بين مي‌ره يا نه؟

تبصره: از كانترهاي آماده و گرافيكي نمي‌خواهم استفاده كنم! مي‌خواهم بازديدها به صورت متني نمايش داده شوند.

B e H r A d
24 February 2006, 08:40 PM
يام خان شرمنده از اينكه دير جواب شما رو ميدم...
شما با statwatch فقط ميتونين همه بازديدهاتونو از كنترل پانل برنامه مشاهده كنيدو و به اين صورت نيستش كه يك تگ بهتون بده.

خوب براي اينكه بتونين بازديد يونيك رو هم داشته باشيد من تو سايت هات اسكريپز يه سرچي كردم و برنامه هاي جالبي رو ديدم و بهتون پيشنهاد ميكنم كه يكي از 9 اسكريپت wtpi اول رو دانلود كنيد و اگر بر روي سيستمون LocalHost داريد برنامه هار رو تست كنيد.
http://www.h0tscripts.com/search/8816313.html

به جاي (0)، (o) بذاريد (امان از دست اين ساسنورينگ VB )

( باز هم اميدوارم كه از دست من ناراحت نشده باشيد )

B e H r A d
25 February 2006, 11:10 AM
http://www.counters4bl ogs.com/
پيام جان اين اسكريپت توي سايت هات اسكريپتز ربته اول رو داره....