ymcatwincities/openy_activity_finder

此包已被弃用,不再维护。作者建议使用ycloudyusa/yusaopeny_activity_finder包。

Open Y 活动搜索器

安装数: 33,872

依赖项: 1

建议者: 0

安全: 0

星标: 4

关注者: 13

分支: 13

公开问题: 21

语言:Vue

类型:Drupal模块


README

版本

目前有1个主要版本:4。Open Y 9.2.10.0之前的版本有^3.1 || ^4.0版本约束,允许您根据项目需求选择要使用的版本。

弃用

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

新项目

所有新项目都应该获取最新的Open Y活动搜索器版本。

现有项目

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

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

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

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

活动搜索器块选项

标题

一个文本字段,用于显示在AF块的顶部横幅上显示的文本

按类别限制

一个引用字段,您可以从中选择要按这些类别限制结果的类别

按类别排除

一个参考字段,您可以从中选择您不想显示结果的类别

旧版模式

一种特殊模式,用于以AF的前一个版本显示某些数据。

它提供的内容

  • 禁用结果屏幕上的书签功能
  • 不在活动结果卡片中显示年龄指示器
  • 更改“天+时间”向导步骤。我们可以显示星期的天数,但不能显示每天的时间(不支持DaysTimes过滤器)

隐藏主页分支信息块

  • 您只需隐藏与主页分支功能相关的块(链接到主页分支的结果和该分支的结果计数)

背景图像

  • 一个图像字段,用于上传AF块顶部横幅的背景图像

使用Daxko后端的限制

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

受信任的重定向主机模式

活动查找器具有跟踪重定向到第三方系统的功能。为了控制要重定向到的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/

开发

如何在活动查找器中覆盖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是自定义组件,用于在结果之间渲染自定义内容。请参阅#148