From 604f1c8142cd1da30584ab8b3db3fd581b814974 Mon Sep 17 00:00:00 2001 From: Ben LeDuc Date: Tue, 30 Sep 2014 09:06:10 -0500 Subject: [PATCH] View Tokens Patch --- metatag_views/metatag_views.module | 23 ++++++++++++++- ...atag_views_plugin_display_extender_metatags.inc | 34 ++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/metatag_views/metatag_views.module b/metatag_views/metatag_views.module index 943b3ff..0d3d58f 100644 --- a/metatag_views/metatag_views.module +++ b/metatag_views/metatag_views.module @@ -74,11 +74,32 @@ function metatag_views_page_alter(&$page) { // Load the meta tags for this view. if (metatag_views_views_display_has_metatags($view->display_handler)) { $saved_metatags = $view->display_handler->get_option('metatags'); + if(empty($saved_metatags)) { + $saved_metatags = array(); + } + // Cycle through each Metatag entry. + foreach ($saved_metatags as $meta_key => $meta_value) { + $replace = 1; + while($replace > 0) { + $replace = 0; + // Cycle through each View "Token". + foreach ($view->field as $token_key => $token_value) { + $token_key = "[$token_key]"; + $temp = $meta_value['value']; + $meta_value['value'] = str_replace($token_key, $token_value->original_value, $meta_value['value']); + // If a change exists we will go though all elements again. + if($meta_value['value'] != $temp) { + $replace++; + } + $saved_metatags[$meta_key]['value'] = $meta_value['value']; + } + } + } $metatags = array(); if (!empty($saved_metatags)) { $metatags[LANGUAGE_NONE] = $saved_metatags; } - + // Build options for meta tag rendering. $instance = 'view:' . $view->name; $options = array(); diff --git a/metatag_views/metatag_views_plugin_display_extender_metatags.inc b/metatag_views/metatag_views_plugin_display_extender_metatags.inc index 7c142f1..12421eb 100644 --- a/metatag_views/metatag_views_plugin_display_extender_metatags.inc +++ b/metatag_views/metatag_views_plugin_display_extender_metatags.inc @@ -39,6 +39,40 @@ class metatag_views_plugin_display_extender_metatags extends views_plugin_displa $options['context'] = 'view'; metatag_metatags_form($form, $instance, $metatags, $options); $form['metatags']['#type'] = 'container'; + // Get a list of the available fields and arguments for View "token" + // replacement. Code copied from Views module. + $options = array(); + foreach ($this->view->display_handler->get_handlers('field') as $field => $handler) { + $options[t('Fields')]["[$field]"] = $handler->ui_name(); + } + if (!empty($options)) { + $output = '

' . t('The following tokens are available. If you would like to have the characters \'[\' and \']\' please use the html entity codes \'%5B\' or \'%5D\' or they will get replaced with empty space.' . '

'); + foreach (array_keys($options) as $type) { + if (!empty($options[$type])) { + $items = array(); + foreach ($options[$type] as $key => $value) { + $items[] = $key . ' == ' . check_plain($value); + } + $output .= theme('item_list', array( + 'items' => $items, + 'type' => $type, + )); + } + } + $form['token_help'] = array( + '#type' => 'fieldset', + '#title' => t('Replacement patterns'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + '#value' => $output, + '#id' => 'edit-options-token-help', + '#dependency' => array( + 'edit-options-tokenize' => array(1), + ), + '#prefix' => '
', + '#suffix' => '
', + ); + } } } -- 1.8.4.2