# W6: bake static nav into every page; remove createHeader/createFooter/createEEAT JS calls $repo = Split-Path -Parent (Split-Path -Parent $PSScriptRoot) $excludePattern = '\\(\.git|node_modules|seo-audit-2026-05-27|website|directory)\\' $files = Get-ChildItem $repo -Recurse -Filter index.html -File -ErrorAction SilentlyContinue | Where-Object { $_.FullName -notmatch $excludePattern } function PathLang([string]$fullPath, [string]$repo) { $rel = $fullPath.Substring($repo.Length).TrimStart('\','/') $parts = $rel -split '[\\/]' if ($parts.Count -ge 1 -and ($parts[0] -in @('en','de','fr','pt','ar'))) { return $parts[0] } return 'es' } $labels = @{ 'es' = @{ home='Inicio'; odoo='Odoo'; ia='Odoo IA'; hosting='Hosting Odoo'; sitemap='Mapa del Sitio' } 'en' = @{ home='Home'; odoo='Odoo'; ia='Odoo AI'; hosting='Odoo Hosting'; sitemap='Sitemap' } 'de' = @{ home='Start'; odoo='Odoo'; ia='Odoo KI'; hosting='Odoo Hosting'; sitemap='Sitemap' } 'fr' = @{ home='Accueil';odoo='Odoo'; ia='Odoo IA'; hosting='Hebergement Odoo'; sitemap='Plan du Site' } 'pt' = @{ home='Inicio'; odoo='Odoo'; ia='Odoo IA'; hosting='Hospedagem Odoo'; sitemap='Mapa do Site' } 'ar' = @{ home='Inicio'; odoo='Odoo'; ia='Odoo AI'; hosting='Odoo Hosting'; sitemap='Sitemap' } } function StaticHeader([string]$lang) { $L = $labels[$lang] if (-not $L) { $L = $labels['es'] } if ($lang -eq 'es') { $prefix = '' } else { $prefix = "/$lang" } $sm = if ($lang -eq 'es') { '/mapa-del-sitio/' } else { "$prefix/mapa-del-sitio/" } return @" "@ } function StaticFooter([string]$lang) { $L = $labels[$lang] if (-not $L) { $L = $labels['es'] } if ($lang -eq 'es') { $prefix = '' } else { $prefix = "/$lang" } $sm = if ($lang -eq 'es') { '/mapa-del-sitio/' } else { "$prefix/mapa-del-sitio/" } return @" "@ } $opts = [System.Text.RegularExpressions.RegexOptions]::IgnoreCase $changed = 0 foreach ($file in $files) { $c = [System.IO.File]::ReadAllText($file.FullName) if (-not $c) { continue } $orig = $c $lang = PathLang $file.FullName $repo $hdr = StaticHeader $lang $ftr = StaticFooter $lang # Inject static header inside $c = [regex]::Replace($c, ']*>\s*(?:)?\s*', '', $opts) $c = [regex]::Replace($c, ']*>.*?', '', $opts -bor [System.Text.RegularExpressions.RegexOptions]::Singleline) # Same for footer $c = [regex]::Replace($c, ']*>\s*(?:)?\s*', '', $opts) $c = [regex]::Replace($c, ']*>.*?', '', $opts -bor [System.Text.RegularExpressions.RegexOptions]::Singleline) # Remove the createHeader/createFooter/createEEAT JS lines (entire lines) $c = [regex]::Replace($c, '(?m)^\s*document\.getElementById\([''"]header[''"]\)\.innerHTML\s*=\s*createHeader\(\)\s*;\s*\r?\n', '') $c = [regex]::Replace($c, '(?m)^\s*document\.getElementById\([''"]footer[''"]\)\.innerHTML\s*=\s*createFooter\(\)\s*;\s*\r?\n', '') $c = [regex]::Replace($c, '(?ms)\s*if\s*\(\s*typeof\s+createEEAT\s*===\s*[''"]function[''"]\s*\)\s*\{[^}]*createEEAT\(\)[^}]*\}\s*\r?\n', "`r`n") # Catch any stray createHeader() / createFooter() / createEEAT() still in file $c = [regex]::Replace($c, 'createHeader\(\)', '/*W6-static*/null') $c = [regex]::Replace($c, 'createFooter\(\)', '/*W6-static*/null') $c = [regex]::Replace($c, 'createEEAT\(\)', '/*W6-static*/null') if ($c -ne $orig) { [System.IO.File]::WriteAllText($file.FullName, $c) $changed++ } } Write-Host "W6: files modified=$changed"