如何在动态段落中放置脚本

时间:2018-10-23 11:22:07

标签: javascript laravel adsense

我有 google adsense 脚本,可以将其放置在页面上的不同位置。

我也有正文文本,其中每个post描述在其中,我想知道如何动态地添加AdSense脚本 进入我的帖子正文? ( Google建议将其放在第二段之后。)

我正在使用laravel,这就是我在每篇帖子中得到自己身体部位的方式

{!! $post->body !!}

Google adsense代码示例:

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-6565454545454774"
  data-ad-slot="548855465655"
  data-ad-format="auto"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

有什么主意吗?

更新

single post function

//single post
public function single($slug)
{
        $post = Post::where('slug', $slug)->where('publish', '=', 'y')->firstOrFail();

        $post->addPageView();

        $previous = Post::where('slug', '<', $post->slug)->max('slug');

        $next = Post::where('slug', '>', $post->slug)->min('slug');

        $products = Product::all()->where('status', 'enable')->random(3);

        $categories = PostCategory::all();

        $settings = Setting::all();

        $author = AuthorInfo::where('user_id', $post->user->id)->first();

        return view('front.singlepost', compact('post', 'previous', 'next', 'products','categories', 'settings','author'));
}

1 个答案:

答案 0 :(得分:1)

我还没有机会进行测试,但是您可以创建一个accessor(在这种情况下为getBodyWithAdsenseAttribute),它将创建一个更改后的正文内容并包含adsense内容在第二段之后:

在您的Post模型文件中:

public function getBodyWithAdsenseAttribute()
{
    $javascript = '<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    <ins class="adsbygoogle"
      style="display:block"
      data-ad-client="ca-pub-6565454545454774"
      data-ad-slot="548855465655"
      data-ad-format="auto"
      data-full-width-responsive="true"></ins>
    <script>
    (adsbygoogle = window.adsbygoogle || []).push({});
    </script>';

    $paragraphs  = explode('</p>', $this->body); // Explode current body field
    $new_content = ''; // Variable for new content
    $count       = 1; // Set count for adding new content

    foreach ($paragraphs as $paragraph) {
        $new_content .= $paragraph;

        if ($count == 2) {
            $new_content .= $javascript;
        }

        $count++;
    }

    return $new_content;
}

在这里,我们将所有adsense数据存储在$javascript变量中。

然后我们通过关闭explode()标签body </p>内容,从内容创建一个数组。

使用foreach(),我们重新创建body内容,计数是否在</p>标记的 2 实例之后。如果是这样,我们将$javascript内容添加到新内容中。

最后,我们返回所有内容。可以在以下刀片服务器中使用

{!! $post->bodyWithAdsense !!}

注意:如果只有一个段落或根本没有正文,则需要更多代码来回退。