silverstripers / continental-content
允许您为不同的大陆添加内容
Requires
- geoip2/geoip2: v2.6.0
- silverstripe/framework: ~3.1
This package is auto-updated.
Last update: 2023-12-04 23:47:38 UTC
README
这是一个 SilverStripe 模块,允许您拥有特定于位置的内容,并通过检查用户的位置来为用户提供这些内容。
安装
使用 composer 安装模块。
composer require silverstripers/continental-content dev-master
配置
在您的 SilverStripe 网站上安装模块后,您需要手动指定要装饰的数据对象,以便有不同的内容。
SiteTree:
extensions:
- ContinentalContent
您可以自由地装饰任何对象,在这个 YAML 中我正在装饰 SiteTree 对象,它是 SilverStripe 页面的基础对象。
设置位置
完成上述操作后,您可以设置您想要为其添加不同内容的地理位置。
ContinentalContent:
continents:
BC:
Country: CA
SubDivision: BC
AB:
Country: CA
SubDivision: AB
ON:
Country: CA
SubDivision: ON
如果您想为一系列位置使用内容,则可以通过它们进行分组。
ContinentalContent:
continents:
Europe:
Country:
- GB
- GE
- FR
NZ:
Country: NZ
AU:
Country: AU
在这个例子中,欧洲将用于 GB、GE、FR 国家。
如果您不想有多个字段
如果您有一些字段不希望为每个位置定制,您可以指定为配置
ContinentalContent:
exclude_field_names:
- SiteTree.Title
- URLSegment
上述操作从具有名为 URLSegment 的字段的任何数据对象中删除 URLSegment,但它仅从 SiteTree 中删除标题。
独立的 URL
如果您想为每个位置使用独立的 URL,例如:site.com/uk/home,site.com/nz/home 等,您可以通过另一个配置允许这样做。
ContinentalContent:
custom_urls: 'Y'
Web服务器不能读取访客的 IP?(高级定制)
有时这可能会发生,如果您使用多个负载均衡器,并且您的网站位于它们后面,并且您的负载均衡器不会传递最终客户端的 IP。在这种情况下,您可以设置一个表单并要求用户选择他们来自的位置。
ContinentalContent:
proxy_ip: '0.0.0.0'
设置您的 Web服务器始终获得的 IP。
在 Page_Controller 类中创建一个类似于以下功能的函数。
function LocationDetected(){
return !(ContinentalContent::IsViewingThroughProxy() && ContinentalContent::CurrentContinent() == CONTINENTAL_DEFAULT);
}
如果上述返回 true,则可以绘制一个位置选择器来选择访客的位置。
设置 IP 数据库
该模块仅支持 MaxMind,从网站配置上传 MaxMind City 数据库。
调试选项
有几种调试配置的选项。您可以通过传递三个 GET 变量
- FAKE_IP -- 模拟 IP 地址
- CLEAR_IP -- 从会话中清除 IP
- debug_location -- 在屏幕上显示位置的调试消息。