SVarlamov
9 years ago
commit
5d58df6eec
8 changed files with 164 additions and 0 deletions
@ -0,0 +1,15 @@ |
|||||||
|
## moredoc |
||||||
|
|
||||||
|
# Модуль Похожие документы v1.0 |
||||||
|
|
||||||
|
|
||||||
|
## Данный модуль предназначен для вывода списка похожих документов относительно текущего. |
||||||
|
|
||||||
|
* Связующим элементом документов является первое слово из поля Ключевые слова. |
||||||
|
* Результат вывода кешируется средствами Smarty.<BR /><BR />Для вывода списка похожих документов используйте системный тег <strong>[mod_moredoc]</strong> (можно использовать как в документах так и шаблоне рубрики). |
||||||
|
|
||||||
|
## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку moredoc со всем ее содержимым внутри! |
||||||
|
|
||||||
|
## Changelog: |
||||||
|
|
||||||
|
01.03.2013 - версия 1.0 |
@ -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; // Отключаем кеширование |
||||||
|
} |
||||||
|
|
||||||
|
?> |
@ -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} |
Loading…
Reference in new issue