Как добавить поддержку keywords и description для новостей CMS WebAsyst
- Stats: 3604 1
- Author: admin
- Category: CMS WebAsyst
- Comments: Комментариев нет
Как к «Новостям» добавить оригинальные мета-теги? На этот вопрос вы узнаете ответ в этой статье.
Один из наших заказчиков с Италии попросил для его магазина созданного на CMS WebAsyst добавить возможность писать уникальные мета-теги для его блога (новостей).
Вот реализованный пример, на сайте заказчика
Начнем:
1. В файл published/SC/html/scripts/core_functions/functions.php добавляете 2 функции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Код: function getLocStringML($string_id, $key){ $data = db_phquery_fetch(DBRFETCH_ASSOC_ALL, ' SELECT `local`.`value`, `language`.`iso2` FROM `?#LOCAL_TABLE` `local` LEFT JOIN `?#LANGUAGE_TABLE` `language` ON (`local`.`lang_id` = `language`.`id`) WHERE `local`.`id` = ? ', $string_id); $result = array(); foreach($data as $item){ $result[$key.'_'.$item['iso2']] = $item['value']; } return $result; } function saveLocStringML($string_id, $data, $key){ $languages_data = db_phquery_fetch(DBRFETCH_ASSOC_ALL, 'SELECT `id`, `iso2` FROM `?#LANGUAGE_TABLE`'); $languages = array(); foreach($languages_data as $language){ $languages[$language['iso2']] = $language['id']; } $LanguageEntry = &ClassManager::getInstance('Language'); $string_array = scanArrayKeysForID($data, $key); foreach($string_array as $lang_iso2 => $string_item){ $lang_id = $languages[$lang_iso2]; $string_value = $string_item[$key]; $LanguageEntry->loadById($lang_id); $LanguageEntry->addLocal($string_id, $string_value, 'general', 'gen'); } } |
2. В файл published/SC/html/scripts/modules/news/class.newsmodule.php после
1 |
$_t['textToMail'] = $_e; |
добавляете
1 2 |
$_t['keywords'] = getLocStringML('news_'.$_t['NID'].'_keywords', 'keywords'); $_t['description'] = getLocStringML('news_'.$_t['NID'].'_description', 'description'); |
после
1 2 3 4 5 6 7 8 |
if(!$_POST['DATA']['title_'.$def_language->iso2] && !$_POST['DATA']['textToPublication_'.$def_language->iso2]){ $_POST['DATA']['picture'] = ''; $_rMsg = array( 'type' => 'error', 'text' => translate("blog_err_empty_titletext"), ); return true; } |
добавляете
1 2 3 |
Код: saveLocStringML('news_'.$_POST['DATA']['NID'].'_keywords', $_POST, 'keywords'); saveLocStringML('news_'.$_POST['DATA']['NID'].'_description', $_POST, 'description'); |
после
1 2 3 4 |
$NID = $this->addNews( $_POST['DATA'] ); if ( isset($_POST['DATA']['emailed']) ) { $this->sendNews($NID); } |
добавляете
1 2 |
saveLocStringML('news_'.$NID.'_keywords', $_POST, 'keywords'); saveLocStringML('news_'.$NID.'_description', $_POST, 'description'); |
3. В файл published/SC/html/scripts/templates/backend/news_add.html после
1 |
{"blog_post_title"|translate} <span class="notice">({"blog_str_not_html"|translate})</span>:{* <input type="text" name="DATA[title]" value="{$NewsInfo.title}" size="50" />*} {html_text namespace="DATA" name="title" values=$NewsInfo table=$smarty.const.PRODUCTS_TABLE style="width:100%"} |
добавляете
1 |
{"blog_post_keywords"|translate}:{html_text name="keywords" values=$NewsInfo.keywords style="width:100%"}{"blog_post_description"|translate}:{html_text name="description" values=$NewsInfo.description style="width:100%"} |
4. В файл published/SC/html/scripts/templates/backend/news.admin_list.tpl.html после
1 |
{"blog_post_title"|translate} <span class="notice">({"blog_str_not_html"|translate})</span>:{* <input type="text" name="DATA[title]" value="{$NewsInfo.title}" size="50" />*} {html_text namespace="DATA" name="title" values=$NewsInfo table=$smarty.const.PRODUCTS_TABLE style="width:100%"} |
добавляете
1 |
{"blog_post_keywords"|translate}:{html_text name="keywords" values=$NewsInfo.keywords style="width:100%"}{"blog_post_description"|translate}:{html_text name="description" values=$NewsInfo.description style="width:100%"} |
5. В файл published/SC/html/scripts/modules/abstract/_methods/head.php после
1 2 3 4 5 6 |
case 'office': $translated = translate('pgn_my_account'); if($translated){ $page_title = $translated; } break; |
добавляете
1 2 3 4 5 6 7 8 9 10 11 12 |
case 'news': $keywords_string_id = 'news_'.$_GET['blog_id'].'_keywords'; $translated = translate($keywords_string_id); if($translated != $keywords_string_id){ $keywords = $translated; } $description_string_id = 'news_'.$_GET['blog_id'].'_description'; $translated = translate($description_string_id); if($translated != $description_string_id){ $description = $translated; } break; |
и заменяете
1 2 3 |
if( defined('CONF_HOMEPAGE_META_KEYWORDS') && ($keywords = constant('CONF_HOMEPAGE_META_KEYWORDS'))){ $meta_tags .= "\n"; } |
на
1 2 3 4 |
if(defined('CONF_HOMEPAGE_META_KEYWORDS') && !$keywords){ $keywords = constant('CONF_HOMEPAGE_META_KEYWORDS'); } $meta_tags .= "\n"; |
а также заменяете (немного выше по коду)
1 2 3 |
if( defined('CONF_HOMEPAGE_META_DESCRIPTION') && ($description = constant('CONF_HOMEPAGE_META_DESCRIPTION'))){ $meta_tags .= "\n"; } |
на
1 2 3 4 |
if(defined('CONF_HOMEPAGE_META_DESCRIPTION') && !$description){ $description = constant('CONF_HOMEPAGE_META_DESCRIPTION'); } $meta_tags .= "\n"; |
После этих изменений появляется возможность в Новостях сайта Webasyst писать мета-теги какие будут отображаться в коде страницы-новости.
Отправить ответ