linkuha/yii2-banner-resolver

基于地区、概率和查询参数的横幅解析器。

安装: 1

依赖关系: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:yii2-extension

dev-master 2018-09-16 15:49 UTC

This package is auto-updated.

Last update: 2024-09-17 09:35:38 UTC


README

横幅解析器组件

这是用于解析横幅适用于用户查询参数、地区(例如,通过IP地理定位)和百分比概率的Yii2组件。您可以配置自己的解析内容规则。

横幅可以是任何字符串、URL或HTML代码。

要安装,需要运行以下命令(对于测试功能支持,请勿使用--no-dev

composer require linkuha/yii2-banner-resolver

测试平台
PHP 7.2.0
Yii 2.0.14
Composer版本 1.7.1
PHPUnit 7.3.5

规则类型

  • 地区(2位符号的国家代码,您可以从任何IP地理定位模块获取代码,例如,如果您有)
$RU = Yii::$app->geoip->lookupLocation('37.194.xxx.xxx')->countryCode;
  • 百分比(选择此规则的概率。 不能 包含子规则,因为其逻辑)
  • 参数(您可以发送任何数组,例如请求参数数组。解析器将返回与参数匹配的规则中的横幅)

在config目录中创建文件banners.php。并将配置添加到您的'components' => [...]部分,例如

$banners = require __DIR__ . '/banners.php';
...
'components' => [
    ...,
    'banners' => $banners,
]

配置banners.php可能包含具有关联数组子键的层次结构。示例

<?php
return [
    'class' => linkuha\BannerResolver\BannerResolver::class,
    'rules' => [
        1 => [
            'type' => 'region',
            'value' => 'RU',
            'children' => [
                1 => [
                    'type' => 'param',
                    'key' => 'test',
                    'value' => '1',
                    'return' => 'banner3.jpg'
                ],
                2 => [
                    'type' => 'percent',
                    'value' => '70',
                    'return' => 'banner4.jpg'
                ],
                3 => [
                    'type' => 'percent',
                    'value' => '30',
                    'return' => 'banner5.jpg'
                ]
            ],
        ],
        2 => [
            'type' => 'percent',
            'value' => '100',
            'return' => 'banner6.jpg'
        ]
    ],
];

因此,最终使用

$code = Yii::$app->geoip->lookupLocation('37.194.xxx.xxx')->countryCode;
$bannersComp = Yii::$app->banners;
$bannerUrl = $bannersComp->resolveBanner($query, $code)->getUrl(),

来运行测试

vendor/bin/phpunit