الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تجربتي مع Rss

بدأه joo في 22 يوليو 2008 · 7 رد · 800 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام يا شباب

قبل فترة قصيرة جدا قمت بتنجيز خدمة RSS في أحد المواقع :

وقد لاقيت بعض المشاكل عند محاولة تنجيزها لاول مرة , لكنها والحمد لله قد حلت كلها بالنسبة لي , لذلك رغبت في عرض تجربتي , عسى ولعل أن يستفيد منها أخرون , ويعطينا البعض الاخر

انتقاداتهم البناءة في اسلوب تنجيزي لهذه الخدمة :

في البدياية : ارغب بالتعريف بخدمة RSS وهي اختصار ل Rich Site Summary

وهي غالبا ما تستعمل بهدف عرض اخر احدث عشر اخبار في الموقع بشكل موجز وبسيط , أو لمعرفة هذه الاخبار الاخيرة عن طريق خدمة rss المدعومة في الموبايلات

والبنية الاساسية لملف RSS موجودة - مطبقة على مثال - في الملف المرفق مع هذا الشرح , واسم الملف rss.xml

اما العنصر الاساسي في ملف rss.xml هو التالي

<item>
	  <title>Star City</title>
	  <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>
	  <description>How do Americans get ready to work with Russians aboard the
		International Space Station? They take a crash course in culture, language
		and protocol at Russia's Star City.</description>
	  <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>
	  <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>
	</item>

+++++++++++++++++++++++

حيث title يتم فيه تخزين عنوان الخبر

و link يخزن فيه رابط للمكان الموجود فيه هذا الخبر على الموقع

description يحوي على توصيف موجز للخبر

pubDate يحوي تاريخ عرض الخبر

هذه هي البنود الاساسية في ملف rss.xml

وحتى تظهر ايقونة هذه الخدمة يجب وضع السطر التالي في ترويسة الملف بالنسبة لمستعرض internet explorer7 , firefox

<link href="rss.xml" rel="alternate" type="application/rss+xml" title="Sitewide RSS Feed" />

حيث تظهر بالنسبة للمستعرضين سابقي الذكر الايقونة المطلوبة بشكل تلقائي في شريط العنوان , اما بالنسبة لبقية المستعرضات , فيتوجب وضع ايقونة ضمن الموقع , وجعل الرابط عند الضغط عليها يشير الى ملف

rss.xml الذي سيتم عرضة في اللحظة التي يتم فيها الضغط على هذه الايقونة

لكن هنالك فكرة اساسية , هي أن هذا الملف يجب ان يحضر اخر 10 احدث اخبار من قاعدة المعطيات بشكل اوتوماتيكي عند الضغط على هذه الايقونة : وبالتالي يجب استدعاء بعض الكود اللازم لاحضار احدث الاخبار

من قااعدة المعطيات وتخزينتها ضمن ملف rss.xml .وهناتكمن العملية , لذلك فقد قمت ببرمجة صفحة تقوم بما يلي :

1:تقوم في البداية بحذف ملف rss.xml الموجود سابقا

2:تنشأه من جديد مع المحتويات الاساسية اللازمة التي تحدد كونه ملف rss.xml

3:ومن ثم كتابة بعض الرماز المسؤول عن مسؤولة عن احضار المعطيات الازمة وتعبئتها في ملف rss.xml ومن ثم يتم اعادة التوجيه الى ملف rss.xml

بعد ان يتم ملأه بالمعلومات المطلوبة , وبالتالي تغير الرابط ليصبح كما يلي :

link href="processRss.php" rel="alternate" type="application/rss+xml" title="Sitewide RSS Feed" />

اما الصف RssClass فقد استخدمته لبرمجة عملية الاضافة لملف rss.xml بشكل غرضي التوجه

وهذا هو كل شيء

+++++++++++++++++++++

اما المشاكل التي واجهتني : بعض الاخبار يتم تخزيتها مع تنسيقاتها , لكن ملف rss.xml يشتكي من وجود التنسيقات ضمنه , وبالتالي لا يعرض الاخبار الحاوية على التنسيقات ,

ولحل هذه المشكلة فقد قمت بسحب كل التنسقات من الاخبار فور سحب توصيف الخب ر من قاعدة المعطيات بهدف تخزيننه دون اي تنسيقات في ملف rss.xml وذلك عبر استخدام التابع strip_tags

والسلام عليكم ورحمة الله وبركاته

+++++++

ملاحظة :

يوجد في المجلد صفحة من موقع ويكابيديا تحوي بعض المعلومات الاساسية عن هذه الخدمة

rss_for_forum.rar

تم تعديل هذه المشاركة بواسطة محمد معاشر في 22 يوليو 2008 في 14:25 — السبب: مره اخرى , ارجو وضع الاكواد ضمن وسم Code ..

#2

أخ joo ماشاء الله و تبارك ....

سأتصفح الملف المرفق و لي عودة بإذن الله

وفقك الله

#3

عمل جميل اخي joo ..

