Looking to hire Laravel developers? Try LaraJobs

laravel-ad-director maintained by yaroslawww

Description
Package to help you add advertising to your site.
Last update
2023/08/06 13:01 (dev-master)
License
Downloads
62
Tags

Comments
comments powered by Disqus

Laravel advertising manager.

Packagist License Packagist Version Total Downloads Build Status Code Coverage Scrutinizer Code Quality

Package to help you add advertising to your site.

Installation

Install the package via composer:

composer require yaroslawww/laravel-ad-director

Optionally you can publish the config file with:

php artisan vendor:publish --provider="AdDirector\ServiceProvider" --tag="config"

Supported services

Usage

If you use Google Publisher Tags, and use repeated sizes - you can easily configure global sizes with size mapping in any service provider - as GPT is singleton.

use AdDirector\Facades\AdDirector;
use AdDirector\GPT\SizeMap;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        AdDirector::gpt()
        // Add size with mapping example
        ::addSize('leaderboard', new \AdDirector\GPT\Size(
            // Allowed sizes
            [[728, 90], [320, 50]],
            // Responsive size map
            (new SizeMap())
                          // Tablet
                          ->addSize([1024, 768], [728, 90])
                          ->addSize([980, 690], [728, 90])
                          // Desktop
                          ->addSize([1050, 200], [728, 90])
                          // Mobile
                          ->addSize([640, 480], [320, 50])
                          // Any size
                          ->addSize([0, 0], [320, 50])
        ))
        // Add static size without responsive
        ::addSize('medium_rectangle', new \AdDirector\GPT\Size([300, 250]));
    }
}

On page controller you can configure set of advert locations.

use AdDirector\Facades\AdDirector;
use AdDirector\GPT\Slot;

class FrontpageController extends Controller
{
    public function __invoke()
    {
        AdDirector::gpt()
                  ->addLocation(Slot::make(
                      '/1234567/FOO_Leaderboard',
                      // Size name from global config
                      'leaderboard',
                      // Optional, if not set will be generated automatically
                      'div-gpt-ad-1234567890001-0'
                      // Location identifier, if not set will be used slot's adUnitPath
                  )
                  // Set targeting
                  ->addTarget('foo', 'bar')
                  ->addTarget('baz', ['foo', 'bar'])
             , 'header-ads')
                  
                  ->addLocation(Slot::make(
                      '/1234567/FOO_Medium',
                      'medium_rectangle',
                  ), 'medium-ads')
                  
                  ->addLocation(Slot::make(
                      '/1234567/BAR_Leaderboard',
                     // Manually set custom size
                     new \AdDirector\GPT\Size(
                         [[728, 90], [320, 50]],
                         (new SizeMap())
                            ->addSize([1024, 768], [728, 90])
                            ->addSize([640, 480], [320, 50])
                            ->addSize([0, 0], [320, 50])
                     ),
                  ), 'footer-ads');

        return view('frontpage');
    }
}

Now there time to add scripts to template

<head>
    {!! \AdDirector\Facades\AdDirector::configurationScript() !!}
</head>
<body>
    <div id="header">
        {!! \AdDirector\Facades\AdDirector::adLocation('header-ads') !!}
    </div>
    <div id="content">
        <div>Content</div>
        <div>
            {!! \AdDirector\Facades\AdDirector::adLocation('medium-ads-ads') !!}
        </div>
        <div>Content</div>
    </div>
    <div id="footer">   
        {!! \AdDirector\Facades\AdDirector::adLocation('footer-ads') !!}
    </div>
    <script>
        {{-- There possible to add any js confitions, timeout, etc.. --}}
        {!! \AdDirector\Facades\AdDirector::displayScript() !!}
    </script>
</body>
</html>

Credits

  • Think Studio