77 lines
4.6 KiB
PowerShell
77 lines
4.6 KiB
PowerShell
# 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 @"
|
|
<header class="site-header"><nav class="navbar"><div class="container"><div class="nav-brand"><a href="$prefix/" class="logo"><span class="logo-text">Odoo Expertos</span></a></div><button class="nav-toggle" aria-label="Toggle navigation"><span></span><span></span><span></span></button><div class="nav-menu"><ul class="nav-list"><li><a href="$prefix/">$($L.home)</a></li><li><a href="$prefix/odoo/">$($L.odoo)</a></li><li><a href="$prefix/odoo-ia/">$($L.ia)</a></li><li><a href="$prefix/odoo-hosting/">$($L.hosting)</a></li><li><a href="$sm">$($L.sitemap)</a></li></ul></div></div></nav></header>
|
|
"@
|
|
}
|
|
|
|
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 @"
|
|
<footer class="site-footer"><div class="container"><div class="footer-cols"><div><strong>Odoo Expertos</strong></div><nav class="footer-nav"><a href="$prefix/">$($L.home)</a><a href="$prefix/odoo/">$($L.odoo)</a><a href="$prefix/odoo-ia/">$($L.ia)</a><a href="$prefix/odoo-hosting/">$($L.hosting)</a><a href="$sm">$($L.sitemap)</a></nav></div><div class="footer-bottom"><small>© 2026 Odoo Expertos</small></div></div></footer>
|
|
"@
|
|
}
|
|
|
|
$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 <div id="header">...</div>
|
|
$c = [regex]::Replace($c, '<div\s+id="header"[^>]*>\s*(?:<!--[^>]*-->)?\s*</div>', '<div id="header">' + $hdr + '</div>', $opts)
|
|
$c = [regex]::Replace($c, '<div\s+id="header"[^>]*>.*?</div>', '<div id="header">' + $hdr + '</div>', $opts -bor [System.Text.RegularExpressions.RegexOptions]::Singleline)
|
|
# Same for footer
|
|
$c = [regex]::Replace($c, '<div\s+id="footer"[^>]*>\s*(?:<!--[^>]*-->)?\s*</div>', '<div id="footer">' + $ftr + '</div>', $opts)
|
|
$c = [regex]::Replace($c, '<div\s+id="footer"[^>]*>.*?</div>', '<div id="footer">' + $ftr + '</div>', $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"
|