Пользовательские переменные
15.09.2011Голосование
| Тип | Вопрос |
| Состояние | Открыт |
| Приоритет | Высокий |
| Версия | 4.92 |
| Система | * |
| Воспроизводимость | Нет |
| Автор | Seo Dizainer |
| Исполнитель | Блоголётчик |
Все пытаюсь создать тему трансформер, дизайн уже сделал, дело за малым настроить вывод но увы...
Не получается заставить кастомные теги выводить разные куски шаблона индех.тмл для разных видов
Нужно выводить разные куски кода для разных видов:
не выводит:(((
Пробовал еще вариант подмены шаблона для разных видов:
$template = {@import($custom.tml)}
$custom.tml = [index.tml]
$custom.tml.admin = [
$title = [Установка значений для тега $custom.tml]
$type = [combo]
$values = [index.tml, left.tml, right.tml]
]
Так вообще ругается.
Может у тебя есть идеи каким образом для разных видов менять класс у основного контента и одновременно убирать кусок кода с лишним сайдбаром
Код
$custom.main = [<div id="main">
<div id="middle"><div id="content">$template.content</div></div>
<div id="ls" class="sbar">$template.sidebar</div>
<div id="rs" class="sbar">$template.sidebar</div>
</div>]
$custom.main.admin = [
$title = [Установка значений для тега $custom.main]
$type = [radio]
$values = [
<div id="main">
<div id="middle"><div id="content">$template.content</div></div>
<div id="ls" class="sbar">$template.sidebar</div>
<div id="rs" class="sbar">$template.sidebar</div>
</div>,
<div id="sidebar-left">
<div id="middle"><div id="content">$template.content</div></div>
<div id="ls" class="sbar">$template.sidebar</div>
</div>,
<div id="sidebar-right">
<div id="middle"><div id="content">$template.content</div></div>
<div id="rs" class="sbar">$template.sidebar</div>
</div>
]
]
← Ранее Сборщик CSS в планах
Позже Релиз новой темы →
Комментарии (7) на запись “Пользовательские переменные”
Оставить комментарий
Во первых я не предпологал, что в админке можно выбирать html (кроме редактирования текста) - думаю надо заменить все угловые скобки и кавычки на html сущности и это наверно сработает (надо тестировать). Подумаю как поправить в следующей версии. В качестве значений предпологал обычный текст
Далее выбор главного шаблона в комбобоксе - ругается скорее всего на отсутствие файла, следует поступить совсем по иному: вместо import указать таким образом:
$template = [$custom.tml]
ты же указал в качестве шаблона файл, который не существует, а надо просто текст. Но это замечание на будущее - все же твоя ошибка.
Далее - то, что ты указал имена файлов в качестве вариантов для тега вовсе не означает, что эти файлы обязаны быть считаны -собственно это становится понятно только из твоих объяснений. Для решения твоей задачи следует вначале для каждого файла добавить свой тег, вот примерно так:
$custom.index = {@import(index.tml)}
$custom.left = {@import(left.tml)}
$custom.right = {@import(right.tml)}
а шаблон админки длсделать таким вот:
$custom.tml.admin = [
$title = [Установка значений для тега $custom.tml]
$type = [combo]
$values = [$custom.index, $custom.left, $custom.right]
]
Я это не тестировал, но теоритически обязано работать сообразно идеологии. Если будут проблемы - пиши, я поправлю чтобы работало.
В таком варианте:
$custom.tml = {@import(index.tml)}
$custom.index = {@import(index.tml)}
$custom.left = {@import(left.tml)}
$custom.right = {@import(right.tml)}
$custom.tml.admin = [
$title = [Установка значений для тега $custom.tml]
$type = [combo]
$values = [$custom.index, $custom.left, $custom.right]
]
$template = $custom.tml
контент грузит после применения, хотя долго думает и довольно долго загружается, но без сайдбаров и выводит ошибку:
Caught exception:
Unknown widget 'links' and template '' in -1 sidebar
<h1>0 lib\kernel.templates.php(979): tdata->error('Unknown widget ...')</h1>
<h1>1 lib\kernel.templates.php(961): ttheme->getwidgettml(0, 'links', '')</h1>
<h1>2 lib\kernel.templates.php(1531): ttheme->getwidget('<a title="?????...', '<!--widgetconte...', 'links', 0)</h1>
<h1>3 lib\kernel.templates.php(1497): twidgets->getajax(4, 0)</h1>
<h1>4 lib\kernel.templates.php(1405): twidgets->getsidebarcontent(Array, 0, false)</h1>
<h1>5 lib\kernel.templates.php(1396): twidgets->getsidebarindex(Object(tadminplugins), Object(tview), 0)</h1>
<h1>6 lib\kernel.templates.php(486): twidgets->getsidebar(Object(tadminplugins), Object(tview))</h1>
<h1>7 lib\kernel.templates.php(442): ttemplate->getsidebar()</h1>
<h1>8 lib\kernel.templates.php(797): ttemplate->__get('sidebar')</h1>
<h1>9 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>10 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '<!DOCTYPE html ...')</h1>
<h1>11 lib\kernel.templates.php(787): ttheme->parse('<!DOCTYPE html ...')</h1>
<h1>12 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>13 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '$custom.tml')</h1>
<h1>14 lib\kernel.templates.php(852): ttheme->parse('$custom.tml')</h1>
<h1>15 lib\kernel.templates.php(470): ttheme->gethtml(Object(tadminplugins))</h1>
<h1>16 lib\kernel.php(1852): ttemplate->request(Object(tadminplugins))</h1>
<h1>17 lib\kernel.php(1814): turlmap->GenerateHTML(Array)</h1>
<h1>18 lib\kernel.php(1725): turlmap->printcontent(Array)</h1>
<h1>19 lib\kernel.php(1714): turlmap->dorequest('/admin/plugins/')</h1>
<h1>20 index.php(81): turlmap->request('site.ru', '/admin/plugins/')</h1>
<h1>21 {main}Caught exception:</h1>
Unknown widget 'categories' and template '' in 0 sidebar
<h1>0 lib\kernel.templates.php(979): tdata->error('Unknown widget ...')</h1>
<h1>1 lib\kernel.templates.php(961): ttheme->getwidgettml(1, 'categories', '')</h1>
<h1>2 lib\kernel.templates.php(1531): ttheme->getwidget('<a title="?????...', '<!--widgetconte...', 'categories', 1)</h1>
<h1>3 lib\kernel.templates.php(1497): twidgets->getajax(1, 1)</h1>
<h1>4 lib\kernel.templates.php(1405): twidgets->getsidebarcontent(Array, 1, false)</h1>
<h1>5 lib\kernel.templates.php(1396): twidgets->getsidebarindex(Object(tadminplugins), Object(tview), 1)</h1>
<h1>6 lib\kernel.templates.php(486): twidgets->getsidebar(Object(tadminplugins), Object(tview))</h1>
<h1>7 lib\kernel.templates.php(442): ttemplate->getsidebar()</h1>
<h1>8 lib\kernel.templates.php(797): ttemplate->__get('sidebar')</h1>
<h1>9 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>10 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '<!DOCTYPE html ...')</h1>
<h1>11 lib\kernel.templates.php(787): ttheme->parse('<!DOCTYPE html ...')</h1>
<h1>12 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>13 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '$custom.tml')</h1>
<h1>14 lib\kernel.templates.php(852): ttheme->parse('$custom.tml')</h1>
<h1>15 lib\kernel.templates.php(470): ttheme->gethtml(Object(tadminplugins))</h1>
<h1>16 lib\kernel.php(1852): ttemplate->request(Object(tadminplugins))</h1>
<h1>17 lib\kernel.php(1814): turlmap->GenerateHTML(Array)</h1>
<h1>18 lib\kernel.php(1725): turlmap->printcontent(Array)</h1>
<h1>19 lib\kernel.php(1714): turlmap->dorequest('/admin/plugins/')</h1>
<h1>20 index.php(81): turlmap->request('site.ru', '/admin/plugins/')</h1>
<h1>21 {main}
А страницу с видами вообще не грузит, вместо нее портянка ошибок:
Notice: Undefined index: index in X:\home\site.ru\www\lib\admin.views.class.php on line 60
[Денвер: показать возможную причину ошибки]
Notice: Undefined index: index in X:\home\site.ru\www\lib\admin.views.class.php on line 76
Notice: Undefined index: index in X:\home\site.ru\www\lib\admin.views.class.php on line 79
Caught exception:
Path "content.admin." not found
<h1>0 lib\kernel.templates.php(1049): toptions->trace('Path "content.a...')</h1>
<h1>1 lib\kernel.templates.php(1072): tthemeprops->error('content.admin.')</h1>
<h1>2 lib\kernel.admin.php(571): tthemeprops->__get('')</h1>
<h1>3 lib\admin.views.class.php(80): tadminhtml->getinput(NULL, 'custom_1_index', '<!DOCTYPE html ...', '')</h1>
<h1>4 lib\admin.views.class.php(209): tadminviews->get_custom(1)</h1>
<h1>5 lib\menu.class.php(386): tadminviews->getcontent()</h1>
<h1>6 lib\kernel.templates.php(797): tmenu->__get('content')</h1>
<h1>7 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>8 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '<div class="pos...')</h1>
<h1>9 lib\kernel.templates.php(845): ttheme->parse('<div class="pos...')</h1>
<h1>10 lib\menu.class.php(462): ttheme::parsevar('menu', Object(tadminviews), '<div class="pos...')</h1>
<h1>11 lib\kernel.admin.php(182): tmenu->getcont()</h1>
<h1>12 lib\kernel.templates.php(598): tadminmenu->getcont()</h1>
<h1>13 lib\kernel.templates.php(442): ttemplate->getcontent()</h1>
<h1>14 lib\kernel.templates.php(797): ttemplate->__get('content')</h1>
<h1>15 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>16 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '<!DOCTYPE html ...')</h1>
<h1>17 lib\kernel.templates.php(787): ttheme->parse('<!DOCTYPE html ...')</h1>
<h1>18 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>19 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '$custom.tml')</h1>
<h1>20 lib\kernel.templates.php(852): ttheme->parse('$custom.tml')</h1>
<h1>21 lib\kernel.templates.php(470): ttheme->gethtml(Object(tadminviews))</h1>
<h1>22 lib\kernel.php(1852): ttemplate->request(Object(tadminviews))</h1>
<h1>23 lib\kernel.php(1814): turlmap->GenerateHTML(Array)</h1>
<h1>24 lib\kernel.php(1725): turlmap->printcontent(Array)</h1>
<h1>25 lib\kernel.php(1714): turlmap->dorequest('/admin/views/')</h1>
<h1>26 index.php(81): turlmap->request('site.ru', '/admin/views/')</h1>
<h1>27 {main}Caught exception:</h1>
Path "content.admin." not found
<h1>0 lib\kernel.templates.php(1049): toptions->trace('Path "content.a...')</h1>
<h1>1 lib\kernel.templates.php(1072): tthemeprops->error('content.admin.')</h1>
<h1>2 lib\kernel.admin.php(571): tthemeprops->__get('')</h1>
<h1>3 lib\admin.views.class.php(80): tadminhtml->getinput(NULL, 'custom_1_index', '<!DOCTYPE html ...', '')</h1>
<h1>4 lib\admin.views.class.php(209): tadminviews->get_custom(1)</h1>
<h1>5 lib\menu.class.php(386): tadminviews->getcontent()</h1>
<h1>6 lib\kernel.templates.php(797): tmenu->__get('content')</h1>
<h1>7 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>8 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '<div class="pos...')</h1>
<h1>9 lib\kernel.templates.php(845): ttheme->parse('<div class="pos...')</h1>
<h1>10 lib\menu.class.php(462): ttheme::parsevar('menu', Object(tadminviews), '<div class="pos...')</h1>
<h1>11 lib\kernel.admin.php(182): tmenu->getcont()</h1>
<h1>12 lib\kernel.templates.php(598): tadminmenu->getcont()</h1>
<h1>13 lib\kernel.templates.php(442): ttemplate->getcontent()</h1>
<h1>14 lib\kernel.templates.php(797): ttemplate->__get('content')</h1>
<h1>15 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>16 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '<!DOCTYPE html ...')</h1>
<h1>17 lib\kernel.templates.php(787): ttheme->parse('<!DOCTYPE html ...')</h1>
<h1>18 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>19 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '$custom.tml')</h1>
<h1>20 lib\kernel.templates.php(852): ttheme->parse('$custom.tml')</h1>
<h1>21 lib\kernel.templates.php(470): ttheme->gethtml(Object(tadminviews))</h1>
<h1>22 lib\kernel.php(1852): ttemplate->request(Object(tadminviews))</h1>
<h1>23 lib\kernel.php(1814): turlmap->GenerateHTML(Array)</h1>
<h1>24 lib\kernel.php(1725): turlmap->printcontent(Array)</h1>
<h1>25 lib\kernel.php(1714): turlmap->dorequest('/admin/views/')</h1>
<h1>26 index.php(81): turlmap->request('site.ru', '/admin/views/')</h1>
<h1>27 {main}Caught exception:</h1>
Path "content.admin." not found
<h1>0 lib\kernel.templates.php(1049): toptions->trace('Path "content.a...')</h1>
<h1>1 lib\kernel.templates.php(1094): tthemeprops->error('content.admin.')</h1>
<h1>2 [internal function]: tthemeprops->__tostring()</h1>
<h1>3 lib\kernel.admin.php(575): strtr(Object(tthemeprops), Array)</h1>
<h1>4 lib\admin.views.class.php(80): tadminhtml->getinput(NULL, 'custom_1_index', '<!DOCTYPE html ...', '')</h1>
<h1>5 lib\admin.views.class.php(209): tadminviews->get_custom(1)</h1>
<h1>6 lib\menu.class.php(386): tadminviews->getcontent()</h1>
<h1>7 lib\kernel.templates.php(797): tmenu->__get('content')</h1>
<h1>8 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>9 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '<div class="pos...')</h1>
<h1>10 lib\kernel.templates.php(845): ttheme->parse('<div class="pos...')</h1>
<h1>11 lib\menu.class.php(462): ttheme::parsevar('menu', Object(tadminviews), '<div class="pos...')</h1>
<h1>12 lib\kernel.admin.php(182): tmenu->getcont()</h1>
<h1>13 lib\kernel.templates.php(598): tadminmenu->getcont()</h1>
<h1>14 lib\kernel.templates.php(442): ttemplate->getcontent()</h1>
<h1>15 lib\kernel.templates.php(797): ttemplate->__get('content')</h1>
<h1>16 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>17 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '<!DOCTYPE html ...')</h1>
<h1>18 lib\kernel.templates.php(787): ttheme->parse('<!DOCTYPE html ...')</h1>
<h1>19 [internal function]: ttheme->parsecallback(Array)</h1>
<h1>20 lib\kernel.templates.php(809): preg_replace_callback('/\$([a-zA-Z]\w*...', Array, '$custom.tml')</h1>
<h1>21 lib\kernel.templates.php(852): ttheme->parse('$custom.tml')</h1>
<h1>22 lib\kernel.templates.php(470): ttheme->gethtml(Object(tadminviews))</h1>
<h1>23 lib\kernel.php(1852): ttemplate->request(Object(tadminviews))</h1>
<h1>24 lib\kernel.php(1814): turlmap->GenerateHTML(Array)</h1>
<h1>25 lib\kernel.php(1725): turlmap->printcontent(Array)</h1>
<h1>26 lib\kernel.php(1714): turlmap->dorequest('/admin/views/')</h1>
<h1>27 index.php(81): turlmap->request('site.ru', '/admin/views/')</h1>
<h1>28 {main}</h1>
Catchable fatal error: Method tthemeprops::__toString() must return a string value in X:\home\site.ru\www\lib\kernel.admin.php on line 575
Мне в принципе без разницы какой из методов будет работать или с подменой индекс.тмл или с хтмл кодом в кастом тегах, поэтому оба варианта можешь не реализовывать, а тот который легче и проще.
Во первых пока исключи из шаблона кастомного тега тип radio - в текущем релизе не потдерживается, во вторых заключи в скобки (любые квадратные или круглые или фигурные) декларацию
$template = [$custom.tml]
без них декларация не является валидной и будет игнорироваться. обязательно предварительно инсталируй плагин очистки кеша
У меня тип не радио а комбо, и этот твой вариант со скобками тоже не спасает :(, я уже по разному пробовал, куда ошибок начинается как и в предыдущем варианте с:
Caught exception:
Unknown widget 'links' and template '' in -1 sidebar
.......
Я уже не буду приводить эту кучу кода кажется ошибки идентичны, ладно буду ждать следующего релиза, когда в кастомных тегах можно будет хтмл писать, может тот вариант будет надежней, чем замена шаблона