yaroslawww / nova-ad-director

Laravel nova 广告管理器,用于在网站上展示广告。

2.1.0 2023-08-06 11:06 UTC

This package is auto-updated.

Last update: 2024-09-06 13:42:00 UTC


README

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

Laravel nova 广告管理器,用于在网站上展示广告。

安装

您可以通过composer安装此包

composer require yaroslawww/nova-ad-director

# optional publish configs
php artisan vendor:publish --provider="NovaAdDirector\ServiceProvider" --tag="config"

# publish translations
php artisan vendor:publish --provider="NovaAdDirector\ServiceProvider" --tag="lang"

使用方法

  1. 该包仅支持预定义的大小。因此,开发者首先应指定"全局"大小
  2. 继承或添加到nova AdConfiguration资源
  3. 继承或添加到auth服务提供者AdConfigurationPolicy
  4. 如果应用程序使用配置文件且"creatable==false",则开发者需要手动创建新位置 php artisan nova-ad-director:ad-config:create <key-name> <location-name>
  5. 然后配置系统中的广告
use NovaAdDirector\Facades\NovaAdDirector;

class FrontpageController extends Controller
{
    public function __invoke()
    {
        NovaAdDirector::prepareAds([
            'header' => NovaAdDirector::fallbackKey('header', 'frontpage'),
            'medium-posts-list' => NovaAdDirector::fallbackKey('medium', 'list', 'frontpage'),
            'footer-v2' => NovaAdDirector::fallbackKey('footer', 'frontpage'),
        ]);

        return view('frontpage');
    }
}

键回退搜索流程

在多种情况下,使用相同的广告但针对特定页面上的特定广告等,是有好处的。解决方案是使用回退流程

每个键都可以从多个嵌套指针中计算得出,系统将在子键为空的情况下尝试找到父键。

例如,网站有多个页面和多个帖子。因此,不同的页面和帖子将搜索以下键

  • header:page:frontpage
  • header:page:contact-us
  • header:post:12
  • header:post:654

每个此键都将搜索回退

  • header:page:frontpage => header:page => header
  • header:page:contact-us => header:page => header
  • header:post:12 => header:post => header
  • header:post:654 => header:post => header

管理员可以在管理员界面中指定仅header配置,并在任何时刻添加一些特定的广告项,如header:page:contact-us以覆盖仅用于联系页面的广告,或header:post以仅在帖子中使用特定广告。

覆盖默认回退分隔符

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
       \NovaAdDirector\NovaAdDirector::setFallbackKeyConnector('/');
    }
}

鸣谢

  • Think Studio