本文整理匯總了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;
}