ycloudyusa/yusaopeny_activity_finder

美国Y开放活动查找器

安装量: 32,102

依赖项: 3

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 24

语言:Vue

类型:Drupal模块


README

要求

此模块需要以下模块

  • openy_map(用于获取与位置相关的内容类型列表。)

此模块还需要以下之一来存储数据

  • 一个Solr服务器(最好是每个环境一个服务器或索引)。
  • 一个可以访问Daxko API的订阅。

推荐模块

活动查找器通常与同步器一起使用,以从外部源获取数据。

安装

活动查找器版本4是当前的主要版本。在9.2.10.0之前,分发需要^3.1 || ^4.0,允许您根据项目需求选择要使用的版本。

弃用

过时的实现不会立即删除,允许您更新项目并将迁移到新组件而不会破坏您的网站。它们将在下一个版本中标记为[已弃用]通知,并计划在未来版本中删除。

新项目

按照您通常安装贡献的Drupal模块的方式进行安装。有关更多信息,请参阅安装Drupal模块

新项目应启用

  • 活动查找器(openy_activity_finder

然后选择一个或两个前端

  • LB(布局构建器)活动查找器(lb_activity_finder
  • Open Y段落活动查找器(openy_prgf_activity_finder_4

最后启用以下数据存储之一

  • 搜索API Solr(search_api_solr
  • Daxko API v2集成(openy_daxko2

现有项目

您可以选择保留您使用的同一版本或更新到下一个版本。这取决于您项目的要求和定制。如果您有资源,我们建议更新到最新版本。

从3.x版本更新到4.x版本

活动查找器是一个复杂的功能,它连接了许多不同的组件,可能需要额外的步骤才能使其正常工作。以下列表概述了将活动查找器更新到版本4的主要步骤。

  • 使用composer命令更新代码库:composer require ycloudyusa/yusaopeny_activity_finder:"^4.0"
  • 运行数据库更新drush -y updb
    • 验证没有错误且更新顺利。
  • 安装新的“Open Y段落活动查找器”(openy_prgf_activity_finder_4):drush en openy_prgf_activity_finder_4
  • 创建或更新现有着陆页并包含活动查找器。
  • 添加活动查找器段落(替换已弃用的段落),配置它并保存页面。
    • 验证页面和活动查找器功能正常工作。
  • 之前版本的活动查找器使用了2个着陆页和2个段落类型 - 一个用于向导,另一个用于结果。找到并删除这些页面。
  • 卸载“OpenY段落活动查找器”(openy_prgf_activity_finder)。
  • 卸载“OpenY段落活动查找器搜索”(openy_paragraph_activity_finder_search)。

配置

设置Solr

为了安装Solr - 请查看Drupal.org上的文档:点击此处查看文档.

在启用上述模块后,您应该访问 /admin/config/search/search-api 并从Open Y Solr服务器设置中获取预配置的config.zip image

此配置应作为独立的核心安装到您的Solr服务器上。它应提取到solr核心的conf目录中

image

一旦完成 - 确保将core.properties文件中您的核心名称添加到Open Y的Solr服务器配置中 image

在/admin/config/search/search-api的下拉菜单中可以找到Solr服务器配置 image image

如果您喜欢drush配置,可以使用以下命令,只需将SOLR_CORE_IS_HERE替换为实际的核心名称即可

drush cset -y search_api.server.solr backend_config.connector_config.host 127.0.0.1 -y
drush cset -y search_api.server.solr backend_config.connector_config.core ${SOLR_CORE_IS_HERE} -y
drush search-api:reset-tracker
drush search-api:index

完成此操作后,您应该在/admin/config/search/search-api上看到Solr服务器作为索引已启用

如果您已使用演示内容安装了Open Y,现在是时候创建一个带有Activity Finder v4组件的着陆页了。

在Open Y中,我们有一个专门创建的模块可以为您完成这项工作

使用drush命令启用openy_prgf_af4_demo

drush en openy_prgf_af4_demo

然后,会自动创建/活动查找器-v4着陆页,其外观应如下所示 image

当您访问它时。通过访问/activity-finder-v4?step=results或单击建议的按钮,您应该看到结果、具有过滤器的活动以及其他所有功能,这些都是Activity Finder v4附带的功能。对于来自OpenY的演示内容,它应如下所示 image

设置受信任的重定向主机模式

活动查找器具有跟踪重定向到第三方系统的功能。为了控制要重定向到的URL,您应使用受信任的主机模式。此功能与Drupal核心trusted_host_patterns设置类似。

示例 - 将此部分添加到settings.php

// Trusted hosts to redirect to for Activity Finder.
$settings['activity_finder_trusted_redirect_host_patterns'] = [
  '^apm\.activecommunities\.com$',
];

还建议在robots.txt中禁止这些路径

# Activity Finder redirects
Disallow: /af/register-redirect/
Disallow: /index.php/af/register-redirect/

添加活动查找器块

有关如何将块添加到您的页面以及块选项的信息,请参阅活动查找器的完整文档

故障排除 & 常见问题解答

要演示活动查找器,请参阅以下沙盒

使用Daxko后端时的限制

在使用Daxko后端时,开发者应了解以下限制:

  • 在启动屏幕上无法使用主分支功能。
  • 必须使用旧版模式。
  • 无法在年龄向导步骤中显示每个年龄的结果数量。
  • 在用户点击活动详情之前,无法显示每个活动的可用位置数量。
  • 结果页面上的分页功能有限。我们只能显示上一页和下一页链接,无法显示页数。

如何在活动查找器中覆盖processResults

参见openy_activity_finder.api.php

/**
 * Implements hook_activity_finder_program_process_results_alter().
 */
function custom_module_activity_finder_program_process_results_alter(&$data, NodeInterface $entity) {
  // Get formatted session data from some custom service.
  $formatted_session = \Drupal::service('ymca_class_page.data_provider')
    ->formatSessions([$entity], FALSE);
  $formatted_session = reset($formatted_session);

  // Fix pricing according to YMCA price customization.
  $data['price'] = '';
  if (!empty($formatted_session['prices'])) {
    foreach ($formatted_session['prices'] as $price) {
      $data['price'] .= implode(' ', $price) . '<br>';
    }
  }

  // Fix availability and registration according to YMCA customization.
  $messages = [
    'begun' => t('This class has begun.'),
    'will_open' => t('Registration for this class opens shortly. Please check back.'),
    'inperson' => t('Online registration is closed. Visit a YMCA branch to register.'),
    'included_in_membership' => t('Included in Membership'),
  ];

  if (isset($messages[$formatted_session['reg_state']])) {
    $data['availability_note'] = $messages[$formatted_session['reg_state']];
  }
}

如何向分析事件添加外部功能

参见openy_af4_vue_app/main.js

// Listen to a custom event to pass events in Google Analytics.
document.addEventListener('openy_activity_finder_event', (e) => {
  const { action, label, value, category } = e.detail

  if (window.gtag) {
    window.gtag('event', action, {
      event_category: category,
      event_label: label,
      value: value
    })
  } else if (window.ga) {
    window.ga('send', 'event', category, action, label, value)
  }
})

自定义事件的示例

document.addEventListener('openy_activity_finder_event', (e) => {
  const { action, label, value, category } = e.detail // Properties you can use for analitics.
  ...
  { your_functionality }
  ...
})

在结果之间添加自定义组件

这为开发者提供了在结果渲染方面的灵活性

          <ResultsList
            :results="data.table"
            :ages="ages"
            :selected-ages="selectedAges"
            :legacy-mode="legacyMode"
            :disable-spots-available="disableSpotsAvailable"
            @showActivityDetailsModal="showActivityDetailsModal($event)"
          />

可以改为这个

          <ResultsList
            :results="data.table.slice(0, 2)"
            :ages="ages"
            :selected-ages="selectedAges"
            :legacy-mode="legacyMode"
            :disable-spots-available="disableSpotsAvailable"
            @showActivityDetailsModal="showActivityDetailsModal($event)"
          />
          <YGBWAds />
          <ResultsList
            :results="data.table.slice(2)"
            :ages="ages"
            :selected-ages="selectedAges"
            :legacy-mode="legacyMode"
            :disable-spots-available="disableSpotsAvailable"
            @showActivityDetailsModal="showActivityDetailsModal($event)"
          />

其中YGBWAds是自定义组件,用于在结果之间渲染自定义内容。参见ymcatwincities#148