Version stable, aprelic, connexion CFRS et autres corrections
This commit is contained in:
1 parent
865de8a976
commit
e9d0010451
62 files changed
+17483
-7256
No files matched your search
+153
@@ -0,0 +1,153 @@
|
||||
<?php
|
||||
declare (strict_types = 1);
|
||||
|
||||
require_once __DIR__ . '/../includes/bootstrap_global.php';
|
||||
require_once __DIR__ . '/includes/search_helpers.php';
|
||||
|
||||
header('Content-Type: application/xml; charset=UTF-8');
|
||||
|
||||
function xml_escape(string $s): string
|
||||
{
|
||||
return htmlspecialchars($s, ENT_QUOTES | ENT_XML1, 'UTF-8');
|
||||
}
|
||||
|
||||
$base = 'https://uslugi.fr';
|
||||
|
||||
// =========================
|
||||
// Pages fixes utiles
|
||||
// =========================
|
||||
$urls = [
|
||||
[
|
||||
'loc' => $base . '/',
|
||||
'changefreq' => 'weekly',
|
||||
'priority' => '1.0',
|
||||
'lastmod' => date('Y-m-d'),
|
||||
],
|
||||
[
|
||||
'loc' => $base . '/faq.php',
|
||||
'changefreq' => 'weekly',
|
||||
'priority' => '0.8',
|
||||
'lastmod' => date('Y-m-d'),
|
||||
],
|
||||
[
|
||||
'loc' => $base . '/about.php',
|
||||
'changefreq' => 'monthly',
|
||||
'priority' => '0.6',
|
||||
'lastmod' => date('Y-m-d'),
|
||||
],
|
||||
[
|
||||
'loc' => $base . '/how-it-work.php',
|
||||
'changefreq' => 'monthly',
|
||||
'priority' => '0.6',
|
||||
'lastmod' => date('Y-m-d'),
|
||||
],
|
||||
[
|
||||
'loc' => $base . '/contact.php',
|
||||
'changefreq' => 'monthly',
|
||||
'priority' => '0.6',
|
||||
'lastmod' => date('Y-m-d'),
|
||||
],
|
||||
];
|
||||
|
||||
// =========================
|
||||
// Pages catégories SEO
|
||||
// =========================
|
||||
$categorySlugs = [
|
||||
'avocat',
|
||||
'consultant',
|
||||
'medecin',
|
||||
'psychologue',
|
||||
'professeur',
|
||||
'comptable',
|
||||
'traducteur',
|
||||
'notaire',
|
||||
'guide',
|
||||
'agent-immobilier',
|
||||
'autres-specialistes',
|
||||
];
|
||||
|
||||
foreach ($categorySlugs as $slug) {
|
||||
$urls[] = [
|
||||
'loc' => $base . '/recherche/' . $slug . '/',
|
||||
'changefreq' => 'daily',
|
||||
'priority' => '0.9',
|
||||
'lastmod' => date('Y-m-d'),
|
||||
];
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Profils spécialistes actifs
|
||||
// =========================
|
||||
$sql = "
|
||||
SELECT id, prenom, nom, ville, specialite, updated_at
|
||||
FROM praticien
|
||||
WHERE date_expiration IS NOT NULL
|
||||
AND date_expiration >= DATE_SUB(NOW(), INTERVAL 14 DAY)
|
||||
";
|
||||
$stmt = $pdo->query($sql);
|
||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
foreach ($rows as $p) {
|
||||
$specSlug = 'specialiste';
|
||||
|
||||
if (! empty($p['specialite'])) {
|
||||
$specDb = mb_strtolower(trim((string) $p['specialite']), 'UTF-8');
|
||||
|
||||
foreach (seo_spec_map() as $slug => $cfg) {
|
||||
$dbVal = mb_strtolower(trim((string) ($cfg['db'] ?? '')), 'UTF-8');
|
||||
|
||||
if ($dbVal === $specDb || ($dbVal !== '' && mb_stripos($specDb, $dbVal, 0, 'UTF-8') === 0)) {
|
||||
$specSlug = $slug;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$citySlug = ! empty($p['ville']) ? seo_city_slug_from_input((string) $p['ville']) : 'france';
|
||||
|
||||
$nameSlug = seo_slug(trim((string) ($p['prenom'] ?? '') . ' ' . (string) ($p['nom'] ?? '')));
|
||||
if ($nameSlug === '') {
|
||||
$nameSlug = 'profil';
|
||||
}
|
||||
|
||||
$loc = $base . '/specialistes/'
|
||||
. rawurlencode($specSlug) . '/'
|
||||
. rawurlencode($citySlug) . '/'
|
||||
. rawurlencode($nameSlug . '-' . (int) $p['id']) . '/';
|
||||
|
||||
$lastmod = date('Y-m-d');
|
||||
if (! empty($p['updated_at'])) {
|
||||
$ts = strtotime((string) $p['updated_at']);
|
||||
if ($ts) {
|
||||
$lastmod = date('Y-m-d', $ts);
|
||||
}
|
||||
}
|
||||
|
||||
$urls[] = [
|
||||
'loc' => $loc,
|
||||
'changefreq' => 'weekly',
|
||||
'priority' => '0.8',
|
||||
'lastmod' => $lastmod,
|
||||
];
|
||||
}
|
||||
|
||||
// =========================
|
||||
// Sortie XML
|
||||
// =========================
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
|
||||
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
|
||||
|
||||
foreach ($urls as $url) {
|
||||
echo " <url>\n";
|
||||
echo ' <loc>' . xml_escape($url['loc']) . "</loc>\n";
|
||||
|
||||
if (! empty($url['lastmod'])) {
|
||||
echo ' <lastmod>' . xml_escape($url['lastmod']) . "</lastmod>\n";
|
||||
}
|
||||
|
||||
echo ' <changefreq>' . xml_escape($url['changefreq']) . "</changefreq>\n";
|
||||
echo ' <priority>' . xml_escape($url['priority']) . "</priority>\n";
|
||||
echo " </url>\n";
|
||||
}
|
||||
|
||||
echo '</urlset>';
|
||||
Reference in new issue
Block a user