-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
177 additions
and
71 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,33 @@ | ||
# DLE-BlockProLight | ||
Облегченная версия модуля DLE-BlockPro для замены вывода новостей через shortstory | ||
Облегченная версия модуля DLE-BlockPro для замены вывода новостей через shortstory. | ||
Внимание, модуль работает только для вывода кратких новостей (вместо shortstory.tpl) | ||
|
||
![Release version](https://img.shields.io/github/v/release/dle-modules/DLE-BlockProLight?style=flat-square) | ||
![DLE](https://img.shields.io/badge/DLE-13.x-green.svg?style=flat-square "DLE Version") | ||
![License](https://img.shields.io/github/license/dle-modules/DLE-BlockProLight?style=flat-square) | ||
|
||
## Установка модуля | ||
|
||
1. Установить модуль [DLE-BlockPro](https://github.com/dle-modules/DLE-BlockPro/releases/latest) (требуется для работы). | ||
2. Устанавливаем как обычный плагин, файл **blockpro_light_plugin.zip** содержит всё необходимое для автоматической установки. | ||
|
||
## Использование модуля | ||
Для перевода кратких новостей на вывод через модуль blockpro достаточно прописать в `shortstory.tpl` следующий код: | ||
``` | ||
{blockpro-light} | ||
``` | ||
|
||
Для того, что бы передать дополнительные параметры в модуль, необходимо использовать такой тег: | ||
|
||
``` | ||
{blockpro-light params="param=value¶m1=value1"} | ||
``` | ||
Где **param=value¶m1=value1** - параметры стандартной строки подключения модуля. | ||
Например для отключения кеша и вывода статистики работы модуля в BlockPro используется такая строка подключения: | ||
``` | ||
{include file="engine/modules/base/blockpro.php?nocache=y&showstat=y"} | ||
``` | ||
А тег в BlockProLight будет таким: | ||
``` | ||
{blockpro-light params="nocache=y&showstat=y"} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<dleplugin> | ||
<name>BlockProLight</name> | ||
<description>Облегченная версия модуля BlockPro. | ||
Предназначен для вывода существующего списка новостей через шаблон модуля вместо стандартных шаблонов.</description> | ||
<icon>engine/skins/images/blockpro.png</icon> | ||
<version>1.1.0</version> | ||
<dleversion>13</dleversion> | ||
<versioncompare>greater</versioncompare> | ||
<upgradeurl>https://updates.pafnuty.name/check-bplight.php</upgradeurl> | ||
<filedelete>0</filedelete> | ||
<needplugin>BlockPro</needplugin> | ||
<mnotice>1</mnotice> | ||
<mysqlinstall><![CDATA[]]></mysqlinstall> | ||
<mysqlupgrade><![CDATA[]]></mysqlupgrade> | ||
<mysqlenable><![CDATA[]]></mysqlenable> | ||
<mysqldisable><![CDATA[]]></mysqldisable> | ||
<mysqldelete><![CDATA[]]></mysqldelete> | ||
<phpinstall><![CDATA[]]></phpinstall> | ||
<phpupgrade><![CDATA[]]></phpupgrade> | ||
<phpenable><![CDATA[]]></phpenable> | ||
<phpdisable><![CDATA[]]></phpdisable> | ||
<phpdelete><![CDATA[]]></phpdelete> | ||
<notice><![CDATA[<a href="https://github.com/dle-modules/DLE-BlockProLight/releases/latest" target="_blank">Release notes</a> | <a href="https://github.com/dle-modules/DLE-BlockProLight/blob/master/README.md" target="_blank">Readme</a>]]></notice> | ||
<file name="engine/engine.php"> | ||
<operation action="after"> | ||
<searchcode><![CDATA[$short_news_cache = false;]]></searchcode> | ||
<replacecode><![CDATA[// DLE-BlockProLight start | ||
$bpNewsList = []; | ||
// DLE-BlockProLight end]]></replacecode> | ||
</operation> | ||
</file> | ||
<file name="engine/modules/show.short.php"> | ||
<operation action="before"> | ||
<searchcode><![CDATA[if( stripos( $tpl->copy_template, "[xf" ) !== false OR stripos( $tpl->copy_template, "[ifxf" ) !== false ) {]]></searchcode> | ||
<replacecode><![CDATA[// DLE-BlockproLight start | ||
// По умолчанию вывод через модуль отключен. | ||
$blockpro_enabled = false; | ||
// Пустой массив для новостей blockpro | ||
$bpNewsList = []; | ||
// Если в шаблоне есть тег {blockpro-light} - значит нужно включить модуль. | ||
if (stripos($tpl->copy_template, "{blockpro-light") !== false) { | ||
$blockpro_enabled = true; | ||
// Сохраняем список новостей как переменную для blockpro | ||
$bpNewsList = $db->super_query($sql_select, true); | ||
// Проверяем, что что-то есть | ||
$news_found = count($bpNewsList) > 1; | ||
if ($news_found) { | ||
$arBpParams = []; | ||
$bpParams = ''; | ||
// Если в теге есть параметры, значит надо их учесть. | ||
// Например `{blockpro-light params="nocache=y&showstat=y"}` | ||
if (preg_match("#{blockpro-light params=['\"](.+?)['\"]#i", $tpl->copy_template, $match)) { | ||
$_bpParams = explode('&', $match[1]); | ||
foreach ($_bpParams as $bpParam) { | ||
$_param = explode('=', $bpParam); | ||
if ($_param[1]) { | ||
$arBpParams[$_param[0]] = $_param[1]; | ||
} | ||
} | ||
} | ||
// Если в параметрах нет шаблона, добавим тот, что указан для категории, но из папки blockpro | ||
if (!$arBpParams['template']) { | ||
// Шаблон по умолчанию | ||
$bpTplName = 'shortstory'; | ||
// Если для категории задан другой шаблон, подставим его | ||
if ($category_id and $cat_info[$category_id]['short_tpl'] != '') { | ||
$bpTplName = $cat_info[$category_id]['short_tpl']; | ||
} | ||
$arBpParams['template'] = 'blockpro/'.$bpTplName; | ||
} | ||
$_pbParams = []; | ||
foreach ($arBpParams as $key => $value) { | ||
$_pbParams[] = $key.'='.$value; | ||
} | ||
$bpParams = implode('&', $_pbParams); | ||
unset($_pbParams); | ||
unset($arBpParams); | ||
// Строка для загрузки модуля | ||
$bpTplString = 'engine/modules/base/blockpro.light.php?'.$bpParams; | ||
// Строка для подстановки в шаблон, что бы загрузить модуль через штатные средства DLE | ||
$tplIncludeString = '{include file="'.$bpTplString.'"}'; | ||
// Делаем одинаковыми переменные copy_template и template для того, что бы DLE не отстрелил `Filtered` | ||
$tpl->copy_template = $tpl->template = $tplIncludeString; | ||
// Массив, который будем передавать | ||
$tplArr = ['', $bpTplString]; | ||
// Установим корректный include_mode | ||
$tpl->include_mode = 'php'; | ||
// load_file вернёт уже скомпиленный код, поэтому можно сразу закинуть его в result | ||
$tpl->result['content'] = $tpl->load_file($tplArr); | ||
} | ||
} | ||
if (!$blockpro_enabled) { | ||
// DLE-BlockproLight end]]></replacecode> | ||
</operation> | ||
<operation action="before"> | ||
<searchcode><![CDATA[$tpl->clear();]]></searchcode> | ||
<replacecode><![CDATA[// DLE-BlockproLight start | ||
// Закрывающая скобка для условия `if (!$blockpro_enabled) {` разсположенного выше по коду | ||
} | ||
// DLE-BlockproLight end]]></replacecode> | ||
<searchcount>1</searchcount> | ||
<replacecount>1</replacecount> | ||
</operation> | ||
</file> | ||
</dleplugin> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters