Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

rss

Вы не зашли.

Объявление

#1 2010-12-11 20:22:25

Wolverine
Модератор
Откуда: Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3538
Рейтинг :   160 
Профиль  Вебсайт

Расширить работу locatePluginTemplates

Имеем пять блоков top_news_X, для каждого блока своя папка с шаблонами.

Соответственно locatePluginTemplates непригоден для автоматического получения пути к шаблону. Если в каталоге плагина это еще можно решить засунув все в skins и отправляя в параметре $skin имя блока, то с шаблонами в папке основного шаблона будет беда, так как функция жестко ищет в каталоге /plugins/$plugin.

Это можно обойти если в $plugin передавать 'top_news/'.$blockName, тогда с шаблонами в основном шаблоне будет ОК, но с шаблонами в каталоге плагина будет беда. От skins отказываемся.

Но и это можно обойти, если структуру шаблонов в каталоге плагина соорудить в виде /engine/plugins/top_news/top_news1/tpl/top_news.tpl

И оно в общем-то работает, если не считать, что я работаю со skins, которые для этого не предназначены, а также на деформированную структуру директории плагина (вместо того, чтобы создавать папки в tpl, я в корне делаю папки и в них папка tpl), что в общем-то выглядит через жопу.

Пока использую свою реализацию этой функции

Код:

function myLocatePluginTemplates($tname, $plugin, $localsource = 0, $blockName = '', $skin = '') {
    global $config;

    $tpath = array();
    foreach ($tname as $fn) {
        $fnc = (substr($fn, 0, 1) == ':')?substr($fn,1):($fn.'.tpl');
        if (!$localsource && is_readable(tpl_site.'plugins/'.$plugin.'/'.($blockName?$blockName.'/':'').$fnc)) {
            $tpath[$fn] = tpl_site.'plugins/'.$plugin.'/'.($blockName?$blockName.'/':'');
            $tpath['url:'.$fn] = tpl_url.'/plugins/'.$plugin.($blockName?$blockName:'');
        } else if (is_readable(extras_dir.'/'.$plugin.'/tpl/'.($skin?'skins/'.$skin.'/':'').($blockName?$blockName.'/':'').$fnc)) {
            $tpath[$fn] = extras_dir.'/'.$plugin.'/tpl/'.($skin?'skins/'.$skin.'/':'').($blockName?$blockName.'/':'');
            $tpath['url:'.$fn] = admin_url.'/plugins/'.$plugin.'/tpl'.($skin?'/skins/'.$skin:'').($blockName?$blockName:'');
        }
    }
    return $tpath;
}

Неактивен

 

#2 2011-01-04 16:02:08

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

Re: Расширить работу locatePluginTemplates

Выложен патч в SVN - ChangeSet 721
Тестируй.

Неактивен

 

#3 2011-01-05 00:08:53

Wolverine
Модератор
Откуда: Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3538
Рейтинг :   160 
Профиль  Вебсайт

Re: Расширить работу locatePluginTemplates

vitaly, пока не ставил. Посмотрел только код. Нет ли тут баги? В самом последнем тернарном операторе. Вместо  ($block?$skin:'') вроде как должно быть  ($block?$block:'')

Код:

// Text SKIN+BLOCK
        $tsb = ((($skin != '')||($block != ''))?'/':'').
                ($skin?'skins/'.$skin:'').
                ((($skin != '') && ($block != ''))?'/':'').
                ($block?$skin:'');

Неактивен

 

#4 2011-01-05 00:22:43

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

Re: Расширить работу locatePluginTemplates

Действительно ошибка, исправил.

Неактивен

 

#5 2011-01-06 21:51:26

Wolverine
Модератор
Откуда: Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3538
Рейтинг :   160 
Профиль  Вебсайт

Re: Расширить работу locatePluginTemplates

Полет нормальный

Неактивен

 

#6 2011-01-10 13:34:24

Wolverine
Модератор
Откуда: Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3538
Рейтинг :   160 
Профиль  Вебсайт

Re: Расширить работу locatePluginTemplates

vitaly, косяк в плагине tags возникает при такой вариации этой функции, если выставить использование шаблона из основного шаблона сайта. Так как в старом варианте /skins/ добавлялся в URL только если шаблон брался из папки с плагином, а сейчас skins требуется и в папке с шаблоном, которого нет даже в дефолтном шаблоне. /templates/default/plugins/tags

Решается созданием skins/default в папке с шаблоном и переносом всех файлов или проверкой на localsource в функции. Но skins по идее наоборот в этой вариации отрабатывает верно, а раньше был косяк.

Неактивен

 

#7 2011-02-01 03:19:48

vitaly
Администратор
Откуда: Россия
Зарегистрирован: 2008-10-08
Сообщений: 2785
Рейтинг :   115 
Профиль

Re: Расширить работу locatePluginTemplates

Wolverine, SVN ChangeSet 745 - функцию опять немного изменил, теперь должна работать более логично:

Код:

% Изменение в функции locatePluginTemplates - при указании localsource = 0 и skin != функция будет искать файл в следующей последовательсти:
templates/<ID>/plugins/<PLUGIN>/skins/<SKIN>/<FILE>
templates/<ID>/plugins/<PLUGIN>/<FILE>
engine/plguins/<PLUGIN>/tpl/skins/<SKIN>/<FILE>

это позволит плагинам иметь несколько скинов в собственном каталоге, а в шаблоне сайта - хранить файлы без каталога skins/

проверь, plz.

Неактивен

 

#8 2011-02-02 14:23:21

Wolverine
Модератор
Откуда: Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3538
Рейтинг :   160 
Профиль  Вебсайт

Re: Расширить работу locatePluginTemplates

Работает

Неактивен

 

#9 2011-07-08 14:40:44

Wolverine
Модератор
Откуда: Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3538
Рейтинг :   160 
Профиль  Вебсайт

Re: Расширить работу locatePluginTemplates

Еще хочется более информативный вывод, когда шаблонизатор не может подгрузить шаблон, которого нет, а то "Директория () не существует!" вообще не несет никакой смысловой нагрузки neutral

Неактивен

 

Board footer

Powered by FluxBB

[ Generated in 0.012 seconds, 17 queries executed ]