Files
4WDCSA.co.za/HEADER_MIGRATION_EXAMPLES.md

8.3 KiB

Header Consolidation - Migration Examples

Quick reference for updating your pages to use the new consolidated header system.


Quick Migration Pattern

Old Way (Separate Files)

<?php require_once('header01.php'); ?>
<!-- or -->
<?php require_once('header02.php'); ?>

New Way (Single File + Config)

<?php 
define('HEADER_VARIANT', '01');  // or '02'
require_once('header.php'); 
?>

Pages Using Header 01 → Update These

Pages that currently use header01.php should be updated to use variant '01':

<?php 
// At the very top of the file, before any output
define('HEADER_VARIANT', '01');
require_once('header.php'); 
?>

<!--- Rest of your page content --->

Pages to update (that likely use header01):

  • index.php - Home page
  • about.php - About page
  • trips.php - Trips listing
  • events.php - Events page
  • blog.php - Blog listing
  • contact.php - Contact page
  • Any pages with white menu

Pages Using Header 02 → Update These

Pages that currently use header02.php should use variant '02':

<?php 
// At the very top of the file, before any output
define('HEADER_VARIANT', '02');
require_once('header.php'); 
?>

<!--- Rest of your page content --->

Pages to update (that likely use header02):

  • trip-details.php - Trip detail pages
  • tour-list.html - Tour listing pages
  • Any pages with white/light background header
  • Pages with dark text welcome message

Complete Page Example - Header 01

Before (using header01.php):

<?php require_once('header01.php'); ?>

<section class="page-title">
    <h1>Welcome</h1>
</section>

<main>
    <!-- Your content here -->
</main>

<?php require_once('footer.php'); ?>

After (using consolidated header.php):

<?php 
// Set variant at the top
define('HEADER_VARIANT', '01');
require_once('header.php'); 
?>

<section class="page-title">
    <h1>Welcome</h1>
</section>

<main>
    <!-- Your content here (unchanged) -->
</main>

<?php require_once('footer.php'); ?>

Complete Page Example - Header 02

Before (using header02.php):

<?php require_once('header02.php'); ?>

<section class="page-banner-area">
    <h1>Trip Details</h1>
</section>

<main>
    <!-- Your content here -->
</main>

<?php require_once('footer.php'); ?>

After (using consolidated header.php):

<?php 
// Set variant at the top
define('HEADER_VARIANT', '02');
require_once('header.php'); 
?>

<section class="page-banner-area">
    <h1>Trip Details</h1>
</section>

<main>
    <!-- Your content here (unchanged) -->
</main>

<?php require_once('footer.php'); ?>

Testing After Migration

Test Variant 01 Pages

1. Load page with header variant 01
2. Verify:
   ✅ Logo shows (white version)
   ✅ Welcome text is WHITE
   ✅ Full trips submenu visible on hover
   ✅ Members Area menu visible (if logged in as member)
   ✅ Security headers present (check Network tab)
   ✅ All admin menus show (if superadmin)

Test Variant 02 Pages

