new site
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Multi-Language Sitemap Generator for Odoo Expertos
|
||||
# Generates sitemaps with hreflang annotations for ES (default), EN, DE, FR
|
||||
|
||||
DOMAIN="https://www.odoo-expertos.com"
|
||||
TODAY=$(date +%Y-%m-%d)
|
||||
LANGUAGES=("" "en" "de" "fr" "pt" "ar")
|
||||
HREFLANGS=("es" "en" "de" "fr" "pt" "ar")
|
||||
|
||||
# Generate main sitemap index
|
||||
cat << 'SITEMAP_INDEX_START' > sitemap.xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<sitemap>
|
||||
<loc>https://www.odoo-expertos.com/sitemap-es.xml</loc>
|
||||
</sitemap>
|
||||
<sitemap>
|
||||
<loc>https://www.odoo-expertos.com/sitemap-en.xml</loc>
|
||||
</sitemap>
|
||||
<sitemap>
|
||||
<loc>https://www.odoo-expertos.com/sitemap-de.xml</loc>
|
||||
</sitemap>
|
||||
<sitemap>
|
||||
<loc>https://www.odoo-expertos.com/sitemap-fr.xml</loc>
|
||||
</sitemap>
|
||||
<sitemap>
|
||||
<loc>https://www.odoo-expertos.com/sitemap-pt.xml</loc>
|
||||
</sitemap>
|
||||
<sitemap>
|
||||
<loc>https://www.odoo-expertos.com/sitemap-ar.xml</loc>
|
||||
</sitemap>
|
||||
</sitemapindex>
|
||||
SITEMAP_INDEX_START
|
||||
|
||||
# Function to generate hreflang entries for a given path
|
||||
generate_hreflang() {
|
||||
local base_path="$1"
|
||||
echo " <xhtml:link rel=\"alternate\" hreflang=\"es\" href=\"${DOMAIN}${base_path}\" />"
|
||||
echo " <xhtml:link rel=\"alternate\" hreflang=\"en\" href=\"${DOMAIN}/en${base_path}\" />"
|
||||
echo " <xhtml:link rel=\"alternate\" hreflang=\"de\" href=\"${DOMAIN}/de${base_path}\" />"
|
||||
echo " <xhtml:link rel=\"alternate\" hreflang=\"fr\" href=\"${DOMAIN}/fr${base_path}\" />"
|
||||
echo " <xhtml:link rel=\"alternate\" hreflang=\"pt\" href=\"${DOMAIN}/pt${base_path}\" />"
|
||||
echo " <xhtml:link rel=\"alternate\" hreflang=\"ar\" href=\"${DOMAIN}/ar${base_path}\" />"
|
||||
echo " <xhtml:link rel=\"alternate\" hreflang=\"x-default\" href=\"${DOMAIN}${base_path}\" />"
|
||||
}
|
||||
|
||||
# Function to generate sitemap for a specific language
|
||||
generate_lang_sitemap() {
|
||||
local lang="$1"
|
||||
local lang_prefix="$2"
|
||||
local sitemap_file="sitemap-${lang}.xml"
|
||||
|
||||
cat << SITEMAP_HEADER > "$sitemap_file"
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
SITEMAP_HEADER
|
||||
|
||||
# Homepage
|
||||
cat << HOMEPAGE >> "$sitemap_file"
|
||||
<url>
|
||||
<loc>${DOMAIN}${lang_prefix}/</loc>
|
||||
<lastmod>${TODAY}</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
$(generate_hreflang "/")
|
||||
</url>
|
||||
HOMEPAGE
|
||||
|
||||
# Main category pages
|
||||
for category in "odoo" "odoo-hosting" "odoo-ia"; do
|
||||
cat << CATEGORY >> "$sitemap_file"
|
||||
<url>
|
||||
<loc>${DOMAIN}${lang_prefix}/${category}/</loc>
|
||||
<lastmod>${TODAY}</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
$(generate_hreflang "/${category}/")
|
||||
</url>
|
||||
CATEGORY
|
||||
done
|
||||
|
||||
# Content pages for this language
|
||||
if [ -z "$lang_prefix" ]; then
|
||||
# Spanish (root) - scan existing content
|
||||
find . -name "*.html" -type f | grep -E "^./odoo|^./odoo-hosting|^./odoo-ia" | grep -v test-files | grep -v "^./en" | grep -v "^./de" | grep -v "^./fr" | while read file; do
|
||||
path=$(echo "$file" | sed 's|^\./||' | sed 's|/index\.html$|/|' | sed 's|\.html$|.html|')
|
||||
|
||||
# Skip category index pages (already added above)
|
||||
if [[ "$path" == "odoo/" || "$path" == "odoo-hosting/" || "$path" == "odoo-ia/" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
depth=$(echo "$path" | tr -cd '/' | wc -c)
|
||||
if [ $depth -le 2 ]; then
|
||||
priority="0.8"
|
||||
else
|
||||
priority="0.7"
|
||||
fi
|
||||
|
||||
cat << URL >> "$sitemap_file"
|
||||
<url>
|
||||
<loc>${DOMAIN}/${path}</loc>
|
||||
<lastmod>${TODAY}</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>${priority}</priority>
|
||||
$(generate_hreflang "/${path}")
|
||||
</url>
|
||||
URL
|
||||
done
|
||||
else
|
||||
# Other languages - scan their directories
|
||||
if [ -d ".${lang_prefix}" ]; then
|
||||
find ".${lang_prefix}" -name "*.html" -type f | while read file; do
|
||||
# Get path relative to language directory
|
||||
rel_path=$(echo "$file" | sed "s|^\.${lang_prefix}/||" | sed 's|/index\.html$|/|' | sed 's|\.html$|.html|')
|
||||
base_path="/${rel_path}"
|
||||
|
||||
depth=$(echo "$rel_path" | tr -cd '/' | wc -c)
|
||||
if [ $depth -le 2 ]; then
|
||||
priority="0.8"
|
||||
else
|
||||
priority="0.7"
|
||||
fi
|
||||
|
||||
cat << URL >> "$sitemap_file"
|
||||
<url>
|
||||
<loc>${DOMAIN}${lang_prefix}/${rel_path}</loc>
|
||||
<lastmod>${TODAY}</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>${priority}</priority>
|
||||
$(generate_hreflang "${base_path}")
|
||||
</url>
|
||||
URL
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
# Legal pages (only for main Spanish sitemap)
|
||||
if [ -z "$lang_prefix" ]; then
|
||||
for page in "cookie-policy" "legal-notice" "privacy-policy" "terms-of-use"; do
|
||||
cat << LEGAL >> "$sitemap_file"
|
||||
<url>
|
||||
<loc>${DOMAIN}/${page}.html</loc>
|
||||
<lastmod>${TODAY}</lastmod>
|
||||
<changefreq>yearly</changefreq>
|
||||
<priority>0.3</priority>
|
||||
</url>
|
||||
LEGAL
|
||||
done
|
||||
fi
|
||||
|
||||
# Close sitemap
|
||||
echo "</urlset>" >> "$sitemap_file"
|
||||
|
||||
url_count=$(grep -c '<url>' "$sitemap_file")
|
||||
echo "Generated $sitemap_file with $url_count URLs"
|
||||
}
|
||||
|
||||
# Generate sitemaps for each language
|
||||
generate_lang_sitemap "es" ""
|
||||
generate_lang_sitemap "en" "/en"
|
||||
generate_lang_sitemap "de" "/de"
|
||||
generate_lang_sitemap "fr" "/fr"
|
||||
generate_lang_sitemap "pt" "/pt"
|
||||
generate_lang_sitemap "ar" "/ar"
|
||||
|
||||
# Summary
|
||||
echo ""
|
||||
echo "=== Sitemap Generation Complete ==="
|
||||
echo "Main sitemap index: sitemap.xml"
|
||||
for lang in "es" "en" "de" "fr" "pt" "ar"; do
|
||||
echo " - sitemap-${lang}.xml: $(grep -c '<url>' sitemap-${lang}.xml) URLs"
|
||||
done
|
||||
Reference in New Issue
Block a user