vxm / yii2-mobile-first
支持为 Yii2 应用程序实现移动优先原则。
Requires
- php: ^7.1
- mobiledetect/mobiledetectlib: ^2.8
- yiisoft/yii2: ~2.0.13
This package is auto-updated.
Last update: 2024-08-29 05:22:45 UTC
README
关于它
一个扩展,提供了一种简单的方式来基于 Mobile Detect 包装器实现 Yii2 应用程序的移动优先原则。
要求
安装
使用 Composer 安装 Yii2 Mobile First
composer require vxm/yii2-mobile-first
用法
此扩展提供两个功能
- 自适应过滤器 当检测到用户使用手机或平板电脑时,将用户重定向到手机站点。
- 视图渲染行为 支持您根据设备类型(手机、平板电脑、iOS、Android 等)渲染视图文件。
自适应过滤器
要使用此过滤器,只需将其添加到应用程序配置文件中
[ 'id' => 'test', 'basePath' => __DIR__, 'vendorPath' => dirname(__DIR__) . '/vendor', 'components' => [ ], 'as adaptiveFilter' => [ 'class' => 'vxm\mobileFirst\AdaptiveFilter', 'redirectUrl' => ['https://m.yoursite.com', 'getParam1' => '1'] ] ]
如果用户通过 URL yoursite.com/product?sort=price
访问您的站点,并且您想保留重定向到手机站点时 /product?sort=price
的 URL 路径: m.yoursite.com/product?sort=price
,您只需进行以下配置:
[ 'id' => 'test', 'basePath' => __DIR__, 'vendorPath' => dirname(__DIR__) . '/vendor', 'components' => [ ], 'as adaptiveFilter' => [ 'class' => 'vxm\mobileFirst\AdaptiveFilter', 'redirectUrl' => ['https://m.yoursite.com', 'getParam1' => '1'], 'keepUrlPath' => true ] ]
视图渲染行为
这是一种在不触摸原始视图渲染代码的情况下替换一组视图的方法。您可以使用它根据用户设备系统地更改应用程序的外观和感觉。例如,当在 SiteController 中调用 $this->render('about')
时,您将渲染视图文件 @app/views/site/about.php
,如果用户使用手机设备,则将渲染视图文件 @app/views/site/mobile/about.php
。
要使用它,您需要在配置文件中将它附加到视图应用程序组件
[ 'id' => 'test', 'basePath' => __DIR__, 'vendorPath' => dirname(__DIR__) . '/vendor', 'components' => [ 'view' => [ 'as mobileFirst' => [ 'class' => 'vxm\mobileFirst\ViewRenderBehavior', 'dirMap' => [ 'mobile' => 'mobile', 'tablet' => 'tablet' ] ] ] ] ]
dirMap
属性控制视图文件应如何根据用户设备进行替换。它接受一个键值对数组,其中键是设备类型,值是对应的视图子目录。替换基于用户设备:如果用户设备与 dirMap
数组中的任何键匹配,则将添加带有相应子目录值的视图路径。使用上面的配置示例,当用户使用 mobile
设备,因为它与键 mobile
匹配时,将添加 mobile
路径,例如 @app/views/site/mobile/about.php
。当然,您可以更改值或添加更多情况。
[ 'id' => 'test', 'basePath' => __DIR__, 'vendorPath' => dirname(__DIR__) . '/vendor', 'components' => [ 'view' => [ 'as mobileFirst' => [ 'class' => 'vxm\mobileFirst\ViewRenderBehavior', 'dirMap' => [ 'mobile' => 'mobile-tablet', 'tablet' => 'mobile-tablet', 'ios' => 'ios', 'android' => 'android' ] ] ] ] ]
如果用户使用手机或平板电脑设备,将添加 mobile-tablet
路径。