pixelant/pxa-site-choice-recommendation

根据用户位置和语言建议网站的本地化版本。

v2.1.0 2021-03-24 12:26 UTC

This package is auto-updated.

Last update: 2024-09-24 20:42:45 UTC


README

它做什么?

根据用户位置和语言建议网站的本地化版本。它将在页面顶部显示一个栏,用户可以选择网站语言。选择框选项将根据用户位置和接受的语言计算的优先级排序。

注意:要基于用户位置获取选项,需要在单独的扩展中创建一个EventListner。

如何安装它

就像常规扩展一样,您需要执行几个步骤。

  1. Composer安装 composer require pixelant/pxa-site-choice-recommendation
  2. 转到扩展管理器安装扩展。
  3. 包含TypoScript。有两种包含方式
    • 站点选择推荐 - 扩展正常工作所需默认配置
    • 站点选择JS和CSS资源 - 将包含Js和Css库

扩展插件

扩展有两个插件

  1. 选择栏扩展 - 通过Ajax加载,向用户推荐更改站点版本。不能添加到页面中。
  2. 站点选择推荐闪存页面 - 将其用作页面内容,以向用户显示所有可用选项。只需选择相应的站点选择配置以显示其选项。

如何创建站点选择配置

创建新记录“站点选择配置”。它可以在任何存储文件夹中创建。“站点选择配置”标签:主 "常规"标签

  • 名称 - 任意您想要的
  • 连接到站点 - 选择 应该出现栏的根页面
  • 最大项目数 - 栏中选择框中的最大项目数
  • 闪存页面链接 - 每个根页面的闪存页面链接。每个根页面可能有自己的闪存页面。

"选择"标签包括栏和闪存页面中可用的站点选择。每个站点选择都需要以下配置字段

  • 标题 - 选择标题。 它是文本区域,因为标题可能有 不同的版本(本地化)。您可以在新行中指定不同的本地化版本,格式为“标题文本|区域”
Default title
Swedish title|sv_SE
Ukrainian title|uk_UA
  • 标志 - 选择框和闪存页面中显示的标志图标
  • 选择国家 - 选择国家。此字段代表ISO代码(例如,"us"代表美国)。此代码将用于检查选择是否与用户IP匹配。ISO代码
  • 选择语言 - 从列表中选择语言。此字段代表简短的ISO代码(例如,"en"代表英语)。此代码将用于检查用户语言。
  • 链接 - 如果选择的目标是外部URL
  • 语言层 - 如果选择应导向网站语言层链接需要为空,如果使用语言层。

预期结果

包含TypoScript后,将“站点选择配置”连接到根页面,您应该得到一个带有根据位置提出的最佳匹配国家/地区的建议栏。注意:如果您的位置/语言已经访问了与您位置/语言最匹配的网站本地化版本,则栏将保持不可见。

启用基于用户位置的选择

扩展具有“内置”功能,可以根据用户位置建议选项。

要启用它,您需要在单独的扩展中创建一个EventListner,并从MaxMind下载GeoLite2-Country.mmdb,可在以下网址找到:https://www.maxmind.com

示例

1. 注册事件监听器

以下是如何启用IPDetecor的示例。

在文件your_extension_name/Configuration/Services.yaml中添加以下内容:

  VendorName\YourExtensionName\EventListener\IpDetectorFactoryEvent:
    tags:
      - name: event.listener
        identifier: 'yourExtensionNameIpDetectorFactoryEvent'
        event: Pixelant\PxaSiteChoiceRecommendation\Detector\Event\AddDetectorFactoryEvent
        after: acceptLanguageDetectorFactoryEvent

2. 事件监听器类

创建文件your_extension_name/Classes/EventListener/IpDetectorFactoryEvent.php并添加以下内容:

<?php

declare(strict_types=1);

namespace VendorName\YourExtensionName\EventListener;

use Pixelant\PxaSiteChoiceRecommendation\Detector\Event\AddDetectorFactoryEvent;
use Pixelant\PxaSiteChoiceRecommendation\Detector\Factory\IpDetectorFactory;

/**
 * Adds IpDetector to Detectors.
 */
final class IpDetectorFactoryEvent
{
    public function __invoke(AddDetectorFactoryEvent $event)
    {
        // Add IP Detector.
        $event->addDetectorFactoryCreators(IpDetectorFactory::class);
        // Set path to GeoLite2-Country.mmdb.
        $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['pxa_site_choice_recommendation']['countryDbPath']
            = 'EXT:your_extension_name/Resources/Private/GeoIp2/GeoLite2-Country.mmdb';
    }
}

3. GeoLite2-Country 数据库

从MaxMind下载GeoLite2-Country.mmdb并将其保存到文件夹:your_extension_name/Resources/Private/GeoIp2/GeoLite2-Country.mmdb