1. Load page with header variant 02
2. Verify:
   ✅ Logo shows (dark version - logo-two.png)
   ✅ Welcome text is DARK (#111111)
   ✅ Trips menu has NO submenu
   ✅ Members Area menu NOT visible
   ✅ Security headers NOT present
   ✅ Page banner styles applied correctly
   ✅ Material Icons load correctly

Common Mistakes to Avoid

Mistake 1: Defining Variant After Output

<?php echo "<h1>Hello</h1>"; ?>
<?php define('HEADER_VARIANT', '01'); ?>
<?php require_once('header.php'); ?>
<!-- Error: Can't modify headers after output -->

Correct: Define at Top

<?php 
define('HEADER_VARIANT', '01');
require_once('header.php'); 
?>
<!-- Now safe to use header functions -->

Mistake 2: Forgetting to Set Variant

<?php require_once('header.php'); ?>
<!-- Defaults to variant 01 -->

Correct: Always Specify

<?php 
define('HEADER_VARIANT', '01'); // Explicit
require_once('header.php'); 
?>

Mistake 3: Including Old Files

<?php 
define('HEADER_VARIANT', '01');
require_once('header01.php'); // Wrong!
?>

Correct: New File Only

<?php 
define('HEADER_VARIANT', '01');
require_once('header.php'); // Right!
?>

File-by-File Migration Checklist

Step 1: Identify Current Header

For each PHP file, check which header it's using:

grep -r "require.*header0[12]" *.php

Step 2: Update Each File

Files using header01.php:

<?php 
define('HEADER_VARIANT', '01');
require_once('header.php'); 
?>

Files using header02.php:

<?php 
define('HEADER_VARIANT', '02');
require_once('header.php'); 
?>

Step 3: Delete Old Files

Once all files are updated and tested:

rm header01.php
rm header02.php

URL Parameter Alternative (For Testing)

If you want to test both variants WITHOUT modifying each file:

In your page file:

<?php require_once('header.php'); ?>
<!-- No HEADER_VARIANT defined -->

Then access via URL:

  • mypage.php?header=01 → Uses variant 01
  • mypage.php?header=02 → Uses variant 02
  • mypage.php → Uses default (variant 01)

Environment Variable Alternative (For DevOps)

Update header_config.php:

if (!defined('HEADER_VARIANT')) {
    $variant = isset($_GET['header']) ? $_GET['header'] : getenv('HEADER_VARIANT');
    $variant = $variant ?: '01';
    define('HEADER_VARIANT', $variant);
}

Then set in .env:

HEADER_VARIANT=02

Batch Migration Script (Optional)

If you have many files, create a migration script:

#!/bin/bash

# Find all PHP files using header01.php
for file in $(grep -l "require_once.*header01" *.php); do
    sed -i "s/require_once('header01.php');/define('HEADER_VARIANT', '01');\nrequire_once('header.php');/" "$file"
done

# Find all PHP files using header02.php
for file in $(grep -l "require_once.*header02" *.php); do
    sed -i "s/require_once('header02.php');/define('HEADER_VARIANT', '02');\nrequire_once('header.php');/" "$file"
done

echo "Migration complete!"

Verification Commands

Verify All Files Updated

# Should return empty (no old header includes)
grep -r "header0[12].php" *.php

Verify New Includes

# Should show all updated files
grep -r "HEADER_VARIANT" *.php

Check for Remaining Issues

# Look for any orphaned header01/header02 references
grep -r "header0[12]" . --include="*.php" --include="*.html"

Performance Notes

File Size Comparison

  • Before: header01.php (400 lines) + header02.php (400 lines) = 800 lines total
  • After: header.php (300 lines) + header_config.php (100 lines) = 400 lines total
  • Savings: 50% code reduction

Load Time

  • Before: Loads one of two large files per page
  • After: Loads smaller consolidated file + config array
  • Impact: Negligible for most sites (PHP parses quickly)

Success Criteria

After migration, verify:

  • All pages load without errors
  • Header variant 01 pages look correct (white menu, etc.)
  • Header variant 02 pages look correct (dark header, etc.)
  • All navigation menus work
  • All user authentication works
  • Admin sections still visible to admins
  • No duplicate code between header files
  • Old header01.php and header02.php removed
  • Page load times unchanged
  • No errors in browser console

Rollback Plan (If Needed)

If something breaks:

# Restore from git
git checkout header01.php header02.php

# Revert page changes
git checkout *.php

Then investigate and re-test before trying again.


Support

Question: "Which variant should my page use?"
Answer: Check what it currently uses (grep for header0X.php)

Question: "Can I mix variants in one page?"
Answer: No - define HEADER_VARIANT once at the top

Question: "How do I add a new variant?"
Answer: Add to header_config.php array, use define('HEADER_VARIANT', '03')

Question: "Do I need to change footer.php?"
Answer: No - footer.php remains unchanged


Quick Summary

OLD:  require_once('header01.php');  // or header02.php
NEW:  define('HEADER_VARIANT', '01'); require_once('header.php');

That's it! Your page will work exactly the same, but with zero code duplication.

Happy migrating! 🚀