You are here

facetapi_bonus.page_title.inc in Facet API Bonus 7

Integration with page_title module.

File

facetapi_bonus.page_title.inc
View source
<?php

/**
 * @file
 * Integration with page_title module.
 */

/**
 * Implements hook_page_title_pattern_alter().
 */
function facetapi_bonus_page_title_pattern_alter(&$pattern, &$types) {
  if ($searchers = facetapi_get_active_searchers()) {
    $pattern = variable_get('page_title_facetapi_bonus', '');
    $searcher = reset($searchers);
    $adapter = facetapi_adapter_load($searcher);
    $types['facetapi_results'] = array(
      'facetapi_adapter' => $adapter,
    );

    // If we meet list<...[facetapi_active:XXX]...> string we replace it with
    // coma separated list of tokenized string.
    // So list<[facetapi_active:facet-label]: [facetapi_active:active-value]>
    // will be replaced with "type: node, author: admin" string if type and
    // author facets active.
    if (strpos($pattern, 'list<') !== FALSE && strpos($pattern, 'facetapi_active') !== FALSE) {
      preg_match_all('/list<[^>]*\\[facetapi_active:[^>]*>/', $pattern, $matches);
      $replacements = array();
      foreach ($matches[0] as $subpattern) {
        $string = substr($subpattern, 5, strlen($subpattern) - 6);

        // @see CurrentSearchItemActive::execute().
        $subreplacements = array();
        foreach ($adapter
          ->getAllActiveItems() as $item) {

          // Adds adapter to the active item for token replacement.
          $item['adapter'] = $adapter;

          // Builds variables to pass to theme function.
          $data = array(
            'facetapi_active_item' => $item,
          );
          $subreplacements[] = token_replace($string, $data);
        }
        $replacements[$subpattern] = implode(', ', $subreplacements);
      }
      $pattern = str_replace(array_keys($replacements), array_values($replacements), $pattern);
    }
  }
}

/**
 * Implements hook_page_title_settings().
 */
function facetapi_bonus_page_title_settings() {
  return array(
    'page_title_facetapi_bonus' => array(
      'label' => 'Facet API',
      'scopes' => array(
        'global',
        'facetapi_results',
        'facetapi_active',
      ),
      'show field' => TRUE,
      'description' => 'This pattern will be used for pages that uses Facet API module (e.g. search pages, views based on search index)',
    ),
  );
}

/**
 * Alter Page Title settings form.
 *
 * Add facetapi tokens to help.
 */
function facetapi_bonus_form_page_title_admin_settings_alter(&$form, $form_state) {
  $form['token_help']['content']['#token_types'][] = 'facetapi_results';
  $form['token_help']['content']['#token_types'][] = 'facetapi_active';
}

Functions

Namesort descending Description
facetapi_bonus_form_page_title_admin_settings_alter Alter Page Title settings form.
facetapi_bonus_page_title_pattern_alter Implements hook_page_title_pattern_alter().
facetapi_bonus_page_title_settings Implements hook_page_title_settings().