Intégration d'une iframe Git dans un article HTML

Bonjour,
je n’arrive pas a intégrer dans un article le code issue du git spip.net pour un plugin

pourtant j’ai pu lire

Pour afficher une iframe de Git dans un article HTML, utilisez la balise <iframe> avec l’attribut src pointant vers l’URL du contenu Git, et définissez les attributs width et height pour contrôler sa taille. Par exemple : <iframe src="URL_GIT" width="800" height="600"></iframe>.

auriez vous une idée astuce pour pouvoir afficher le code issue du git.spip.net dans un article. (pas forcement en iframe)

merci beaucoup

Sous SPIP 4.4.8, par mesure de sécurité, les iframes sont masquées dans l’espace privé, sauf pour les domaines explicitement autorisés via une constante _IFRAME_SAFE_DOMAINS

1 « J'aime »

Merci pour le retour, mais toujours pas.

Dans config/mes_options.php :

<?php
// Domaines autorisés pour les iframes (sécurisé)
define('_IFRAME_SAFE_DOMAINS', [
    'youtube.com',
    'vimeo.com',
    // On ne peut pas mettre git.spip.net en iframe, donc on ne l’inclut pas
]);

// Dépôts Git SPIP autorisés pour récupération
define('_GIT_SAFE_REPOS', [
    'spip/spip.git',       // dépôt principal
    'spip/core.git'        // autre dépôt autorisé
]);

_IFRAME_SAFE_DOMAINS protège les iframe classiques.

_GIT_SAFE_REPOS servira pour le squelette Prism.js afin de limiter les fichiers Git affichés.

Afficher le contenu du fichier annuaire.html de `annuaire.html · master · spip-contrib-squelettes / escal · GitLab avec Prism.js pour la coloration, sans iframe.**


-* Préparer Prism.js

Dans le <head>

<!-- Prism CSS thème sombre -->
<link href="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism-tomorrow.css" rel="stylesheet" />

<!-- Prism JS -->
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-html.min.js"></script>

<!-- Prism plugin lignes -->
<link href="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.min.js"></script>

<!-- CSS optionnel pour scroll horizontal et responsive -->
<style>
pre.line-numbers {
    padding: 1em;
    overflow-x: auto;
    border-radius: 5px;
    background: #2d2d2d;
    font-size: 0.9em;
    line-height: 1.5em;
}
pre.line-numbers code {
    display: block;
}
@media (max-width: 768px) {
    pre.line-numbers {
        font-size: 0.8em;
    }
}
</style>

-* Dans squelettes/inclure_git_code.php :

<?php
if (!defined('_ECRIRE_INC_VERSION')) return;

// Fichier demandé
$fichier = _request('fichier');

if ($fichier) {
    // URL brute Git SPIP (raw/plain)
    $url_git = 'https://git.spip.net/' . str_replace('-/blob/', '-/raw/', $fichier);

    $contenu = @file_get_contents($url_git);

    if ($contenu === false) {
        $code = "Erreur : impossible de récupérer le fichier.";
    } else {
        $code = htmlspecialchars($contenu);
    }
} else {
    $code = "Aucun fichier spécifié.";
}

// Déterminer le langage Prism
$ext = pathinfo($fichier, PATHINFO_EXTENSION);
$lang_class = $ext === 'html' ? 'language-markup' : 'language-none';

// Affichage avec Prism.js + lignes
echo '<pre class="line-numbers"><code class="'.$lang_class.'">' . $code . '</code></pre>';

-* Dans l’article, j’ai mis

#INCLURE{fond=inclure_git_code,fichier=spip-contrib-squelettes/escal/-/blob/master/annuaire.html}

Résultat

  • Le code de annuaire.html ne s’affiche pas dans mon article.

Auriez vous une idée , une piste
Cordialement

Suivant le lapin j’arrive sur Sourcegraph et trop chelou la regexp : $p = preg_replace(',#.*$u,', '#', $p); je trouve non ? Ça doit pas beaucoup marcher ça dans oembed.

le contenu d’un article ne peut pas interperet les balises SPIP (et heureusement !). il te faut passer par un modèle…