function metatags_quick_extra_html_head_alter in Meta tags quick 7.2
Same name and namespace in other branches
- 8.3 metatags_quick_extra.module \metatags_quick_extra_html_head_alter()
File
- ./
metatags_quick_extra.module, line 27 - import nodewords data to metatags_quick fields @author Valery L. Lourie <http://drupal.org/user/239562>
Code
function metatags_quick_extra_html_head_alter(&$head_elements) {
// auto-tag only if the page is node
if (arg(0) == 'node' && is_numeric(arg(1)) && !arg(2)) {
$auto_settings = variable_get('metatags_quick_auto_settings', '');
$node = node_load(arg(1));
$applicable_content_type = false;
if (isset($auto_settings['applicable_content_types'])) {
$applicable_content_type = in_array($node->type, $auto_settings['applicable_content_types'], true);
}
// apply auto tags if the content type is one of target content types
if ($applicable_content_type) {
// Generate automatic meta keywords
$keywords = array();
// Node-specific keywords entered in node add/edit form
$node_keywords = array();
if (isset($head_elements['metatags_quick_keywords'])) {
$node_keywords = explode(',', $head_elements['metatags_quick_keywords']['#attributes']['content']);
}
// Taxonomy keywords
$vocabularies = array_values($auto_settings['auto_keywords_vocabularies']);
$taxonomy_keywords = array();
foreach ($vocabularies as $vocabulary) {
if ($vocabulary) {
$vocabulary_keywords = _metatags_quick_get_vocabulary_keywords($vocabulary, $node);
$taxonomy_keywords = array_merge($taxonomy_keywords, $vocabulary_keywords);
}
}
// Default keywords
$default_keywords = array();
if (isset($auto_settings['default_keywords'][$node->type]) && $auto_settings['default_keywords'][$node->type]) {
$default_keywords = explode(',', $auto_settings['default_keywords'][$node->type]);
// Token support
foreach ($default_keywords as $index => $keyword) {
$default_keywords[$index] = token_replace($keyword, array(
'node' => $node,
));
}
}
// Global keywords
$global_keywords = array();
if ($auto_settings['global_keywords']) {
$global_keywords = explode(',', $auto_settings['global_keywords']);
// Token support
foreach ($global_keywords as $index => $keyword) {
$global_keywords[$index] = token_replace($keyword);
}
}
// Add/alter meta keywords
$keywords = array_merge($node_keywords, $taxonomy_keywords, $default_keywords, $global_keywords);
if (count($keywords)) {
if (isset($head_elements['metatags_quick_keywords'])) {
$head_elements['metatags_quick_keywords']['#attributes']['content'] = implode(',', $keywords);
}
else {
$head_elements['metatags_quick_keywords'] = array(
'#tag' => 'meta',
'#type' => 'html_tag',
'#attributes' => array(
'name' => 'keywords',
'content' => implode(',', $keywords),
),
);
}
}
// Generate automatic meta description
// If no meta description exists and if autogeneration is required
$meta_description_exists = false;
if (isset($head_elements['metatags_quick_description'])) {
$head_elements['metatags_quick_description']['#attributes']['content'] = trim($head_elements['metatags_quick_description']['#attributes']['content']);
$meta_description_exists = !empty($head_elements['metatags_quick_description']['#attributes']['content']);
}
if (!empty($node->body) && !$meta_description_exists && isset($auto_settings['meta_description']) && $auto_settings['meta_description']['auto_generate']) {
$language = field_language('node', $node, 'body');
$source = $auto_settings['meta_description']['source'];
if ($source == 'teaser') {
$content = check_markup($node->body[$language][0]['summary'], $node->body[$language][0]['format']);
}
elseif ($source == 'body') {
$content = check_markup($node->body[$language][0]['value'], $node->body[$language][0]['format']);
}
else {
$content = $node->body[$language][0]['summary'] ? check_markup($node->body[$language][0]['summary'], $node->body[$language][0]['format']) : check_markup($node->body[$language][0]['value'], $node->body[$language][0]['format']);
}
// Trim content
$content = drupal_substr(trim(strip_tags($content)), 0, 255);
// Stop on word boundary
if (drupal_strlen($content) == 255) {
$space_position = strrpos($content, ' ');
$content = drupal_substr($content, 0, $space_position);
}
// Add meta description
$head_elements['metatags_quick_description'] = array(
'#tag' => 'meta',
'#type' => 'html_tag',
'#attributes' => array(
'name' => 'description',
'content' => $content,
),
);
}
}
}
}