ساخت فایل XML نقشه وب سایت (sitemap.xml) با قابلیت به روزرسانی لحظه ای و خودکار بر اساس نمایش محتوا از یک فایل PHP و با کمی کدنویسی در فایل htaccess. وب سایت

یکی از موارد مهم در وب سایت ها، داشتن فایل مربوط به نقشه وب سایت (Sitemap) می باشد که باعث می شود صفحات مورد نظرمان از وب سایت را به موتورهای جستجو معرفی کنیم تا سریعتر توسط موتورهای جستجو، شناسایی شده و در نتایج جستجوی آنها، نمایش داده شوند (البته در صورت index شدن صفحات توسط موتورهای جستجو).

برای ساخت فایل نقشه وب سایت (Sitemap)، روش های مختلفی وجود دارد. مثلا یک روش ساده، ساخت یک فایل با پسوند txt و قرار دادن فهرست ساده آدرس اینترنتی (URL) صفحات در آن می باشد (هر آدرس URL در یک خط). اما یک روش استانداردتر، ساخت فایل XML می باشد (مثلا با نام sitemap.xml) که در آن، اطلاعاتی بیش از آدرس اینترنتی (URL) صفحات، درج خواهد شد.

اما با توجه به اینکه فایل XML ، یک فایل شامل کدهای استاتیک است (کد XML) و نمی توان کدهای زبان های دینامیک مثل PHP را در آن اجرا نمود، معمولا آن را به این صورت می سازند که یا اطلاعات به صورت دستی در آن درج می شود و یا اینکه صفحه ای در وب سایت وجود دارد (شامل کد یک زبان دینامیک مثل PHP) که با کلیک بر روی دکمه ای (Button) در آن صفحه، محتوای آن فایل XML را به روزرسانی می کند (فایل XML را بازنویسی می کند). ولی ما در این کلید آموزشی، قصد داریم روشی را توضیح دهیم که دیگر نیازی به تغییر دستی و یا تغییر توسط کلیک بر روی یک دکمه (Button) در صفحه ای دیگر، نمی باشد و محتوای فایل XML ، به صورت مستقیم از یک فایل PHP دریافت می شود و بنابراین هر بار که فایل XML از سرور دریافت شود، همان لحظه محتویات فایل (فهرست صفحاتی که در نقشه وب سایت قرار می گیرند) بر اساس پایگاه داده (Database) وب سایت، ایجاد می شوند (اطلاعات به صورت لحظه ای، به روزرسانی می شوند).

در این روش، حتی نیازی نیست که حتما فایل XML ساخته شود و تنها کافی است که کدهایی در فایل htaccess. از وب سایت نوشته شود که در صورت درخواست برای مشاهده آن فایل XML (با آدرسی که برای آن تعیین کرده ایم)، خروجی (پاسخ) یک فایل با پسوند php برگردانده شود (البته بنده معمولا یک فایل XML در همان مسیر به صورت نمادین می سازم تا اگر نگاهی به ساختار وب سایت انداختم، فراموش نکنم که چنین موردی در ساختار وب سایت، در نظر گرفته شده است).

قبل از هر چیز، ساختار یک فایل xml برای نقشه وب سایت (Sitemap)، که تنها دارای دو آدرس URL است را ذکر می کنیم تا درک درستی از خروجی نهایی فایل XML داشته باشید (باید چنین ساختاری را با کدهای PHP ایجاد نماییم) :

در ادامه، مراحل ساخت نقشه وب سایت (Sitemap) مورد نظر خود را شرح خواهیم داد.

1- تعیین آدرس فایل XML :

فایل اصلی نقشه وب سایت (Sitemap) می تواند دارای نام sitemap.xml بوده و در پوشه اصلی وب سایت قرار بگیرد. مثل آدرس زیر :

یا برای سایر فایل ها (به جز فایل اصلی که با نام و مسیر پیش فرض قرار می گیرد)، می توانیم نام و مسیر دلخواه خود برای قرارگیری آن در وب سایت را در نظر بگیریم (مهم این است که آدرس آن را به موتورهای جستجو اعلام کنیم، مثلا با درج آدرس آن در خود فایل اصلی نقشه وب سایت) :

بنده در این کلید آموزشی ترجیح می دهم که یک آدرس دلخواه در یک پوشه (Folder) از وب سایت را در نظر بگیرم. بنابراین نقشه وب سایت (Sitemap) مورد نظر با آدرس زیر در دسترس خواهد بود :

