Initial commit

This commit is contained in:
2026-02-18 22:15:16 +05:00
parent fa0b483f13
commit 1c9cc12544
9 changed files with 178 additions and 2 deletions

View File

@@ -1,3 +1,14 @@
# moredoc
### moredoc
Модуль Похожие документы Только для AVE.CMS ALT
## Модуль Похожие документы v1.26.0
### Данный модуль предназначен для вывода списка похожих документов относительно текущего.
* Связующим элементом документов является первое слово из поля Ключевые слова.
* Результат вывода кешируется средствами Smarty.<BR /><BR />Для вывода списка похожих документов используйте системный тег <strong>[mod_moredoc]</strong> (можно использовать как в документах так и шаблоне рубрики).
### Changelog:
03.09.2019 - версия 1.26.0 - адаптация для версии ave.cms v3.26
01.03.2013 - версия 1.0

4
index.php Normal file
View File

@@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

20
info.php Normal file
View File

@@ -0,0 +1,20 @@
<?php
if (! defined('BASE_DIR'))
exit;
$module = array(
'ModuleSysName' => 'moredoc',
'ModuleVersion' => '1.26.0',
'ModuleAutor' => 'AVE.cms Team',
'ModuleCopyright' => '&copy; 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' => '<?php mod_moredoc(); ?>'
);
?>

4
lang/index.php Normal file
View File

@@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

6
lang/ru.txt Normal file
View File

@@ -0,0 +1,6 @@
[name]
MODULE_NAME = "Ссылки по теме"
MODULE_DESCRIPTION = "Данный модуль предназначен для вывода списка похожих документов относительно текущего. Связующим элементом документов является первое слово из поля Ключевые слова. Результат вывода кешируется средствами Smarty.<BR /><BR />Для вывода списка похожих документов используйте системный тег <strong>[mod_moredoc]</strong> (можно использовать как в документах так и шаблоне рубрики)."
[module]
MOREDOC_NAME = "Возможно Вас заинтересует:"

7
lang/ua.txt Normal file
View File

@@ -0,0 +1,7 @@
[name]
MODULE_NAME = "Ссылки по теме"
MODULE_DESCRIPTION = "Данный модуль предназначен для вывода списка похожих документов относительно текущего. Связующим элементом документов является первое слово из поля Ключевые слова. Результат вывода кешируется средствами Smarty.<BR /><BR />Для вывода списка похожих документов используйте системный тег <strong>[mod_moredoc]</strong> (можно использовать как в документах так и шаблоне рубрики)."
[module]
MOREDOC_NAME = "Можливо Вас зацікавить:"

111
module.php Normal file
View File

@@ -0,0 +1,111 @@
<?php
/**
* AVE.cms - Модуль Похожие документы
*
* @package AVE.cms
* @subpackage module_MoreDoc
* @filesource
*/
if(!defined('BASE_DIR')) exit;
/**
* Функция обработки тега модуля
*
*/
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 . '&amp;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; // Отключаем кеширование
}
?>

4
templates/index.php Normal file
View File

@@ -0,0 +1,4 @@
<?php
header('Location:/');
exit;
?>

9
templates/moredoc.tpl Normal file
View 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}