This commit is contained in:
parent
4642425f43
commit
dc223ae1b8
24 changed files with 1199 additions and 492 deletions
108
site/snippets/card-open-graph.php
Normal file
108
site/snippets/card-open-graph.php
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
<?php
|
||||
// URL à scraper (remplacez par l'URL souhaitée)
|
||||
$url = 'https://www.lemonde.fr/societe/article/2025/07/16/au-c-ur-des-emeutes-de-nouvelle-caledonie-quand-la-mort-de-banane-abattu-par-le-gign-lance-le-siege-de-saint-louis_6621496_3224.html';
|
||||
|
||||
// Fonction pour récupérer les données Open Graph
|
||||
function getOpenGraphData($url) {
|
||||
$ogData = [
|
||||
'title' => '',
|
||||
'description' => '',
|
||||
'image' => '',
|
||||
'site_name' => '',
|
||||
'url' => $url
|
||||
];
|
||||
|
||||
// Configuration du contexte pour éviter les erreurs SSL
|
||||
$context = stream_context_create([
|
||||
'http' => [
|
||||
'method' => 'GET',
|
||||
'header' => 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
|
||||
'timeout' => 10
|
||||
],
|
||||
'ssl' => [
|
||||
'verify_peer' => false,
|
||||
'verify_peer_name' => false
|
||||
]
|
||||
]);
|
||||
|
||||
// Récupérer le HTML
|
||||
$html = @file_get_contents($url, false, $context);
|
||||
|
||||
if ($html === false) {
|
||||
return $ogData;
|
||||
}
|
||||
|
||||
// Parser les meta tags Open Graph
|
||||
preg_match_all('/<meta\s+property=["\']og:([^"\']+)["\']\s+content=["\']([^"\']+)["\']/i', $html, $matches);
|
||||
|
||||
if (!empty($matches[1])) {
|
||||
foreach ($matches[1] as $index => $property) {
|
||||
$content = $matches[2][$index];
|
||||
switch ($property) {
|
||||
case 'title':
|
||||
$ogData['title'] = htmlspecialchars($content);
|
||||
break;
|
||||
case 'description':
|
||||
$ogData['description'] = htmlspecialchars($content);
|
||||
break;
|
||||
case 'image':
|
||||
$ogData['image'] = $content;
|
||||
break;
|
||||
case 'site_name':
|
||||
$ogData['site_name'] = htmlspecialchars($content);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback: si pas de og:title, utiliser <title>
|
||||
if (empty($ogData['title'])) {
|
||||
preg_match('/<title>([^<]+)<\/title>/i', $html, $titleMatch);
|
||||
if (!empty($titleMatch[1])) {
|
||||
$ogData['title'] = htmlspecialchars($titleMatch[1]);
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback: si pas de site_name, utiliser le domaine
|
||||
if (empty($ogData['site_name'])) {
|
||||
$parsed = parse_url($url);
|
||||
$ogData['site_name'] = $parsed['host'] ?? '';
|
||||
}
|
||||
|
||||
return $ogData;
|
||||
}
|
||||
|
||||
$ogData = getOpenGraphData($url);
|
||||
|
||||
// Toujours utiliser le domaine de l'URL pour site_name
|
||||
$parsed = parse_url($url);
|
||||
$ogData['site_name'] = $parsed['host'] ?? '';
|
||||
?>
|
||||
|
||||
<div class="card--open-graph">
|
||||
<?php if (!empty($ogData['image'])): ?>
|
||||
<figure>
|
||||
<img src="<?= $ogData['image'] ?>" alt="<?= $ogData['title'] ?>">
|
||||
</figure>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="content">
|
||||
<?php if (!empty($ogData['site_name'])): ?>
|
||||
<span class="site-name"><?= $ogData['site_name'] ?></span>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($ogData['title'])): ?>
|
||||
|
||||
<h3 class="title">
|
||||
<a href="<?= $ogData['url'] ?>" target="_blank">
|
||||
<?= $ogData['title'] ?>
|
||||
</a>
|
||||
</h3>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($ogData['description'])): ?>
|
||||
<p class="description"><?= $ogData['description'] ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<a class="link-block" href="<?= $ogData['url'] ?>" target="_blank"></a>
|
||||
</div>
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
</div>
|
||||
|
||||
<input type="checkbox" id="share-banner__desktop">
|
||||
<div class="modal--share"><?php snippet('modal-share') ?></div>
|
||||
<?php snippet('modal-share') ?>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -60,7 +60,6 @@
|
|||
<li><a href="#" target="_blank">Occupation</a></li>
|
||||
<li><a href="#" target="_blank">Colonialité</a></li>
|
||||
<li><a href="#" target="_blank">Forces armées</a></li>
|
||||
<li><a href="#" target="_blank">Mot-clé</a></li>
|
||||
<li><a href="#" target="_blank">Colonialité</a></li>
|
||||
|
||||
</ul>
|
||||
|
|
@ -115,12 +114,21 @@
|
|||
<h3 class="section__title">Impacts</h3>
|
||||
|
||||
<div class="card--impact" data-impact-type="media">
|
||||
<p class="type">Médiatique</p>
|
||||
|
||||
<p class="tag">Médiatique</p>
|
||||
<div class="content">
|
||||
<p>12 articles et reprises</p>
|
||||
<p>1.5M de vues cumulées</p>
|
||||
</div>
|
||||
<details class="open-graph__details">
|
||||
<summary><p class="summary-inner">Détails <span class="arrow-details"><?= svg('assets/icons/arrow-details.svg') ?></span><p></summary>
|
||||
<div class="open-graph__inner">
|
||||
<?php snippet('card-open-graph') ?>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<div class="card--impact" data-impact-type="judiciaire">
|
||||
<p class="type">Judiciaire</p>
|
||||
<p class="tag">Judiciaire</p>
|
||||
<p class="date">12 Dec 2025</p>
|
||||
<div class="content">
|
||||
<p >La justice israélienne déclare ouvrir une enquête sur “les circonstances de la mort de Nidal et Khaled Amirah”.
|
||||
|
|
@ -129,7 +137,7 @@
|
|||
</div>
|
||||
|
||||
<div class="card--impact" data-impact-type="judiciaire">
|
||||
<p class="type">Judiciaire</p>
|
||||
<p class="tag">Judiciaire</p>
|
||||
<p class="date">12 Dec 2025</p>
|
||||
<div class="content">
|
||||
<p >La justice israélienne déclare ouvrir une enquête sur “les circonstances de la mort de Nidal et Khaled Amirah”
|
||||
|
|
@ -139,7 +147,7 @@
|
|||
</div>
|
||||
|
||||
<div class="card--impact" data-impact-type="public">
|
||||
<p class="type">Judiciaire</p>
|
||||
<p class="tag">Judiciaire</p>
|
||||
<p class="date">12 Dec 2025</p>
|
||||
<div class="content">
|
||||
<p>Index présente une série d’enquêtes récentes au Festival du Réel 2025. <a class="see-more" href="#">Voir plus</a>
|
||||
|
|
@ -159,7 +167,7 @@
|
|||
<div class="content">
|
||||
<h4 class="title"><a href="/page-enquete" target="_blank">L’homicide de Nahel Merzouk</a></h4>
|
||||
<time datetime="2024-06-27">27 Jun 2024</time>
|
||||
<ul class="keywords keywords--small">
|
||||
<ul class="keywords">
|
||||
<li><a href="#" target="_blank">Occupation</a></li>
|
||||
<li><a href="#" target="_blank">Colonialité</a></li>
|
||||
<li><a href="#" target="_blank">Forces armées</a></li>
|
||||
|
|
@ -176,7 +184,7 @@
|
|||
<div class="content">
|
||||
<h4 class="title"><a href="/page-enquete" target="_blank">La mort par noyade de Jumaa al-Hasan</a></h4>
|
||||
<time datetime="2024-06-27">27 Jun 2024</time>
|
||||
<ul class="keywords keywords--small">
|
||||
<ul class="keywords">
|
||||
<li><a href="#" target="_blank">Occupation</a></li>
|
||||
<li><a href="#" target="_blank">Colonialité</a></li>
|
||||
<li><a href="#" target="_blank">Forces armées</a></li>
|
||||
|
|
@ -193,7 +201,7 @@
|
|||
<div class="content">
|
||||
<h4 class="title"><a href="/page-enquete" target="_blank">Trois morts a Saint-Louis, Kanaky/Nouvelle-Caledonie</a></h4>
|
||||
<time datetime="2024-06-27">27 Jun 2024</time>
|
||||
<ul class="keywords keywords--small">
|
||||
<ul class="keywords">
|
||||
<li><a href="#" target="_blank">Occupation</a></li>
|
||||
<li><a href="#" target="_blank">Colonialité</a></li>
|
||||
<li><a href="#" target="_blank">Forces armées</a></li>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue