سؤال

لقد طُلب مني معرفة كيفية عمل نظام Concrete5 مع صاحب العمل ، ولا يمكنني معرفة شيء ما.

لقد تم تثبيت Concrete5 على دليل على الخادم يسمى /realprofessionals. عندما يصنع نظام Concrete5 صفحات جديدة ، فإنه يمنحهم مساراتهم المطلقة ، على سبيل المثال:

http://www.wmcpartners.com/realprofessionals/footer

ومع ذلك ، لم يصنع مجلد في /realprofessionals دليل يسمى footer. فكيف يتم ذلك؟ كيف يمكن http://www.wmcpartners.com/realprofessionals/footer كن رابط عمل؟

هل كانت مفيدة؟

المحلول

اجابة قصيرة: جميع طلبات الصفحات تمر بالفعل من خلال ملف index.php الواحد والوحيد. يتم تخزين محتوى الصفحة في قاعدة البيانات ، وليس في الملفات الموجودة على الخادم.

اجابة طويلة:يعمل Concrete5 (ومعظم CMS المستندة إلى PHP لهذه المسألة) مثل هذا: يتم توجيه جميع الطلبات من خلال ملف INDEX.PHP. يتم فرض هذا التوجيه مع بعض قواعد mod_rewrite في ملف .htaccess. تقول القواعد "بالنسبة لأي طلب ، لا تذهب فعليًا إلى تلك الصفحة ، ولكن بدلاً من ذلك انتقل إلى index.php وتمرير بقية المسار المطلوب كمعلمات $ _get". ثم في رمز INDEX.PHP (أو بعض التعليمات البرمجية الأخرى التي يتم تضمينها بواسطة ملف INDEX.PHP) ، يتم تحديد الصفحة المطلوبة بناءً على المسار الذي تم وضعه في معلمات $ _GET بواسطة Apache (وفقًا لقاعدة Mod_Rewrite في. htaccess) ، والمحتوى المناسب يتم استرداده من قاعدة البيانات.

تخزين المحتوى في قاعدة البيانات بدلاً من الملفات الموجودة على الخادم له العديد من المزايا. على سبيل المثال ، يمكنك إعادة استخدام نفس قالب HTML-رأس ، تذييل ، الشريط الجانبي-في كل صفحة ، وإذا قمت بتغيير القالب ، فسوف ينعكس تلقائيًا في جميع الصفحات التي يتم استخدامها عليها. أيضًا ، يجعل من السهل خلط الصفحات حولها ومنحهم أي عنوان URL الذي تريده (على سبيل المثال لا ".php" في النهاية ، أو/2010/11/تاريخ/مسارات/لـ/المدونة/المنشورات).

العيب بالطبع هو أن كل طلب يتطلب العديد من استعلامات قاعدة البيانات ، ولكن بالنسبة لمعظم المواقع (تلك التي لا تحتوي على زيليون من طرق عرض الصفحة) ، فإن المقايضة تستحق ذلك (ويمكن أن تساعد أنواع التخزين المؤقت المختلفة في تقليل أداء الأداء).

نصائح أخرى

إجابة الأردن ممتازة ، أود أن أضيف أنك ربما لا ترى index.php في عنوان URL لأنك قمت بتمكينك عناوين URL جميلة (اكتب "Pretty" على مربع البحث في Concrete5 للتحقق من ذلك).

على أي حال ، فإن أفضل طريقة لإضافة رابط برمجي إلى الصفحات الداخلية هي:

<a href="<?=$this->url('page-name');?>"> 
    page name 
</a>

إنه يعمل على كل من مضيف محلي وعبر الإنترنت ، مع أو بدون عناوين URL جميلة.

(للحصول على اسم الصفحة ، انتقل إلى لوحة القيادة/خريطة Sitemap/اسم الصفحة الكاملة/الخصائص/مسارات الصفحة والموقع.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top