2- ساخت فایل php برای ایجاد محتوای مربوط به فایل XML :

همان طور که گفتیم، وقتی درخواستی برای خواندن فایل XML مربوط به نقشه وب سایت (Sitemap) صورت می گیرد، محتوای آن از یک فایل با پسوند php دریافت خواهد شد که شامل مقداری کد PHP است که وظیفه آنها، دریافت اطلاعات مربوط به مباحث وب سایت از پایگاه داده (Database) است و بر اساس آن اطلاعات، محتوای مربوط به فایل XML مربوط به نقشه وب سایت (Sitemap) را ایجاد می کند.

در مرحله قبل، آدرس فایل XML را به صورت زیر در نظر گرفتیم :

بنده ترجیح می دهم که فایل php مورد نظر نیز در مسیر مشابه و با نام مشابه باشد و تنها تفاوت آن، وجود پسوند php برای فایل باشد :

کدهای فایل sitemap-keys.php را به صورت زیر می نویسیم :

دقت شود که در کد بالا، اطلاعات مربوط به اتصال به پایگاه داده (Database) وب سایت و خواندن از جدول (Table) مربوط به مباحث وب سایت را به صورت نمادین نوشته ایم و شما باید آنها را مطابق اطلاعات پایگاه داده (Database) وب سایت خود تغییر دهید.

همچنین مقادیر changefreq (مدت زمان تغییر : روزانه یا هفتگی یا سالیانه) و priority (اولویت) برای هر URL را ما به صورت ثابت برابر weekly (هفتگی) و 1.0 در نظر گرفته ایم و شما می توانید مطابق میل خود، آنها را برای URL های مختلف از وب سایت خود، تغییر دهید.

3- کدنویسی در فایل htaccess. از وب سایت، برای دریافت محتوای فایل XML از صفحه php :

اکنون باید کدهایی را در فایل htaccess. از وب سایت بنویسیم که هر گاه کاربر آدرس زیر را از سرور درخواست کند :

آنگاه خروجی (پاسخ) صفحه php زیر از وب سایت را دریافت نماید (حتی در صورتیکه فایل XML اصلا در وب سایت وجود نداشته باشد) :

برای این منظور، باید کدهای زیر را به کدهای فایل htaccess. از وب سایت، اضافه نماییم (فایل htaccess. در پوشه اصلی وب سایت قرار دارد و اگر وجود ندارد، باید آن را بسازید، برای یافتن آن، بهتر است راهنماهای اینترنتی را بخوانید) :

اگر خط RewriteEngine On قبلا در کدهای فایل htaccess. نوشته شده، نیازی به نوشتن دوباره آن نمی باشد.

نویسنده علیرضا گلمکانی
شماره کلید 26388
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 3 3 0
Shadow
۱۳۹۸/۰۳/۰۶
۱۸:۳۹

سلام ، برای یک سایت فروشگاهی نیازه که از کدام table ها اطلاعات رو بخونیم، محصولات یا table های دیگه؟

programedu
۱۳۹۹/۰۴/۱۶
۰۵:۳۵

عرض سلام و ادب

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


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

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

ممنون میشوم که علاوه بر زبان ها و سرویس ها، توضیح مختصری ارائه دهید. 


لطفا اگر در گذشته به این موضوع پرداخته شده است، راهنمایی کنید. چون من کلید سوال خود را پس از چستجو پیدا نکردم.

با تشکر از شما

admin
۱۳۹۹/۰۴/۱۶
۲۳:۰۶

