function onBeforeDisplayContent(&$article, &$params) { if (!class_exists('cmsFramework')) { return; } // Make sure this is a Joomla article page $option = Sanitize::getString($_REQUEST, 'option', ''); $view = Sanitize::getString($_REQUEST, 'view', ''); $layout = Sanitize::getString($_REQUEST, 'layout', ''); $id = Sanitize::getInt($_REQUEST, 'id'); if (!($option == 'com_content' && $view == 'article' && $id)) { return; } /** * Retrieve $listing array from memory */ $_this =& cmsFramework::getInstance(); $Config = Configure::read('JreviewsSystem.Config'); $title = trim(Sanitize::getString($Config, 'type_metatitle')); $keywords = trim(Sanitize::getString($Config, 'type_metakey')); $description = trim(Sanitize::getString($Config, 'type_metadesc')); $listing =& $_this->listing; // Has all the data that's also available in the detail.thtml theme file so you can create any sort of conditionals with it if ($title != '' || $keywords != '' || $description != '') { if (isset($_this->listing) && is_array($_this->listing)) { // Instantiate the CustomFields helper class $CustomFields =& RegisterClass::getInstance('CustomFieldsHelper'); // Get and process all tags $tags = plgContentJreviews::extractTags($title . $keywords . $description); $tags_array = array(); foreach ($tags as $tag) { switch ($tag) { case 'title': $tags_array['{title}'] = Sanitize::stripAll($listing['Listing'], 'title'); break; case 'section': $tags_array['{section}'] = Sanitize::stripAll($listing['Section'], 'title'); break; case 'category': $tags_array['{category}'] = Sanitize::stripAll($listing['Category'], 'title'); break; case 'metakey': $tags_array['{metakey}'] = Sanitize::stripAll($listing['Listing'], 'metakey'); break; case 'metadesc': $tags_array['{metadesc}'] = Sanitize::stripAll($listing['Listing'], 'metadesc'); break; default: if (substr($tag, 0, 3) == 'jr_') { $field = $CustomFields->fieldText($tag, $listing, false, false, ','); $tags_array['{' . $tag . '}'] = !empty($field) ? $field : ''; } break; } } # Process title $title != '' and $title = str_replace(array_keys($tags_array), $tags_array, $title) and cmsFramework::meta('title', $title); # Process description $description != '' and $description = str_replace(array_keys($tags_array), $tags_array, $description) and cmsFramework::meta('description', $description); # Process keywords $keywords != '' and $keywords = str_replace(array_keys($tags_array), $tags_array, $keywords) and cmsFramework::meta('keywords', $keywords); } } elseif (isset($article->parameters) && $article->parameters->get('show_page_title') && $article->parameters->get('num_leading_articles') == '' && $article->parameters->get('filter_type') == '') { $title = $article->parameters->get('page_title'); $title != '' and cmsFramework::meta('title', $title); } if (isset($_this->crumbs) && !empty($_this->crumbs)) { cmsFramework::setPathway($_this->crumbs); } unset($_this); }
function onBeforeDisplayContent(&$article, &$params) { if (!class_exists('cmsFramework') || !class_exists('Sanitize')) { return; } // Make sure this is a Joomla article page $option = Sanitize::getString($_REQUEST, 'option', ''); $view = Sanitize::getString($_REQUEST, 'view', ''); $layout = Sanitize::getString($_REQUEST, 'layout', ''); $id = Sanitize::getInt($_REQUEST, 'id'); if (!($option == 'com_content' && $view == 'article' && $id)) { return; } /** * Retrieve $listing array from memory */ $Config = Configure::read('JreviewsSystem.Config'); $title = trim(Sanitize::getString($Config, 'type_metatitle')); $this->cms_version >= 1.6 and $params->set('page_title', $article->title); // Fixes J16 bug that uses cat menu title as page title $keywords = trim(Sanitize::getString($Config, 'type_metakey')); $description = trim(Sanitize::getString($Config, 'type_metadesc')); $listing = classRegistry::getObject('listing', 'jreviewsplugin'); // Has all the data that's also available in the detail.thtml theme file so you can create any sort of conditionals with it $crumbs = classRegistry::getObject('crumbs', 'jreviewsplugin'); if ($title != '' || $keywords != '' || $description != '') { if ($listing && is_array($listing)) { // Get and process all tags $tags = plgContentJreviews::extractTags($title . $keywords . $description); $tags_array = array(); foreach ($tags as $tag) { switch ($tag) { case 'title': $tags_array['{title}'] = Sanitize::stripAll($listing['Listing'], 'title'); break; case 'section': $tags_array['{section}'] = Sanitize::stripAll($listing['Section'], 'title'); break; case 'category': $tags_array['{category}'] = Sanitize::stripAll($listing['Category'], 'title'); break; case 'metakey': $tags_array['{metakey}'] = Sanitize::stripAll($listing['Listing'], 'metakey'); break; case 'metadesc': $tags_array['{metadesc}'] = Sanitize::stripAll($listing['Listing'], 'metadesc'); break; case 'summary': $tags_array['{summary}'] = Sanitize::htmlClean(Sanitize::stripAll($listing['Listing'], 'summary')); break; case 'description': $tags_array['{description}'] = Sanitize::htmlClean(Sanitize::stripAll($listing['Listing'], 'description')); break; default: if (substr($tag, 0, 3) == 'jr_' && isset($listing['Field']['pairs'][$tag])) { $fields = $listing['Field']['pairs']; $tags_array['{' . $tag . '}'] = isset($fields[$tag]['text']) ? html_entity_decode(implode(", ", $fields[$tag]['text']), ENT_QUOTES, 'utf-8') : ''; } break; } } # Process title $title != '' and $title = str_replace('&', '&', str_replace(array_keys($tags_array), $tags_array, $title)) and cmsFramework::meta('title', $title); $title != '' and $this->cms_version >= 1.6 and $params->set('page_title', $title); # Process description $description != '' and $description = str_replace('&', '&', str_replace(array_keys($tags_array), $tags_array, $description)) and cmsFramework::meta('description', $description); $description != '' and $this->cms_version >= 1.6 and $article->metadesc = htmlspecialchars($description, ENT_QUOTES, 'utf-8'); # Process keywords $keywords != '' and $keywords = mb_strtolower(str_replace('&', '&', str_replace(array_keys($tags_array), $tags_array, $keywords)), 'utf-8') and cmsFramework::meta('keywords', $keywords); $keywords != '' and $this->cms_version >= 1.6 and $article->metakey = htmlspecialchars($keywords, ENT_QUOTES, 'utf-8'); } } elseif (isset($article->parameters) && $article->parameters->get('show_page_title') && $article->parameters->get('num_leading_articles') == '' && $article->parameters->get('filter_type') == '') { $title = $article->parameters->get('page_title'); $title != '' and $params->set('page_title', $title); } if ($crumbs && !empty($crumbs)) { cmsFramework::setPathway($crumbs); } $this->facebookOpenGraph($listing, compact('title', 'keywords', 'description')); }