web-dev-qa-db-fra.com

Quelle est la bonne façon d'ajouter du code après le début de la balise body?

Ainsi, je viens d’ajouter récemment le SDK Javascript de Facebook à mon site pour pouvoir activer un bouton "J'aime" sur mes pages.

Facebook recommande d’ajouter cela juste après l’ouverture <body> tag. La seule chose que je pouvais trouver pour faire cela était de modifier le index.php fichier de mon modèle.

Le danger ici est que mon code sera effacé si le modèle est mis à jour. Ce n'est pas une grosse affaire, mais il serait beaucoup plus facile de le faire correctement pour le futur.

Alors, quelle est la meilleure façon de faire cela?

2
nizz0k

En complément de la réponse de @ veritas399, vous pouvez également utiliser une extension tierce telle que EasyScript ou similaire pour insérer le code dans votre page Web sans vous soucier des modèles futurs ou des mises à jour écrasant votre code.

Facebook peut recommander l'ajout de ce droit après l'ouverture <body> tag mais (ce n'est peut-être pas le meilleur conseil du point de vue de la performance) et n'est probablement pas essentiel.

2
Neil Robertson

Si vous ne voulez pas éditer le index.php fichier, alors je vous conseillerais d’utiliser un plugin et d’utiliser JApplication pour obtenir et définir le corps.

Vous pouvez ensuite utiliser les éléments suivants dans votre plugin:

public function onAfterRender()
{
    $app = JFactory::getApplication();

    if ($app->isSite())
    {
        $buffer = $app->getBody();

        $insert = '<div>YOUR HTML CODE TO INSERT</div>';

        $buffer = preg_replace('/<body[^>]+>\K/i', $insert, $buffer);

        // Use the replaced HTML body.
        $app->setBody($buffer);
    }
}

L'expression régulière trouve la balise d'ouverture body et tous les attributs que vous pouvez avoir à l'intérieur, puis "oublie la chaîne correspondante" avec le \K métachatactère de sorte que le $insert texte est ajouté immédiatement après la balise body d’ouverture (aucun texte ne sera supprimé).

2
Lodder

Votre modèle est-il basé sur l'un des frameworks populaires? (Gantry 5 de RocketTheme, Warp de YooTheme, T3 de JoomlaArt, etc.) Si tel est le cas, ce fournisseur de structure devrait avoir documenté comment et où effectuer les modifications qui survivront aux mises à niveau. Par exemple, on peut ajouter code personnalisé aux modèles de Gantry 5 dans les balises head et body du panneau d'administration.

1
veritas399

Pour ajouter à la réponse de @Neil Robertson - il y a des tonnes de plugins/extensions qui implémentent Facebook aiment/partagent et autres Intégrations de sites sociaux - ce qui pourrait constituer une meilleure alternative, dans la mesure où votre exigence actuelle consiste simplement à ajouter des boutons similaires à FB .

Jetez un coup d'œil à JED:

En outre, certains modèles offrent de telles fonctionnalités et tout ce que vous avez à faire est d’ajouter votre propre ID d’application FB. Assurez-vous donc que votre modèle contient des informations sur cette possibilité.

1
FFrewin

Ou, alternativement, au lieu d'installer un tas de choses, vous pouvez le placer où vous le souhaitez, puis cliquer avec le bouton droit de la souris et tout sélectionner, le copier et le coller dans un fichier wordpad, enregistrez-le et nommez-le SITE-index-php, puis juste copier ce fichier à tout moment il y a une mise à jour. Prend comme 1 minute et rien d’autre à installer ou déconner.

0
Mythic

Le modèle serait généralement l'endroit pour le faire. Vous pouvez ajouter le code à un fichier facebook.php séparé dans le répertoire de votre modèle et l’ajouter au fichier index.php via un php:

<body>
<?php include('facebook.php'); ?>
...
0
YLLW