silverstripers/continental-content

此包已废弃且不再维护。没有建议的替代包。

允许您为不同的大陆添加内容

安装: 48

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 1

公开问题: 1

类型:silverstripe-module

1.0.1 2017-09-29 10:46 UTC

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 变量

  1. FAKE_IP -- 模拟 IP 地址
  2. CLEAR_IP -- 从会话中清除 IP
  3. debug_location -- 在屏幕上显示位置的调试消息。