/** * Create the meta keywords based on the content * * @package News * @author Instant Zero (http://xoops.instant-zero.com) * @copyright (c) Instant Zero */ function nw_createmeta_keywords($content) { include NW_MODULE_PATH . '/config.php'; include_once NW_MODULE_PATH . '/class/blacklist.php'; include_once NW_MODULE_PATH . '/class/registryfile.php'; if(!$cfg['meta_keywords_auto_generate']) { return ''; } $registry = new nw_registryfile('nw_metagen_options.txt'); $tcontent = ''; $tcontent = $registry->getfile(); if(xoops_trim($tcontent) != '') { list($keywordscount, $keywordsorder) = explode(',',$tcontent); } else { $keywordscount = $cfg['meta_keywords_count']; $keywordsorder = $cfg['meta_keywords_order']; } $tmp = array(); // Search for the "Minimum keyword length" if(isset($_SESSION['nw_keywords_limit'])) { $limit = $_SESSION['nw_keywords_limit']; } else { $config_handler =& xoops_gethandler('config'); $xoopsConfigSearch =& $config_handler->getConfigsByCat(XOOPS_CONF_SEARCH); $limit = $xoopsConfigSearch['keyword_min']; $_SESSION['nw_keywords_limit'] = $limit; } $myts =& MyTextSanitizer::getInstance(); $content = str_replace ("<br />", " ", $content); $content= $myts->undoHtmlSpecialChars($content); $content= strip_tags($content); $content=strtolower($content); $search_pattern=array(" ","\t","\r\n","\r","\n",",",".","'",";",":",")","(",'"','?','!','{','}','[',']','<','>','/','+','-','_','\\','*'); $replace_pattern=array(' ',' ',' ',' ',' ',' ',' ',' ','','','','','','','','','','','','','','','','','','',''); $content = str_replace($search_pattern, $replace_pattern, $content); $keywords = explode(' ',$content); switch($keywordsorder) { case 0: // Ordre d'apparition dans le texte $keywords = array_unique($keywords); break; case 1: // Ordre de fréquence des mots $keywords = array_count_values($keywords); asort($keywords); $keywords = array_keys($keywords); break; case 2: // Ordre inverse de la fréquence des mots $keywords = array_count_values($keywords); arsort($keywords); $keywords = array_keys($keywords); break; } // Remove black listed words $metablack = new nw_blacklist(); $words = $metablack->getAllKeywords(); $keywords = $metablack->remove_blacklisted($keywords); foreach($keywords as $keyword) { if(strlen($keyword)>=$limit && !is_numeric($keyword)) { $tmp[] = $keyword; } } $tmp = array_slice($tmp, 0, $keywordscount); if(count($tmp) > 0) { return implode(',',$tmp); } else { if(!isset($config_handler) || !is_object($config_handler)) { $config_handler =& xoops_gethandler('config'); } $xoopsConfigMetaFooter =& $config_handler->getConfigsByCat(XOOPS_CONF_METAFOOTER); if(isset($xoopsConfigMetaFooter['meta_keywords'])) { return $xoopsConfigMetaFooter['meta_keywords']; } else { return ''; } } }
/** * Metagen * * Metagen is a system that can help you to have your page best indexed by search engines. * Except if you type meta keywords and meta descriptions yourself, the module will automatically create them. * From here you can also manage some other options like the maximum number of meta keywords to create and * the keywords apparition's order. */ function Metagen() { include_once XOOPS_ROOT_PATH."/class/xoopsformloader.php"; global $xoopsModule, $xoopsConfig, $xoopsModuleConfig, $cfg; xoops_cp_header(); $myts =& MyTextSanitizer::getInstance(); if (file_exists(NW_MODULE_PATH . '/language/'.$xoopsConfig['language'].'/main.php')) { include_once NW_MODULE_PATH . '/language/'.$xoopsConfig['language'].'/main.php'; } else { include_once NW_MODULE_PATH . '/language/english/main.php'; } adminmenu(7); echo "<h1>"._AM_NW_METAGEN."</h1>"; echo _AM_NW_METAGEN_DESC."<br /><br />"; // Metagen Options $registry = new nw_registryfile('nw_metagen_options.txt'); $content = ''; $content = $registry->getfile(); if(xoops_trim($content) != '') { list($keywordscount, $keywordsorder) = explode(',',$content); } else { $keywordscount = $cfg['meta_keywords_count']; $keywordsorder = $cfg['meta_keywords_order']; } $sform = new XoopsThemeForm(_OPTIONS, 'metagenoptions', NW_MODULE_URL . '/admin/index.php', 'post'); $sform->addElement(new XoopsFormHidden('op', 'metagenoptions'), false); $sform->addElement(new XoopsFormText(_AM_NW_META_KEYWORDS_CNT, 'keywordscount', 4, 6, $keywordscount), true); $keywordsorder=new XoopsFormRadio(_AM_NW_META_KEYWORDS_ORDER, 'keywordsorder', $keywordsorder); $keywordsorder->addOption(0,_AM_NW_META_KEYWORDS_INTEXT); $keywordsorder->addOption(1,_AM_NW_META_KEYWORDS_FREQ1); $keywordsorder->addOption(2,_AM_NW_META_KEYWORDS_FREQ2); $sform->addElement($keywordsorder, false); $button_tray = new XoopsFormElementTray('' ,''); $submit_btn = new XoopsFormButton('', 'post', _AM_NW_MODIFY, 'submit'); $button_tray->addElement($submit_btn); $sform->addElement($button_tray); $sform->display(); // Blacklist $sform = new XoopsThemeForm(_AM_NW_BLACKLIST, 'metagenblacklist', NW_MODULE_URL . '/admin/index.php', 'post'); $sform->addElement(new XoopsFormHidden('op', 'metagenblacklist'), false); // Remove words $remove_tray = new XoopsFormElementTray(_AM_NW_BLACKLIST); $remove_tray->setDescription(_AM_NW_BLACKLIST_DESC); $blacklist=new XoopsFormSelect('', 'blacklist','',5,true); $words = array(); $metablack = new nw_blacklist(); $words = $metablack->getAllKeywords(); if(is_array($words) && count($words)>0) { foreach ($words as $key => $value) { $blacklist->addOption($key,$value); } } $blacklist->setDescription(_AM_NW_BLACKLIST_DESC); $remove_tray->addElement($blacklist,false); $remove_btn = new XoopsFormButton('', 'go', _AM_NW_DELETE, 'submit'); $remove_tray->addElement($remove_btn,false); $sform->addElement($remove_tray); // Add some words $add_tray = new XoopsFormElementTray(_AM_NW_BLACKLIST_ADD); $add_tray->setDescription(_AM_NW_BLACKLIST_ADD_DSC); $add_field = new XoopsFormTextArea('', 'keywords', '', 5, 70); $add_tray->addElement($add_field,false); $add_btn = new XoopsFormButton('', 'go', _AM_NW_ADD, 'submit'); $add_tray->addElement($add_btn,false); $sform->addElement($add_tray); $sform->display(); }