سلام.
با توجه به اینکه قرار است به محض تغییر اطلاعات (درخواست خرید یا فروش جدید)، همه کاربران، آن تغییرات جدید را بلافاصله در صفحه خروجی سایت مشاهده کنند، بنابراین باید نیازی نباشد که کاربر برای دیدن به روزترین اطلاعات، دکمه Refresh (یا Reload) مرورگر اینترنت را بزند، بلکه خود صفحه، هر چند ثانیه یک بار، اطلاعات درون خود که نمایش داده است را به روزرسانی کند. در این حالت، ما به استفاده از وب سرویس ها (Web Service) نیاز داریم.
وب سرویس (Web Service) چیز چندان پیچیده ای نیست. در حالت معمولی (یعنی بدون استفاده از وب سرویس)، اطلاعات خروجی صفحه در همان لحظه اجرای فایل PHP صفحه (در سمت سرور)، تولید شده و به صورت کد HTML به مرورگر اینترنت کاربر تحویل داده می شوند (نمایش HTML در سمت کاربر) و دیگر تغییری در مرورگر اینترنت کاربر نخواهند داشت و ثابت باقی می مانند. بنابراین اگر کاربر بخواهد دوباره آخرین اطلاعات (به روزترین اطلاعات) را ببیند، باید بر روی دکمه Refresh مرورگر اینترنت کلیک کند تا درخواست اجرای دوباره فایل PHP آن صفحه به سرور حاوی سایت فرستاده شده و نتیجه حاصل از آن، به صورت کد HTML توسط مرورگر اینترنت کاربر دریافت گردد و آن صفحه مجددا از نو نمایش داده شود.
اما اگر بخواهیم که کاربر نیازی به زدن دکمه Refresh مرورگر اینترنت نداشته باشد و خود اطلاعات صفحه به روزرسانی شوند (یعنی حالت استفاده از وب سرویس (Web Service))، آنگاه باید در خروجی ناشی از اجرای فایل PHP (در واقع در میان کدهای آن صفحه PHP)، مقداری کد اجراشونده در سمت کاربر (مثلا به زبان JavaScript) در میان کدهای HTML قرار دهیم که وظیفه اش این است که هر چند ثانیه یک بار، از یک صفحه PHP دیگر در سرور سایت،  اطلاعاتی را دریافت کرده و آنها را در بخشی از صفحه فعلی که کاربر در حال حاضر دارد می بیند، نمایش دهد (البته به عنوان یک مثال، زبان JavaScript را بیان کردیم و زبان ها یا چارچوب های دیگری می توانند به کار روند (مثلا چارچوب هایی که خودشان بر اساس زبان JavaScript می باشند)).
به عنوان مثال، فرض کنید که صفحه اصلی ما که کاربر مشاهده می کند، بر اساس اجرای فایلی با نام index.php می باشد. جدا از این صفحه اصلی، ما یک فایل PHP دیگر با نام myWebService.php می سازیم که وظیفه آن، تولید کد HTML ای است که برای نمایش یک سری اطلاعات مورد نظر ما به کار می رود (با اجرا شدن، آن کد HTML را در خروجی خود تولید می کند).
اکنون ما در میان کد HTML خروجی صفحه اصلی index.php ، مقداری کد (مثلا به زبان JavaScript) قرار می دهیم که وظیفه دارد هر 5 ثانیه یک بار، درخواستی به سرور سایت فرستاده شود که فایل myWebService.php اجرا گردد و کد HTML حاصل از اجرای آن، دریافت شده و در بخشی از خروجی صفحه اصلی index.php که در حال حاضر در مرورگر اینترنت کاربر نمایش داده شده، قرار گرفته و نمایش داده شود.
این قرار گرفتن در صفحه اصلی، می تواند به دو صورت زیر باشد :
1- کد HTML به ابتدا یا انتهای محتوای یک عنصر از صفحه (مثلا یک عنصر div با id برایر kelidestan)، افزوده شود، بدون اینکه محتوای قبلی عنصر مورد نظر، حذف شود
2- کد HTML جایگزین محتوای قبلی یک عنصر از صفحه (مثلا یک عنصر div با id برایر kelidestan) شود، یعنی محتوای قبلی عنصر مورد نظر، حذف می شود

نکته : برخی اوقات، از فایل myWebService.php ، مستقیما کد HTML دریافت نمی شود، بلکه ابتدا اطلاعات به صورت ساختار JSON دریافت می شوند و بعد در خود کدهای صفحه (مثلا با کدهای زبان JavaScript)، کد HTML ای بر اساس آن اطلاعات، تولید شده و در صفحه جایگذاری می شود.
استفاده از ساختار JSON ، می تواند در کاهش ترافیک سرور تاثیر زیادی داشته باشد، چون نیازی نیست که قالب نمایش اطلاعات (که همان کد HTML حاوی اطلاعات است)، هر دفعه از سرور دریافت شود و صرفا هر بار، تنها اطلاعات اصلی دریافت می شوند

