commit 5d58df6eeccbcc312bf972abb60bd4b31718ef06 Author: SVarlamov Date: Sat Jun 11 13:52:13 2016 +0300 Добавлен Модуль Похожие документы. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d6451ee --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +## moredoc + +# Модуль Похожие документы v1.0 + + +## Данный модуль предназначен для вывода списка похожих документов относительно текущего. + + * Связующим элементом документов является первое слово из поля Ключевые слова. + * Результат вывода кешируется средствами Smarty.

Для вывода списка похожих документов используйте системный тег [mod_moredoc] (можно использовать как в документах так и шаблоне рубрики). + +## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку moredoc со всем ее содержимым внутри! + +## Changelog: + +01.03.2013 - версия 1.0 \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..4ca25aa --- /dev/null +++ b/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/lang/index.php b/lang/index.php new file mode 100644 index 0000000..4ca25aa --- /dev/null +++ b/lang/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/lang/ru.txt b/lang/ru.txt new file mode 100644 index 0000000..323a595 --- /dev/null +++ b/lang/ru.txt @@ -0,0 +1 @@ +MOREDOC_NAME = "Возможно Вас заинтересует:" \ No newline at end of file diff --git a/lang/ua.txt b/lang/ua.txt new file mode 100644 index 0000000..1853d16 --- /dev/null +++ b/lang/ua.txt @@ -0,0 +1 @@ +MOREDOC_NAME = "Можливо Вас зацікавить:" \ No newline at end of file diff --git a/module.php b/module.php new file mode 100644 index 0000000..246a11f --- /dev/null +++ b/module.php @@ -0,0 +1,126 @@ +
Для вывода списка похожих документов используйте системный тег [mod_moredoc] (можно использовать как в документах так и шаблоне рубрики).'; + $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'] = ''; +} + +/** + * Функция обработки тега модуля + * + */ +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; // Отключаем кеширование +} + +?> diff --git a/templates/index.php b/templates/index.php new file mode 100644 index 0000000..4ca25aa --- /dev/null +++ b/templates/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/templates/moredoc.tpl b/templates/moredoc.tpl new file mode 100644 index 0000000..17a8735 --- /dev/null +++ b/templates/moredoc.tpl @@ -0,0 +1,9 @@ +{if $moredoc} +

{#MOREDOC_NAME#}

+ +{/if} \ No newline at end of file