Добавлен Модуль Похожие документы.
This commit is contained in:
		
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| ## moredoc | ||||
|  | ||||
| # Модуль Похожие документы v1.0 | ||||
|  | ||||
|  | ||||
| ## Данный модуль предназначен для вывода списка похожих документов относительно текущего.  | ||||
|  | ||||
|    * Связующим элементом документов является первое слово из поля Ключевые слова. | ||||
|    * Результат вывода кешируется средствами Smarty.<BR /><BR />Для вывода списка похожих документов используйте системный тег <strong>[mod_moredoc]</strong> (можно использовать как в документах так и шаблоне рубрики). | ||||
|  | ||||
| ## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку moredoc со всем ее содержимым внутри! | ||||
|  | ||||
| ## Changelog: | ||||
|  | ||||
| 01.03.2013 - версия 1.0 | ||||
							
								
								
									
										4
									
								
								lang/index.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								lang/index.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| <?php | ||||
| header('Location:/'); | ||||
| exit; | ||||
| ?> | ||||
							
								
								
									
										1
									
								
								lang/ru.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								lang/ru.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MOREDOC_NAME           = "Возможно Вас заинтересует:" | ||||
							
								
								
									
										1
									
								
								lang/ua.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								lang/ua.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| MOREDOC_NAME           = "Можливо Вас зацікавить:" | ||||
							
								
								
									
										126
									
								
								module.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								module.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | ||||
| <?php | ||||
|  | ||||
| /** | ||||
|  * AVE.cms - Модуль Похожие документы | ||||
|  * | ||||
|  * @package AVE.cms | ||||
|  * @subpackage module_MoreDoc | ||||
|  * @filesource | ||||
|  */ | ||||
|  | ||||
| if(!defined('BASE_DIR')) exit; | ||||
|  | ||||
| if (defined('ACP')) | ||||
| { | ||||
|     $modul['ModuleName'] = 'Ссылки по теме'; | ||||
|     $modul['ModuleSysName'] = 'moredoc'; | ||||
|     $modul['ModuleVersion'] = '1.0'; | ||||
|     $modul['ModuleDescription'] = 'Данный модуль предназначен для вывода списка похожих документов относительно текущего. Связующим элементом документов является первое слово из поля Ключевые слова. Результат вывода кешируется средствами Smarty.<BR /><BR />Для вывода списка похожих документов используйте системный тег <strong>[mod_moredoc]</strong> (можно использовать как в документах так и шаблоне рубрики).'; | ||||
|     $modul['ModuleAutor'] = 'AVE.CMS Team'; | ||||
|     $modul['ModuleCopyright'] = '© 2007-2013 AVE.CMS'; | ||||
|     $modul['ModuleIsFunction'] = 1; | ||||
|     $modul['ModuleAdminEdit'] = 0; | ||||
|     $modul['ModuleFunction'] = 'mod_moredoc'; | ||||
|     $modul['ModuleTag'] = '[mod_moredoc]'; | ||||
|     $modul['ModuleTagLink'] = null; | ||||
|     $modul['ModuleAveTag'] = '#\\\[mod_moredoc]#'; | ||||
|     $modul['ModulePHPTag'] = '<?php mod_moredoc(); ?>'; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Функция обработки тега модуля | ||||
|  * | ||||
|  */ | ||||
| function mod_moredoc() | ||||
| { | ||||
| 	global $AVE_Core, $AVE_DB, $AVE_Template; | ||||
|  | ||||
| 	require_once(BASE_DIR . '/functions/func.modulglobals.php'); | ||||
| 	set_module_globals('moredoc'); | ||||
|  | ||||
| 	$AVE_Template->caching = true;            // Включаем кеширование | ||||
| 	$AVE_Template->cache_lifetime = 60*60*24; // Время жизни кеша 1 день в секундах | ||||
| //	$AVE_Template->cache_dir .= '/moredoc';   // Папка для кеша модуля | ||||
|  | ||||
| 	$tpl_dir = BASE_DIR . '/modules/moredoc/templates/'; // Указываем путь к шаблону модуля | ||||
|  | ||||
| 	// Если нету в кеше, то начинаем обрабатывать | ||||
| 	if (!$AVE_Template->is_cached($tpl_dir . 'moredoc.tpl', $AVE_Core->curentdoc->Id)) | ||||
| 	{ | ||||
| 		$limit      = 5; // Количество связных документов | ||||
| 		$flagrubric = 1; // Учитывать или нет рубрику документа (0 - нет, 1 - да) | ||||
|  | ||||
| 		$moredoc = array(); | ||||
|  | ||||
| 		// Проверяем, есть ли папка для кеша, если нет (первый раз) — создаем | ||||
| 		if (!is_dir($AVE_Template->cache_dir)) | ||||
| 		{ | ||||
| 			$oldumask = umask(0); | ||||
| 			@mkdir($AVE_Template->cache_dir, 0777); | ||||
| 			umask($oldumask); | ||||
| 		} | ||||
|  | ||||
| 		// Получаем ключевые слова, рубрику, извлекаем первое ключевое слово | ||||
| 		$row = $AVE_DB->Query(" | ||||
| 			SELECT | ||||
| 				rubric_id, | ||||
| 				document_meta_keywords | ||||
| 			FROM " . PREFIX . "_documents | ||||
| 			WHERE Id = '" . $AVE_Core->curentdoc->Id . "' | ||||
| 			LIMIT 1 | ||||
| 		")->FetchRow(); | ||||
|  | ||||
| 		$keywords = explode(',',$row->document_meta_keywords); | ||||
| 		$keywords = trim($keywords[0]); | ||||
|  | ||||
| 		if ($keywords != '') | ||||
| 		{ | ||||
| 			$inrubric = $flagrubric ? ("AND rubric_id = '" . $row->rubric_id . "'") : ''; | ||||
| 			$doctime  = get_settings('use_doctime') | ||||
| 				? ("AND document_published <= " . time() . " AND (document_expire = 0 OR document_expire >= " . time() . ")") : ''; | ||||
|  | ||||
| 			// Ищем документы где встречается такое-же слово | ||||
| 			$sql = $AVE_DB->Query(" | ||||
| 				SELECT | ||||
| 					Id, | ||||
| 					document_expire, | ||||
| 					document_title, | ||||
| 					document_alias, | ||||
| 					document_meta_description | ||||
| 				FROM " . PREFIX . "_documents | ||||
| 				WHERE document_meta_keywords LIKE '" . $keywords . "%' | ||||
| 				AND Id != 1 | ||||
| 				AND Id != '" . PAGE_NOT_FOUND_ID . "' | ||||
| 				AND Id != '" . $AVE_Core->curentdoc->Id . "' | ||||
| 				AND document_status != '0' | ||||
| 				AND document_deleted != '1' | ||||
| 				" . $inrubric . " | ||||
| 				" . $doctime . " | ||||
| 				ORDER BY document_count_view DESC | ||||
| 				LIMIT " . $limit | ||||
| 			); | ||||
|  | ||||
| 			while ($row = $sql->FetchRow()) | ||||
| 			{ | ||||
| 				if ($doctime != '' && (time() + $AVE_Template->cache_lifetime) > $row->document_expire) | ||||
| 				{ | ||||
| 					// Изменяем время жизни кеша так что-бы оно не превышало | ||||
| 					// время окончания публикации попавших в выборку документов | ||||
| 					$AVE_Template->cache_lifetime = $row->document_expire - time(); | ||||
| 				} | ||||
| 				$row->document_link = rewrite_link('index.php?id=' . $row->Id . '&doc=' . (empty($row->document_alias) ? prepare_url($row->document_title) : $row->document_alias)); | ||||
| 				array_push($moredoc, $row); | ||||
| 			} | ||||
| 			// Закрываем соединение | ||||
| 			$sql->Close(); | ||||
| 		} | ||||
| 		// Передаём переменную moredoc в шаблон | ||||
| 		$AVE_Template->assign('moredoc', $moredoc); | ||||
| 	} | ||||
| 	// Выводим шаблон moredoc.tpl | ||||
| 	$AVE_Template->display($tpl_dir . 'moredoc.tpl', $AVE_Core->curentdoc->Id); | ||||
|  | ||||
| 	$AVE_Template->caching = false; // Отключаем кеширование | ||||
| } | ||||
|  | ||||
| ?> | ||||
							
								
								
									
										4
									
								
								templates/index.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								templates/index.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| <?php | ||||
| header('Location:/'); | ||||
| exit; | ||||
| ?> | ||||
							
								
								
									
										9
									
								
								templates/moredoc.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								templates/moredoc.tpl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| {if $moredoc} | ||||
| 	<h3>{#MOREDOC_NAME#}</h3> | ||||
| 	<ul> | ||||
| 	{foreach from=$moredoc item=document} | ||||
| 		<li><a href = "{$document->document_link}">{$document->document_title|escape}</a><br /> | ||||
| 		{if $document->document_meta_description !=''}{$document->document_meta_description|escape}<br />{/if}</li> | ||||
| 	{/foreach} | ||||
| 	</ul> | ||||
| {/if} | ||||
		Reference in New Issue
	
	Block a user