تابع های دریافتی نام Page کنونی

دسته بندی: آموزش
زمان مطالعه: 6 دقیقه
۱۳ شهریور ۱۳۹۱

در این پست با سری دوم آموزش php همراه شما هستیم ، امروز میخواهیم یک بخش مهم از php را با یکدیگر جلو ببریم .

 در این پست یاد خواهید گرفت :

  • آدرس صفحه کنونی را دریافت نمائید.
  • نام صفحه کنونی را دریافت نمائید.
  • استفاده از تگ canonical برای دریافت صفحه کنونی (شدیدا موثر در سئو)
  • عنوان صفحه را به صورت داینامیک ایجاد نمائید.
  • متمایز کردن نام Home Page سایت با دیگر صفحات سایت

دریافت آدرس صفحه کنونی :

حتما تا به حال سایت هایی را دیده اید که صفحه ای که هم اکنون درون آن هستید را به شما معرفی می کنند برای راهنمایی بیشتر و همچنین ایندکس شدن سریعتر صفحه در موتورهای جستجو ، امروز این بخش را به شما یاد خواهیم داد.

برای اینکار از یک آرایه سوپر گلوبال به نام SERVER با اندیس SCRIPT_FILENAME استفاده می شود :

<?php
$_SERVER['SCRIPT_FILENAME'];
?>

این اندیس همیشه آدرس مطلق صفحه کنونی را دریافت می کند ، برای امتحان این دستور کافیست از دستور echo قبل از آرایه استفاده نمائید ، تا آدرس صفحه کنونی یا Current Page را به شما نمایش دهد :

<?php
echo $_SERVER['SCRIPT_FILENAME'];
?>
یاداوری :

آرایه های سوپرگلوبال و اندیس های آن ها همواره با حروف بزرگ نوشته می شوند.

دریافت نام فایل آدرس کنونی :

دستور قبلی آدزس مطلق یک صفحه را برای ما بر میگرداند ، اما اکنون میخواهیم برای ما فقط نام فایل را برای بر گرداند ، برای اینکار علاوه بر اینکه از آرایه سوپر گلوبال SERVER همراه اندیس SCRIPT_FILENAME استفاده میکنیم از تابع basename نیز استفاده می نمائیم :

<?php
basename($_SERVER['SCRIPT_FILENAME']);
?>

این تابع مسیر یک فایل را به عنوان یک پارامتر دریافت می کند و نام فایل آن آدرس را دریافت می کند!

حال برای اینکه آن را به نمایش درآورید کافیست از دستور echo استفاده نمائید.

نکته :

تابع basename یک آرگومان اختیاری دوم نیز دریافت میکند و آن نیز یک رشته متنی که حاوی پسوند فایل همواره یک نقطه میباشد ، اضافه کردن این آرگومان باعث حذف پسوند نام فایل می شود.

حال اگر بخواهید پسوند صفحه برای شما نمایان نشود کافیست که یک کلمه به دستور خود اضافه نمائید :

<?php
echo basename($_SERVER['SCRIPT_FILENAME'] , '.php');
?>

برای اینکار کافیست که نام پسوند سایت خود را در یک کوتیشن قرار دهید.

مثال شماره 1 :

این پست مربوط به آموزش زبان php است ولی بد نیست با php از سئو نیز بهره مند شویم ، حال میخواهیم از تگ canonical استفاده نمائیم برای دریافت صفحه کنونی ولی با روشی به غیر روش بالا که توضیح داده شد ، این روش تاثیر بسیار زیادی در سئو سایت شما دارد و به گوگل تکراری نبودن page های خود را اعلام می نمائید.

نکته :

این تگ مانند ریدایرکت 301 عمل میکند فرض کنید شما با استفاده از این ریدایرکت یک صفحه را به صفحه ی دیگر ریدایرکت میکنید این تگ هم به اسپایدر میگوید که این مطلب مانند این مطلب دیگر هست و باید یکی از انها ایندکس شوند و اسپم حساب نشوند.این تگ یکی از بهترین و ساده ترین روش های جلوگیری از ایجاد شدن مطالب یکسان هست.یا به عبارتی دیگر صفحات متفاوت باید به عنوان یک صفحه حساب شوند.

برای اینکار یک روش ساده و مبتدی را آموزش خواهیم داد :

کدهای زیر را در تگ Head سایت خود قرار دهید .

در ابتدا کد زیر را درج نمائید :

<?php

$pageURL= 'http://' .  $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
?>

این کد همان روش قبلی می باشد ولی میدانید که php دارای تابع های متعددی می باشد سپس این کد را نیز قرار دهید :

echo "<link rel=\"canonical\" href=\"$pageURL\">\n";
اگر بخواهید این روش را به روش قبلی انجام دهید کافیست  کد زیر استفاده نمائید :

<?php

$pageURL =$_SERVER['SCRIPT_FILENAME'];
echo "<link rel=\"canonical\" href=\"$pageURL\">\n";
?>

حال اگر شما سورس صفحه خود ملاحظه نمائید ، آدرس صفحه کنونی را در متا تگ canonical خواهید دید.

ایجاد عنوان صفحه (Page Title) به صورت داینامیک

اکنون که یاد گرفته اید آدرس و نام یک صفحه را دریافت نمائید حال میخواهیم آدرس یک صفحه را به صورت داینامیک ایجاد نمائیم.