ولكن لاحظت انك استخدمت Static RSS , والمتمثل في "الملف" الذي تقوم بإنشائه برمجياً اثناء التشغيل, ومن ثم التوجيه الذي يحصل الى الملف من خلال الداله header , وهذا يستنزف الوقت ..

الافضل هو استخدام Dynamic RSS , وذلك يعني توليد الـ RSS Feed على الطائر ( On the fly) , من خلال كود الـ PHP , وهذا يمنحك مرونه اكبر , ويختزل عمليه انشاء الملف والتوجيه اليه ..

مثال :

  1.  
  2. <?php header('Content-type: text/xml'); ?>
  3.  
  4. <rss version="2.0">
  5. <channel>
  6. <title>Your site</title>
  7. <description>Description of the site</description>
  8. <link>http://www.home.com/</link>
  9. <copyright>Copyright information</copyright>
  10. <?php
  11. /*
  12.  Put here code to connect to the DB ..
  13.  */
  14.  
  15. $sql="SELECT id,title,body,pubDate FROM articles LIMIT 0,15 ORDER BY pubDate DESC";
  16. $res=mysql_query($q);
  17. while($row = mysql_fetch_array($res)){
  18. ?>
  19. <item>
  20. <title> <?=$row['title']; ?></title>
  21. <description> <?=$row['body'],'ENT_QUOTES';?></description>
  22. <link>http://yoururl.com/showtopic?id=<?=$row['id'];?></link>
  23. <pubDate> <?=$row['pubDate'];?></pubDate>
  24. </item>
  25. <?php }
  26. ?>
  27.  
  28. </channel>
  29. </rss>
  30.  

لاحظ هنا العباره header('Content-type: text/xml') والتي تحدد Content-type للـ HTTP ليكون مستند XML ..

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

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

gazabigBanner.jpg

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

#4

بارك الله فيكم شكرا على المعلومات :)

Be Happy

^_^

#5

يسلمو كتير اخ محمد على النصيحة والمعلومة معاشر على المعلومات

وبارك الله فيك وبأمثالك من اخوانا الطيبين يلي موجودين بالمنتدى

ما بتتصور اديش فادني نقدك البناء

وبقلك مرة تانية شكرا لمعلوماتك المفيدة في هذا السياق

سلام

ملاحظة : يا اخ محمد معاشر , اتطلع على عداد الشكر عندك , رح تلاقيه زاد بمقدار واحد , هدا الواحد مني تعبيرا عن امتناني الك مقابل المعلومة يلي قدمتها الي

#6

العفو اخي joo , وشكرا لك ايضاً لانك وضعت تجربتك ..

وبخصوص عداد الشكر , طبعاً ليس هدفنا , لاحسن بعدين يقولوا اني ارد على المشاركات حتى احصل نقاط شكر :lol:

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

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

gazabigBanner.jpg

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

#7

اخي محمد , الملاحظة يلي حطيتها كانت على سبيل الفكاهة

على كل الاحوال جربت مبارح طريقة الديناميك ار اس اس , بس بما اني عم حط ضمن ملف rss.xml كود بي اش بي , فلازم اني حول لاحقة الملف لبي اش بي , جربت الطريقة مبارح , بس لما استعديت الملف ولاحقته بي اش بي , ما طلعلي اخر عشر اخبار , رجعت عدت التجربة ورجعت لاحقة الملف ل rss.xml بس شي طبيعي وقتها اصلا ما رح يطالع شي , لانو كود بي اش بي ما رح ينفذ وقتها , رجعت عدت التجربة وحطيت لاحقة الملف باشكال مختلفة , بس كمان ما مشي الحال , فيا تر وين غلطي بالموضوع ؟؟!!!وشو لازم اعمل حتى يتنفذ الملف بالطريقة الديناميكية يلي خبرتنا عنها وعجبتني كتير

سلام

#8

طبعاً يجب ان يكون تنفيذ الملف كملف PHP , اي تكون اللاحقة .php , ولكن ذلك لن يؤثر ,لان النتيجه العائده ستكون محتوى XML , بسبب العباره :

header('Content-type: text/xml')

اعتقد الخطأ بسيط وهو ان في المثال السابق تم استخدام الوسم <?= ؟> في الطباعة والتي يجب ان تكون مفعله في الملف php.ini من خلال short_open_tag ..

لذلك جرب بتغير طريقة الطباعه من

<?=$row['title']; ?>

الى :

<?php echo $row['title']; ?>

وعممها على بقية الشفرة ..

نقطه اخيره , حاول بقدر الامكان ان تبعد عن العامية , لاني عن نفسي احيانا لا افهم بعض الكلام :rolleyes: ..

تم تعديل هذه المشاركة بواسطة محمد معاشر في 23 يوليو 2008 في 10:53

لا إله الإ الله وحده لا شريك له الملك وله الحمد يحي ويميت وهو على كل شئ قدير

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

gazabigBanner.jpg

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

مواضيع مشابهة