مشكلة الترويسة وتذييل الصفحة في HTML CSS

ArabicPro

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

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

الرجاء من المحترفين والخبراء المساعدة في كود جاهز لقالب صفحة فيه ترويسة [اسم شركة] وتذييل صفحة [عنوان الشركة] وفي الوسط نص طويل بحيث لو أعطيت أمر طباعة للصفحة أن تظهر الترويسة والذييل في كل الصفحات وأن يكون هناك رقم الصفحة ، وشكراً مقدماً لمن يساعدني في برمجة هذا الكود.


ان كنت تقوم ببناء مجموعة صفحات عن طريق الـ html و ال css وتريد عدم تكرار الاجزاء (او المكونات) المكررة في كل صفحة، فأنت ستحتاج في الغالب اما معرفة او خبرة بتطوير الواجهة الخلفية. وذلك لفصل هاته المكونات في ملفات وحقنها في كل ملف بسطر تضمين.

أو معرفة بأطر العمل القائمة على المكونات component-based framework من مثل React و VueJS. لعمل نفس الفكرة.

أقل المطلوب هو معرفة بأساسيات جافاسكربت لعمل نفس الفكرة. ولنقل مثلا ان هنالك ملف جافاسكربت رئيسي script.js يتم استعماله في كامل الصفحات على نحو:

<script src="script.js"></script>

يحوي هذا الملف شيفرة تقوم بالبحث عن عنصر حاوي الترويسة وعن عنصر حاوي التذييل وتقوم بحقن هذين المكونين بقالبيهما.

على سبيل المثال:

  • تحوي صفحة index.html الحاويتين التاليتين:
<component id="header-component"></component>
<component id="footer-component"></component>
  • سيقوم ملفنا بالبحث عنهما أولا وجلبهما:
var header = document.querySelector('#header-component');
var footer= document.querySelector('#footer-component');
  • ثم سنقوم بتحضير قالبي هذين المكونين:
const headerTmpl = `<div> header template example </div>`;

const footerTmpl = `<div> footertemplate example </div>`;
  • الآن سنقوم فقط بحقن headerTmpl داخل html الخاص بالعنصر header فيكون:
var header = document.querySelector('#header-component');
const headerTmpl = `<div> header template example </div>`;

header.innerHTML = headerTmpl;
  • نفس الامر بالنسبة للعنصر footer:
var footer = document.querySelector('#footer -component');
const footerTmpl = `<div> header footer example </div>`;

footer.innerHTML = footerTmpl;

فتكون الشيفرة كاملة داخل الملف:

const headerTmpl = `<div> header template example </div>`;
const footerTmpl = `<div> footertemplate example </div>`;

var header = document.querySelector('#header-component');
var footer= document.querySelector('#footer-component');

header.innerHTML = headerTmpl;
footer.innerHTML = footerTmpl;

وأينما وجد هاذان العنصران:

<component id="header-component"></component>
<component id="footer-component"></component>

فانهما سيستبدلان عن طريق الجافاسكربت بالمحتوى الموصوف في الثابتين headerTmpl و footerTmpl

يمكنك وضع محتويا العنصرين الذان لديك مكانهما.

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

شكراً جزيلاً أخي الفاضل على ردك وشرحك، أنا مبتدأ بالبرمجة، لو سمحت ممكن الكود كاملاً لأني حاولت جمعه ولم ينجح معي، لك كل الشكر والتقدير.

الهدف من الصفحة هي طباعة خطابات خاصة بالشركة ولا يمهني فهرسة محركات البحث.

لم تنجح الطريقة ولا تظهر كما أريد

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

أريدها مثل الورق الرسمي ترويسة بالأعلى وتذييل بالأسفل

هل هذه صفحات من تطبيق ويب؟

نعم؛ ولكن المشكلة أن الكلام يختفي خلف الصورة (التذييل) في بعض الصفحات، والصفحة الأخير لو كان فيها نص قليل يرتفع ذييل الصفحة

هل جربت المثال المرفق؟

const headerTmpl = `<div> header template example </div>`;
const footerTmpl = `<div> footertemplate example </div>`;

var header = document.querySelector('#header-component');
var footer= document.querySelector('#footer-component');

header.innerHTML = headerTmpl;
footer.innerHTML = footerTmpl;

طبعا فإنه سيجب عليك استبدال قيمتي الثابتين headerTmpl  و footerTmpl  بما يوافقهما لديك.

راجع الخطوات السابقة.

هل تظهر أي رسائل أخطاء في الطرفية console؟

جربتها المشكلة أن الترويسة لا تتكرر دائماً وكذلك التذيل والمشكلة الأخرى أن آخر صفحة لو كان فيها النص قليل ربع صفحة التذييل يرتفع للأعلى، وما هو console وكيف أستخدمه