laravel-googletagmanager, 在 Laravel 应用程序中,轻松设置并将数据发送到Google标记管理器

分享于 

11分钟阅读

GitHub

  繁體 雙語
Easily setup and send data to Google Tag Manager in Laravel apps
  • 源代码名称:laravel-googletagmanager
  • 源代码网址:http://www.github.com/spatie/laravel-googletagmanager
  • laravel-googletagmanager源代码文档
  • laravel-googletagmanager源代码下载
  • Git URL:
    git://www.github.com/spatie/laravel-googletagmanager.git
    Git Clone代码到本地:
    git clone http://www.github.com/spatie/laravel-googletagmanager
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/spatie/laravel-googletagmanager
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    用于 Laravel的Google标记管理器集成

    Latest Version on PackagistSoftware LicenseQuality ScoreSensioLabsInsightTotal Downloads

    为你的5应用程序提供易于使用的 Google标记管理器实现。

    Laravel 4版本:spatie/laravel4-googletagmanager

    Spatie是比利时Antwerp的网页设计机构。 你将在我们的网站上找到我们所有开源项目的概述。

    Google标签管理器

    Google标签管理器允许你使用 AdWords,Google Analytics,等来管理跟踪和营销优化。 不编辑站点代码。 使用Google标记管理器的一种方法是在页面加载和自定义事件之后通过javascript中的dataLayer 变量发送数据。 这个包使得管理数据层变得容易。

    有关你希望发送数据层的具体示例,请查看manager指南的Google。

    你还需要一个谷歌标签管理器 ID,你可以通过注册,并为你的网站建立一个帐号。

    安装

    你可以通过Composer安装软件包:

    composer require spatie/laravel-googletagmanager

    在 Laravel 5.5和中,该软件包将自动为服务提供者和外部设置 register。

    通过注册软件包服务提供商和 facade,在 L5.4 或者 below 中启动:

    // config/app.php'providers'=> [...SpatieGoogleTagManagerGoogleTagManagerServiceProvider::class,],'aliases'=> [...'GoogleTagManager'=>SpatieGoogleTagManagerGoogleTagManagerFacade::class,],

    外观是可选的,但是本指南的其余部分假定你使用的是 facade。

    接下来,发布配置文件:

    php artisan vendor:publish --provider="SpatieGoogleTagManagerGoogleTagManagerServiceProvider" --tag="config"

    可以选择发布视图文件。 除非有必要,否则建议使用否则你的视图将在以后的包版本中保持 up-to-date。

    php artisan vendor:publish --provider="SpatieGoogleTagManagerGoogleTagManagerServiceProvider" --tag="views"

    如果你计划使用闪存功能,则必须在StartSession中间件之后安装服务器:

    // app/Http/Kernel.phpprotected$middleware= [...IlluminateSessionMiddlewareStartSession::class,SpatieGoogleTagManagerGoogleTagManagerMiddleware::class,...];

    配置

    配置文件相当简单。

    return [/* * The Google Tag Manager id, should be a code that looks something like"gtm-xxxx".*/'id'=>'',/* * Enable or disable script rendering. Useful for local development.*/'enabled'=>true,/* * If you want to use some macro's you 'll probably store them * in a dedicated file. You can optionally define the path * to that file here and we will load it for you.*/'macroPath'=>'',];

    开发期间,你不希望将数据发送到生产经理帐户的标记,这是 enabled 在。

    设置示例:

    return ['id'=>'GTM-XXXXXX','enabled'=> env('APP_ENV') ==='production','macroPath => app_path('Services/GoogleTagManager/Macros.php'),];

    用法

    基本示例

    首先,你需要包含管理员的Google标签脚本。 google推荐的文档在正文标记之后就会这么做。

    
    {{-- layout.blade.php --}}
    
    
    <html>
    
    
     {{--.. . --}}
    
    
     <body>
    
    
     @include('googletagmanager::script')
    
    
     {{--.. . --}}
    
    
     </body>
    
    
    </html>
    
    
    
    

    你的基本dataLayer也将在这里呈现。 若要添加数据,请使用 set() 函数。

    // HomeController.phppublicfunctionindex(){GoogleTagManager::set('pageType', 'productDetail');return view('home');}

    这将呈现:

    <html>
     <!--.. . --> <body>
     <script>dataLayer = [{"pageType":"productDetail"}];</script>
     <script>/* Google Tag Manager's script */</script>
     <!--.. . --> </body>
    </html>
    为下一个请求提供闪存数据

    包还可以设置数据以在下次请求时呈现。 这对于在内部重定向后设置数据非常有用。

    // ContactController.phppublicfunctiongetContact(){GoogleTagManager::set('pageType', 'contact');return view('contact');}publicfunctionpostContact(){// Do contact form stuff...GoogleTagManager::flash('formResponse', 'success');return redirect()->action('ContactController@getContact');}

    表单提交后,将在联系人页上分析以下 dataLayer:

    <html>
     <!--.. . --> <body>
     <script>dataLayer = [{"pageType":"contact","formResponse":"success"}];</script>
     <script>/* Google Tag Manager's script */</script>
     <!--.. . --> </body>
    </html>

    其他简单方法

    // Retrieve your Google Tag Manager id$id=GoogleTagManager::id(); // GTM-XXXXXX// Check whether script rendering is enabled$enabled=GoogleTagManager::isEnabled(); // true|false// Enable and disable script renderingGoogleTagManager::enable();GoogleTagManager::disable();// Add data to the data layer (automatically renders right before the tag manager script). Setting new values merges them with the previous ones. Set also supports dot notation.GoogleTagManager::set(['foo'=>'bar']);GoogleTagManager::set('baz', ['ho'=>'dor']);GoogleTagManager::set('baz.ho', 'doorrrrr');// [// 'foo' => 'bar',// 'baz' => ['ho' => 'doorrrrr']// ]

    转储

    GoogleTagManager还有一个 dump() 函数,可以将数组快速转换为json对象。 在以后将数据发送到要使用的视图时,这很有用。

    
    <a data-gtm-product='{!! GoogleTagManager::dump($article->toArray())!!}' data-gtm-click>Product</a>
    
    
    
    
    $('[data-gtm-click]').on('click', function() {
     dataLayer.push({
     'event':'productClick',
     'ecommerce': {
     'click': {
     'products':$(this).data('gtm-product')
     }
     }
     'eventCallback':function() {
     document.location=$(this).attr('href');
     }
     });
    });

    DataLayer

    内部GoogleTagManager使用DataLayer类来保存和呈现数据。 这个类在没有其他定制实现的情况下是完全可用的。 DataLayer是一个具有dot支持并且易于呈现为json的glorified array。

    $dataLayer=newSpatieGoogleTagManagerDataLayer();$dataLayer->set('ecommerce.click.products', $products->toJson());echo$dataLayer->toJson(); // {"ecommerce":{"click":{"products":"..."}}}

    如果你希望完全访问GoogleTagManager实例的数据层,请调用 getDataLayer() 函数。

    $dataLayer=GoogleTagManager::getDataLayer();

    Macroable

    将标签添加到页面可能会成为重复的过程。 因为该软件包不应该对你的标签应该看起来像是一样的,因这里GoogleTagManager是 macroable。

    GoogleTagManager::macro('impression', function ($product) {GoogleTagManager::set('ecommerce', ['currencyCode'=>'EUR','detail'=> ['products'=> [ $product->getGoogleTagManagerData() ] ] ]);});GoogleTagManager::impression($product);

    在配置中,可以选择设置包含宏的文件的路径。

    变更日志

    有关最近更改的信息,请参阅日志记录程序

    请参见为细节提供帮助。

    安全性

    如果发现任何相关的安全问题,请电子邮件 freek@spatie.be,而不是使用问题跟踪程序。

    Postcardware

    你可以使用这个包,但如果它使你的生产环境,我们非常感谢你寄来的明信片。

    我们的地址为:Spatie,Samberstraat 69,2060,比利时。

    我们在公司网站上发布所有收到的明信片

    Credits

    支持我们

    Spatie是位于比利时Antwerp的网页设计机构。 你将在我们的网站上找到我们所有开源项目的概述。

    你的业务取决于我们的贡献? 请联系我们,并支持我们的 Patreon服务。 所有的承诺都将致力于分配员工的维护和新的awesome。

    许可证

    MIT许可证( MIT ) 有关详细信息,请参阅许可证文件


    数据  MAN  SET  Laravel  发送  is_cn_en  
    相关文章