本文整理汇总了PHP中Smarty_Internal_Template::getTemplateDir方法的典型用法代码示例。如果您正苦于以下问题:PHP Smarty_Internal_Template::getTemplateDir方法的具体用法?PHP Smarty_Internal_Template::getTemplateDir怎么用?PHP Smarty_Internal_Template::getTemplateDir使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Smarty_Internal_Template
的用法示例。
在下文中一共展示了Smarty_Internal_Template::getTemplateDir方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: smarty_function_widget_exec
/**
* Plugin for Smarty
*
* @param array $aParams
* @param Smarty_Internal_Template $oSmartyTemplate
*
* @return string|null
*/
function smarty_function_widget_exec($aParams, $oSmartyTemplate)
{
if (!isset($aParams['name'])) {
trigger_error('Parameter "name" does not define in {widget ...} function', E_USER_WARNING);
return null;
}
$sWidgetName = $aParams['name'];
$aWidgetParams = isset($aParams['params']) ? $aParams['params'] : array();
foreach ($aParams as $sKey => $xValue) {
if ($sKey != 'name' && $sKey != 'params') {
$aWidgetParams[$sKey] = $xValue;
}
}
$sWidget = ucfirst(basename($sWidgetName));
$sTemplate = '';
$sDelegatedClass = E::ModulePlugin()->GetDelegate('widget', $sWidget);
if ($sDelegatedClass == $sWidget) {
// Пробуем получить делегата по старинке, для совместимости с LS
// * LS-compatible * //
$sDelegatedClass = E::ModulePlugin()->GetDelegate('block', $sWidget);
}
// Если делегатов нет, то определаем класс виджета
if ($sDelegatedClass == $sWidget) {
if (isset($aParams['params']) && isset($aParams['params']['plugin'])) {
$sPlugin = $aParams['params']['plugin'];
} else {
$sPlugin = '';
}
// Проверяем наличие класса виджета штатными средствами
$sWidgetClass = E::ModuleWidget()->FileClassExists($sWidget, $sPlugin, true);
if ($sWidgetClass) {
// Проверяем делегирование найденного класса
$sWidgetClass = E::ModulePlugin()->GetDelegate('widget', $sWidgetClass);
if ($sPlugin) {
$sPluginTplDir = Plugin::GetTemplateDir($sPlugin);
$sTemplate = $sPluginTplDir . 'tpls/widgets/widget.' . $sWidgetName . '.tpl';
if ($sFound = F::File_Exists('/widgets/widget.' . $sWidgetName . '.tpl', array($sPluginTplDir . 'tpls/', $sPluginTplDir))) {
$sTemplate = $sFound;
} else {
// * LS-compatible * //
$sLsTemplate = Plugin::GetTemplateDir($aParams['params']['plugin']) . '/blocks/block.' . $sWidgetName . '.tpl';
if (F::File_Exists($sLsTemplate)) {
$sTemplate = $sLsTemplate;
}
}
} else {
$sTemplate = E::ModulePlugin()->GetDelegate('template', 'widgets/widget.' . $sWidgetName . '.tpl');
$sTemplate = F::File_Exists($sTemplate, $oSmartyTemplate->getTemplateDir());
if (!$sTemplate) {
// * LS-compatible * //
$sLsTemplate = E::ModulePlugin()->GetDelegate('template', 'blocks/block.' . $sWidgetName . '.tpl');
if (F::File_Exists($sLsTemplate, $oSmartyTemplate->getTemplateDir())) {
$sTemplate = $sLsTemplate;
}
}
}
} else {
// * LS-compatible * //
// Класс не найден
if ($sPlugin) {
// Если класс виджета не найден, то пытаемся по старинке задать класс "LS-блока"
$sWidgetClass = 'Plugin' . ucfirst($aParams['params']['plugin']) . '_Block' . $sWidget;
} else {
// Если класс виджета не найден, то пытаемся по старинке задать класс "LS-блока"
$sWidgetClass = 'Block' . $sWidget;
}
// Проверяем делигирование найденного класса
$sWidgetClass = E::ModulePlugin()->GetDelegate('block', $sWidgetClass);
if (!$sTemplate) {
$sLsTemplate = E::ModulePlugin()->GetDelegate('template', 'blocks/block.' . $sWidgetName . '.tpl');
if (F::File_Exists($sLsTemplate, $oSmartyTemplate->getTemplateDir())) {
$sTemplate = $sLsTemplate;
}
}
}
} else {
$sWidgetClass = $sDelegatedClass;
}
// * Подключаем необходимый обработчик
/** @var Widget $oWidgetHandler */
$oWidgetHandler = new $sWidgetClass($aWidgetParams);
// * Запускаем обработчик
$sResult = $oWidgetHandler->Exec();
// Если обработчик ничего не вернул, то рендерим шаблон
if (!$sResult && $sTemplate) {
if ($aWidgetParams) {
$oSmartyTemplate->smarty->assign('aWidgetParams', $aWidgetParams);
}
$sResult = $oSmartyTemplate->smarty->fetch($sTemplate);
}
return $sResult;
}