linkuha / yii2-banner-resolver
基于地区、概率和查询参数的横幅解析器。
dev-master
2018-09-16 15:49 UTC
Requires
- php: ^7.0
- bower-asset/jquery.inputmask: ^4.0
- yiisoft/yii2: >=2.0.14
Requires (Dev)
- phpunit/phpunit: 7.*
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