From 1c9cc12544c1f3d2bb3864440e7769df2fe63aa7 Mon Sep 17 00:00:00 2001 From: Repellent Date: Wed, 18 Feb 2026 22:15:16 +0500 Subject: [PATCH] Initial commit --- README.md | 15 +++++- index.php | 4 ++ info.php | 20 ++++++++ lang/index.php | 4 ++ lang/ru.txt | 6 +++ lang/ua.txt | 7 +++ module.php | 111 ++++++++++++++++++++++++++++++++++++++++++ templates/index.php | 4 ++ templates/moredoc.tpl | 9 ++++ 9 files changed, 178 insertions(+), 2 deletions(-) create mode 100644 index.php create mode 100644 info.php create mode 100644 lang/index.php create mode 100644 lang/ru.txt create mode 100644 lang/ua.txt create mode 100644 module.php create mode 100644 templates/index.php create mode 100644 templates/moredoc.tpl diff --git a/README.md b/README.md index b77ed95..928caa2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,14 @@ -# moredoc +### moredoc -Модуль Похожие документы Только для AVE.CMS ALT \ No newline at end of file +## Модуль Похожие документы v1.26.0 + + +### Данный модуль предназначен для вывода списка похожих документов относительно текущего. + + * Связующим элементом документов является первое слово из поля Ключевые слова. + * Результат вывода кешируется средствами Smarty.

Для вывода списка похожих документов используйте системный тег [mod_moredoc] (можно использовать как в документах так и шаблоне рубрики). +### Changelog: + +03.09.2019 - версия 1.26.0 - адаптация для версии ave.cms v3.26 + +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/info.php b/info.php new file mode 100644 index 0000000..829047a --- /dev/null +++ b/info.php @@ -0,0 +1,20 @@ + 'moredoc', + 'ModuleVersion' => '1.26.0', + 'ModuleAutor' => 'AVE.cms Team', + 'ModuleCopyright' => '© 2007-' . date('Y') . ' AVE.cms', + 'ModuleStatus' => 1, + 'ModuleIsFunction' => 1, + 'ModuleTemplate' => 0, + 'ModuleAdminEdit' => 0, + 'ModuleFunction' => 'mod_moredoc', + 'ModuleTag' => '[mod_moredoc]', + 'ModuleTagLink' => null, + 'ModuleAveTag' => '#\\\[mod_moredoc]#', + 'ModulePHPTag' => '' + ); +?> \ 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..b7a22ba --- /dev/null +++ b/lang/ru.txt @@ -0,0 +1,6 @@ +[name] +MODULE_NAME = "Ссылки по теме" +MODULE_DESCRIPTION = "Данный модуль предназначен для вывода списка похожих документов относительно текущего. Связующим элементом документов является первое слово из поля Ключевые слова. Результат вывода кешируется средствами Smarty.

Для вывода списка похожих документов используйте системный тег [mod_moredoc] (можно использовать как в документах так и шаблоне рубрики)." + +[module] +MOREDOC_NAME = "Возможно Вас заинтересует:" \ No newline at end of file diff --git a/lang/ua.txt b/lang/ua.txt new file mode 100644 index 0000000..227deed --- /dev/null +++ b/lang/ua.txt @@ -0,0 +1,7 @@ +[name] +MODULE_NAME = "Ссылки по теме" +MODULE_DESCRIPTION = "Данный модуль предназначен для вывода списка похожих документов относительно текущего. Связующим элементом документов является первое слово из поля Ключевые слова. Результат вывода кешируется средствами Smarty.

Для вывода списка похожих документов используйте системный тег [mod_moredoc] (можно использовать как в документах так и шаблоне рубрики)." + + +[module] +MOREDOC_NAME = "Можливо Вас зацікавить:" \ No newline at end of file diff --git a/module.php b/module.php new file mode 100644 index 0000000..9335808 --- /dev/null +++ b/module.php @@ -0,0 +1,111 @@ +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); + $lang_file = BASE_DIR . '/modules/moredoc/lang/' . $_SESSION['user_language'] . '.txt'; + $AVE_Template->config_load($lang_file, 'module'); + } + // Выводим шаблон 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