如何在动态段落中放置脚本
How to place script in dynamic paragraph
我有 google adsense 脚本,我可以将它放在我页面上的不同位置。
我还有 body 文本,其中每个 post
的 描述 是,我想知道如何将 adsense 脚本 动态地 添加到我的 posts body 文本中? (Google建议放在第二段之后)。
我正在使用 laravel
,这就是我如何获得每个 post
的 body 部分
{!! $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'));
}
我还没有机会对此进行测试,但是您可以创建一个 accessor
(在本例中为 getBodyWithAdsenseAttribute
),这将创建正文内容的更改版本并包括第 2 段后的 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
变量中。
然后我们通过结束 </p>
标记 explode()
body
内容,从内容创建一个数组。
使用 foreach()
,我们重新创建 body
内容,计算它是否在 </p>
的 2nd 实例之后标签。如果是这样,我们将 $javascript
内容添加到新内容中。
最后,我们return全部内容。这可以在 blade 中使用,如下所示
{!! $post->bodyWithAdsense !!}
注意:如果只有一个段落,或者根本没有正文内容,将需要更多代码来回退。
我有 google adsense 脚本,我可以将它放在我页面上的不同位置。
我还有 body 文本,其中每个 post
的 描述 是,我想知道如何将 adsense 脚本 动态地 添加到我的 posts body 文本中? (Google建议放在第二段之后)。
我正在使用 laravel
,这就是我如何获得每个 post
{!! $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'));
}
我还没有机会对此进行测试,但是您可以创建一个 accessor
(在本例中为 getBodyWithAdsenseAttribute
),这将创建正文内容的更改版本并包括第 2 段后的 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
变量中。
然后我们通过结束 </p>
标记 explode()
body
内容,从内容创建一个数组。
使用 foreach()
,我们重新创建 body
内容,计算它是否在 </p>
的 2nd 实例之后标签。如果是这样,我们将 $javascript
内容添加到新内容中。
最后,我们return全部内容。这可以在 blade 中使用,如下所示
{!! $post->bodyWithAdsense !!}
注意:如果只有一个段落,或者根本没有正文内容,将需要更多代码来回退。