cherrypulp/laravel-datalayer

1.0.5 2019-10-04 09:43 UTC

This package is auto-updated.

Last update: 2024-09-25 12:19:59 UTC


README

Build Status styleci Scrutinizer Code Quality SensioLabsInsight Coverage Status

Packagist Packagist Packagist

包描述:生成谷歌DataLayer脚本的Laravel包

安装

通过Composer安装

composer require cherrypulp/laravel-datalayer

注册您的Google ID

在您的.env文件末尾添加此代码`GOOGLE_ID=YOUR_GOOGLE_ID`

注册服务提供者

注意!如果您使用laravel>=5.5并具有包自动发现功能,则此步骤和下一步是可选的。

将服务提供者添加到config/app.php中的providers部分

Cherrypulp\DataLayer\ServiceProvider::class,

注册外观

在config/app.php中的aliases部分注册包外观

'DataLayer' => Cherrypulp\DataLayer\Facades\DataLayer::class,

用法

在您的控制器中

在数据层中推送一个值

DataLayer::push('foo', 'bar');

在数据层中推送一个数据数组

DataLayer::pushArray([
    'user_name' => 'John Doe',
    'age' => '42',
    'country' => 'Belgium',
]);

不要犹豫,检查方法的原型以查看所有可能的选项

在您的视图中

在视图中发布数据层

只需在您的应用程序布局中调用此方法,在关闭HEAD标签之前。

DataLayer::publish();

它将在布局中打印整个HTML代码

<script>
    dataLayer = dataLayer || [];
</script>

<script>
    dataLayer.push({foo:'bar',user_name:'John Doe',age:42,country:'Belgium'});
</script>

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//#/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','YOUR_GOOGLE_ID');</script>
<!-- End Google Tag Manager -->

不要忘记在BODY标签之后立即调用DataLayer::noScript()

DataLayer::noScript();

它将打印以下内容

<noscript><iframe src="//#/ns.html?id=YOUR_GOOGLE_ID"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>

您可以使用一个可选的数组来选择是否不初始化全局JS对象或/和谷歌的GTM脚本

DataLayer::publish(['init' => false, 'script' => false]);

它将只打印以下内容

<script>
    dataLayer.push({foo:'bar',user_name:'John Doe',age:42,country:'Belgium'});
</script>

每次调用DataLayer::publish()方法后,数据层都会重置。

其他方法

从会话中加载数据

DataLayer::load();

将数据保存到会话中

DataLayer::save();

清除会话中的数据

DataLayer::clear();

获取数组数据

DataLayer::getData();

在视图中打印全局JS对象

DataLayer::init();

它将在HTML中打印以下内容

<script>
    window.dataLayer = window.dataLayer || [];
</script>

在视图中打印谷歌的GTM脚本

$google_id参数是可选的。如果省略,它将使用您的.env文件中设置的Google ID

DataLayer::script([$google_id = null]);
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//#/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','YOUR_GOOGLE_ID');</script>
<!-- End Google Tag Manager -->

此外,不要忘记添加以下no-script标签

DataLayer::noScript([$google_id = null]);
<noscript><iframe src="//#/ns.html?id=YOUR_GOOGLE_ID"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>

显示数据层的内容(调试目的)

DataLayer::dd();

安全

如果您发现任何与安全相关的问题,请通过anthony@cherrypulp.com发送电子邮件,而不是使用问题跟踪器。

鸣谢

另请参阅