Initial commit
This commit is contained in:
15
README.md
15
README.md
@@ -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
|
||||
20
info.php
Normal file
20
info.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
if (! defined('BASE_DIR'))
|
||||
exit;
|
||||
|
||||
$module = array(
|
||||
'ModuleSysName' => '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' => '<?php mod_moredoc(); ?>'
|
||||
);
|
||||
?>
|
||||
4
lang/index.php
Normal file
4
lang/index.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
header('Location:/');
|
||||
exit;
|
||||
?>
|
||||
6
lang/ru.txt
Normal file
6
lang/ru.txt
Normal 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
7
lang/ua.txt
Normal 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
111
module.php
Normal 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 . '&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
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