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