المفاتيح في الاقسام

لنعد الى ملف «rubrique.html». لقد تركناه مع حلقة BOUCLE_articles تافهة ودون اهمية تذكر لموقعنا لأنها لا ترتّب المقالات حسب الاصناف.

وانظر محاسن الصدف! لقد قمنا ببرمجة وظيفة كهذه للمقالات!

يكفي اذاً نسخ الفقرة التي تهمنا ولصقها مكان حلقة BOUCLE_articles (التي تختفي) والنظر في ما اذا كانت تتطلب بعض التعديلات. مما يعطينا:

	<BOUCLE_the_articles(RUBRIQUES){id_rubrique}>
		<B_tests><p>إختبارات هذه اللعبة:
		<ul>
		<BOUCLE_tests(ARTICLES){id_rubrique}{titre_mot=إختبار}>
			<li>
			<BOUCLE_tests_platforms(MOTS){id_article}{type=البيئة}>
				[(#LOGO_MOT)]
			</BOUCLE_tests_platforms>
			<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
		</BOUCLE_tests>
		</ul>
		</B_tests>
		
		<B_previews><p>إستعراضات هذه اللعبة:
		<ul>
		<BOUCLE_previews(ARTICLES){id_rubrique}{titre_mot=إستعراض}>
			<li>
			<BOUCLE_previews_platforms(MOTS){id_article}{type=البيئة}>
				[(#LOGO_MOT)]
			</BOUCLE_previews_platforms>
			<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
		</BOUCLE_previews>
		</ul>
		</B_previews>

		<B_solutions><p>حلول هذه اللعبة:
		<ul>
		<BOUCLE_solutions(ARTICLES){id_rubrique}{titre_mot=حلول}>
			<li>
			<BOUCLE_soluces_platforms(MOTS){id_article}{type=البيئة}>
				[(#LOGO_MOT)]
			</BOUCLE_solutions_platforms>
			<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
		</BOUCLE_solutions>
		</ul>
		</B_solutions>

		<B_tips><p>نصائح هذه اللعبة:
		<ul>
		<BOUCLE_tips(ARTICLES){id_rubrique}{titre_mot=نصائح}>
			<li>
			<BOUCLE_tips_platforms(MOTS){id_article}{type=البيئة}>
				[(#LOGO_MOT)]
			</BOUCLE_tips_platforms>
			<a href="#URL_ARTICLE">#TITRE</a> - [(#DATE|affdate)]
		</BOUCLE_tips>
		</ul>
		</B_tips>
		
		<BOUCLE_news(ARTICLES){id_rubrique}{titre_mot=أخبار}{par date}{inverse}{0,1}>
		<p><a href="news_game.php3?id_rubrique=#ID_RUBRIQUE">أخبار هذه اللعبة</a> - آخر تحديث: [(#DATE|affdate)]
		</BOUCLE_news>
	</BOUCLE_the_articles>

التعديلات التي دخلت:
 ليس من الضروري تغيير الاستفسار {id_rubrique} لأننا قد اعتمدنا على هذا القسم في المقالات.
 نحذف كل علامات {doublons}، فلا لزوم لها هنا (اذ لا يوجد اي مقال معروض).
 مجموع الفقرة موجود داخل حلقة BOUCLE_the_articles. فماذا تفعل هذه الحلقة؟ لا شيء على الاطلاق: تجلب القسم الذي نوجد فيه مسبقاً. لكن هذه الحلقة ستنفعنا لاحقاً.

نقطة الضعف الاخرى في صفحتنا كانت حلقة BOUCLE_games حيث تؤدي حلقة BOUCLE_with_articles الى عرض قائمة بمقالات القسم الفرعي دون ترتيب. الا اننا في فقرتنا البرمجية السابقة، قمنا بترتيب مقالات الاقسام.

لنعدل اذاً حلقة BOUCLE_games هكذا:

	<BOUCLE_games(RUBRIQUES){id_parent}{par titre}>

		<B_with_articles>
		<h4><a href="#URL_RUBRIQUE">#TITRE</a></h4>
		[(#LOGO_RUBRIQUE|right)]
		<ul>
		<BOUCLE_with_articles(ARTICLES){id_rubrique}{0,1}>
			<BOUCLE_repeat_articles(boucle_the_articles)></BOUCLE_repeat_articles>
		</BOUCLE_with_articles>
		</ul>
		</B_with_articles>
		
	</BOUCLE_games>

من الآن، اصبحت حلقة BOUCLE_with_articles تنفذ مرة واحدة (على مقال واحد) مما يكفي لمعرفة اذا كانت تحتوي مقالاً. ونلاحظ ظهور حلقة دورية BOUCLE_repeat_articles: انها حلقة تستعيد تصرف حلقة BOUCLE_the_articles كما هو تماماً من المكان الذي توجد فيه (اي انها لم تعد تبدأ من القسم الاساسي بل من القسم الفرعي). اما فائدة اقتصار حلقة BOUCLE_with_articles على عنصر واحد، فهي واضحة: فبدون هذا الحد سيتم تنفيذ حلقة BOUCLE_repeat_articles عدد من المرات يعادل عدد المقالات في القسم الفرعي.

بالطبع، ان النتائج البصرية لهذا المثال قبيحة للغاية، لجهة اثقالها وعدم وضوحها. فلنقل انه كان من المفيد استخدام حلقة دورية في هذا التدريب.

مؤلف George نُشر في: تم التحديث: 21/03/23

الترجمات: عربي, català, Español, français, italiano