برای اینکار کافیست کد زیر را در تگ Head سایت خود درج اضافه نمائید :

<?php
$title = basename($_SERVER['SCRIPT_FILENAME'], '.php');
echo "<title>$title</title>\n";
?>

اکنون نام عنوان سایت شما با توجه به نام فایل صفحه تغییر خواهد کرد.

اما اگر بخواهید حرف اول عنوان سایت شما با حروف بزرگ باشد (البته اگر عنوان سایت شما انگلیسی باشد) باید از تابع ucfirst که مخفف UpperCase می باشد استفاده نمائید :

<?php
$title = ucfirst(basename($_SERVER['SCRIPT_FILENAME'], '.php'));
echo "<title>$title</title>\n";
?>
نکته :

تابع ها را در php می توانید به صورت تو در تو نیز استفاده نمائید ، همانگونه که ما تابع basename و ucfirst را به صورت تو در تو قرار دادیم ولی میتوانید آن را نیز به صورت گشوده شده نیز قرار دهید ، اگر بخواهیم تابه فوق را به صورت تو در تو قرار ندهیم کد ما اینگونه می شود :

<?php
$title = $_SERVER['SCRIPT_FILENAME'];
$title = basename($title , '.php') ;
$title = ucfirst($title);
echo "<title>$title</title>\n";
?>

شاید تا به حال فهمیده اید که این روش یک مشکل بسیار بزرگ دارد ، اگر نام صفحه شما تشکیل شده از چندین جمله باشد ، فاصله های خالی تبدیل کد اسکی Space می شوند (%20) و این کار چندان جالب نیست برای حل این مشکل کافیست از تابع str_replace استفاده نمود:

<?php
$title =ucfirst(basename( $_SERVER['SCRIPT_FILENAME'] , '.php'));
$title = str_replace(' ' , '_' , $title);
echo "<title>$title</title>\n";
?>

تابع str_replace به دنبال کاراکتر _ می گردد و اگر این کاراکتر در عنوان سایت دیده شد آن را تبدیل به کاراکتر خالی کرده و سپس عنوان سایت را با فضای خالی نمایش می دهد

متمایز کردن Index سایت با دیگر صفحات :

همانطور که به نظر شما رسیده است ، بسیاری از سایت ها ، صفحاه اول آن ها یا همان Index عنوانی متفاوت با دیگر صفحات دارد ، فرض کنید که صفحه اصلی ما index نام دارد ، حال اگر با استفاده از آرایه سوپر گلوبال SERVER نام آن را برگردانده باشیم در عناون سایت ما کلمه Index درج می شود ، که این کار اصلا کار جالبی نیست و چنگی به دل نمی زند ، برای این کار می توانیم از یک دستور if استفاده نمائیم که اگر تابع basename نام Index را برگرداند ، نام index به نام دیگری مثلا milad heydari تغییر کند :

<?php
$title =basename( $_SERVER['SCRIPT_FILENAME'] , '.php');
$title = str_replace(' ' , '_' , $title);
if($title == 'index3') {
$title = 'milad heydari';
}
echo "<title>$title</title>\n";
?>

حال اگر حرف اول عنوان سایت شما با حروف بزرگ نوشته شده باشد ، این شرط ما برقرار نمی شود چون که php میان حروف بزرگ و کوچک تمایز قائل می شود برای حل این مشکل از تابع strtolower استفاده می کنیم ، این تابع تمام حروف یک رشته را  به حروف بزرگ تبدیل می کند.

<?php
$title =basename( $_SERVER['SCRIPT_FILENAME'] , '.php');
$title = str_replace(' ' , '_' , $title);
if(strtolower($title == 'index3')) {
$title = 'milad heydari';
}
echo "<title>$title</title>\n";
?>

نظرات ، پیشنهادات و مشکلات خود را درباره این آموزش در بخش نظرات درج نمائید!

چه امتیازی به این مقاله می دید؟
نویسنده
19 ساله، ساکن تهران و دانشجوی مهندسی کامپیوتر ؛طراح وب سایت ، سئو کار با سابقه کاری ، مطالعه بسیار زیاد در امر سئو و برندینگ اینترنتی و آشنایی با زبان های همچون PHP,JavaScript,html5,CSS3, Jquery ، با زبان انگلیسی آشنایی کامل دارم و شدیدا طرفدار استقلال و فرهاد مجیدی هستم.

نظرات کاربران

mjavad5

ممنون میلاد جان از سلسله مطالب مفید و بسیار آموزندت. 😳
بازم در مورد پی اچ پی مطلب میذارین یا منتظر نباشیم ؟
http://Mirzabeigi.com
😳

میلاد حیدری

بله ان شاالله در مبحث بعدی با include آشنا خواهیم شد.

pkblog

سلام.من لینوکسم را درست کردم.اگه می شه می توانید وردپرس را برایم نصب کنید.

خیلی ممنون

لقمان آوند

کاری که نداره . یه سرچ کن . اگه منبع گیر نیاوری برای نصبش اطلاعات هاست رو برام میل کن تا انجام بدم . avand.loghman@gmail

سجاد دریس

یه اشتباه تابپی!!!!!

متمایز کردن نام Home Page سایت با “دیگران” صفحات سایت

😆 😉

لقمان آوند

ممنون
تصحیح شد …

لقمان آوند

عالی بود میلاد جان …

میلاد حیدری

مرسی

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
گزارش مشکل