نکته : برای صرفه جویی در ترافیک سایت، موراد دیگری را نیز می توان به کار برد. مثلا به جای اینکه کل اطلاعات دریافت شود، شماره id منحصربفرد آخرین ردیف از جدول پایگاه داده (یک عدد افزایشی در هنگام ثبت ردیف جدید در جدول پایگاه داده) را دریافت می کنیم و با مقدار قبلی که چند ثانیه قبل گرفته ایم، مقایسه می کنیم و اگر جدید بود، یعنی اطلاعات جدید در جدول پایگاه داده ثبت شده و اکنون باید آن اطلاعات را دریافت نماییم (البته این مورد می تواند در زمانی که سایت واقعا با مشکل ترافیک و تعداد کاربر زیاد مواجه است، به کار برده شود)

حجم اطلاعاتی که برای استفاده از وب سرویس (Web Service) در صفحه می نویسیم، به زبان برنامه نویسی (یا کتابخانه یا چارچوب) انتخاب شده بستگی دارد. مثلا JavaScript ساده ترین انتخاب است، که البته حجم کد آن زیاد خواهد بود، اما مثلا کتابخانه jQuery که بر اساس JavaScript است و به همراه کدهای JavaScript عمل می کند، حجم کمتری کد را برای این منظور به کار می برد و کدنویسی این عملیات بر اساس آن راحت تر است. یا مواردی دیگری مثل چارچوب AngularJS که البته نیاز به کمی تغییر در کد HTML صفحه دارد و موارد دیگر که باید خودتان جستجو کنید و نظر دیگران را در مورد آنها در سایت ها ببینید و انتخاب نمایید (بنده چند مورد ساده را مثال زدم و می توانید به دنبال موارد پیشرفته تر باشید).
بد نیست یک کد بر اساس jQuery را مثال بزنم :


که البته برای اجرای صحیح آن، حتما باید کتابخانه jQuery در صفحه ذکر شده باشد (آموزش های اولیه jQuery را بخوانید) (ما یک آدرس فرضی را برای فایل کتابخانه در کد زیر در نظر گرفته ایم) :


کد مورد نظر، یک کد نمونه است که از یک صفحه PHP با نام myWebService.php ، حاصل اجرای آن را دریافت کرده و سپس نتیجه را به همراه مقداری کد HTML که به آن اضافه کرده ایم، در یک عنصر با id برابر kelidestan قرار می دهد.
علاوه بر این، اطلاعتی را هم به صفحه myWebService.php ارسال می کند. مثلا در اینجا، مقادیر زیر :


پس حتی می توانیم یک صفحه PHP داشته باشیم و تعیین کنیم بر اساس مقادیر ورودی که به آن می دهیم، یک خروجی متناظر با ورودی خود را به ما بدهد (نه اینکه مثلا برای 10 سری اطلاعات، 10 صفحه PHP مختلف بسازیم).
در کد بالا، خروجی صفحه در یک متغیر با نام msg ذخیره می شود.
در استفاده از اینگونه کدها، نکات فراوانی مثل خطایابی، میزان صبر برای دریافت پاسخ از صفحه، استفاده از روش POST یا GET برای دریافت اطلاعات از صفحه مورد نظر، async بودن یا نبودن و ... وجود دارد که باید با تحقیق در مورد آنها، کاربردشان را بدانید و متناسب با نیاز خود، از آنها بهره ببرید.
تجربه ثابت کرده است که اگر اولین بار است که با وب سرویس ها (Web Service) کار می کنید، مهمترین چیز، خطایابی است که اگر کدها به درستی عمل نکردند، بر اساس خطایابی بتوانید محل دقیق بروز مشکل را بیابید.
در آخر می توانید کدی را بنویسید که تعیین کند این عملیات، مثلا هر 5 ثانیه یک بار، تکرار شود (اجرا شود) (کد تکرار عملیات در JavaScript ، ساده است و پیچیدگی خاصی ندارد، اما توصیه می شود کدنویسی افراد مختلف را ببینید و بهینه ترین کدها را به کار ببرید).

---------------------

ثبت اطلاعات جدید کاربران، از دو طریق عادی و استفاده از وب سرویس (Web Service) امکان پذیر است. در طریق عادی که ثبت اطلاعات نیاز به بارگذاری مجدد صفحه دارد، اما در روش استفاده از وب سرویس (Web Service)، اطلاعات وارد شده در فرم (Form) توسط کاربر را فراخوانی می کنید و به یک صفحه PHP دیگر می فرستید (مشابه کد قبل) که مسئول ثبت اطلاعات است و بر اساس خروجی آن صفحه (باید موفق بودن یا نبودن عملیات را اعلام کند)، پیامی را به کاربر در صفحه نمایش می دهید.

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)