Page 1 of 1
Где smarty теги меняются на html
Posted: Mon Feb 21, 2011 12:22 pm
by callado
Всем доброго времени суток!
Ничего не нашел на форуме на эту тему. Вопрос достаточно общий, но для примера можно взять модуль FrontEndUsers. В нем, в админ-панеле, есть шаблон changesettings, в котором есть такая строчка
Code: Select all
{$control->control}{$control->addtext}
А на готовой странице уже выводится html
Code: Select all
<input type="text" class="cms_textfield" name="m4cfb9feu_input_username" id="m4cfb9feu_input_username" value="test@test" size="40" maxlength="40" disabled="disabled"/>
Где и по какому принципу smarty заменяется на html? Как определяется, что это input и по какому принципу задаются его параметры?
Собственно задача: научиться менять параметры html-тегов.
Спасибо!
Re: Где smarty теги меняются на html
Posted: Mon Feb 21, 2011 4:16 pm
by glacies
$control->control - это переменная. В шаблоне просто указано, что нужно вывести ее значение, а значение задается в модуле через $this->smarty->assign('name','value'). Само же value, которое выдает html-код тега uinput для вашего примера, по всей вероятности возвращается функцией типа $this->CreateInputSubmit(параметры).
Re: Где smarty теги меняются на html
Posted: Wed Feb 23, 2011 6:15 am
by callado
glacies wrote:$control->control - это переменная. В шаблоне просто указано, что нужно вывести ее значение, а значение задается в модуле через $this->smarty->assign('name','value'). Само же value, которое выдает html-код тега uinput для вашего примера, по всей вероятности возвращается функцией типа $this->CreateInputSubmit(параметры).
Спасибо большое, вы на самом деле мне очень помогли сдвинуться с мёртвой точки в этом направлении) Я как-то завис совсем на этом моменте, теперь всё яснее.
Re: Где smarty теги меняются на html
Posted: Wed Mar 02, 2011 9:20 pm
by gala
glacies wrote:$control->control - это переменная. В шаблоне просто указано, что нужно вывести ее значение, а значение задается в модуле через $this->smarty->assign('name','value'). Само же value, которое выдает html-код тега uinput для вашего примера, по всей вероятности возвращается функцией типа $this->CreateInputSubmit(параметры).
Я вот тоже зависла здесь. Не могли бы вы немного подробнее объяснить где редактируеся шаблон. Просто в моем шаблоне $control->control - это несколько переменных(SelfRegistration модуль) и я никак не могу понять как мне настроить layout шаблонa
Заранее благодарна
Галя
Re: Где smarty теги меняются на html
Posted: Wed Mar 02, 2011 10:50 pm
by glacies
А что такое "layout шаблона"?
Если нужно расположить поля "красиво" и известны все, то убираем из шаблона конструкцию {foreach from=$controls item=control}…{/foreach} и ручками прописываем вывод для каждого элемента. Кстати, как видите, $controls - массив, состоящий из StdClass'ов, {$controls|print_r} в помощь.
А если нужно просто применять стиль, все input, которые, к примеру, генерятся фунцией CreateInputText имеют class="cms_textfield", а id можно посмотреть.
Re: Где smarty теги меняются на html
Posted: Fri Mar 04, 2011 9:35 pm
by gala
glacies wrote:А что такое "layout шаблона"?
Если нужно расположить поля "красиво" и известны все, то убираем из шаблона конструкцию {foreach from=$controls item=control}…{/foreach} и ручками прописываем вывод для каждого элемента. Кстати, как видите, $controls - массив, состоящий из StdClass'ов, {$controls|print_r} в помощь.
А если нужно просто применять стиль, все input, которые, к примеру, генерятся фунцией CreateInputText имеют class="cms_textfield", а id можно посмотреть.
Огромное спасибо за коментарий, но я ничего не поняла, если честно. Я только учу php и доходить проходиться до многого в процессе.
Спрошу просто: как поменять размер поля адресс. Я понимаю как поменять длинну каждого поля(делала прямо в базе), но размер textarea, я не понимаю как поменять.
Еще. Я понимаю что передается массив, но я думала он состоит из переменных($name, $adress, и.т.д). Тогда бы я могла тупо сделать "красиво" каждое поле/input html'ом , привязать к каждому переменную и послать весь массив/array в базу.
Я извинаюсь если глупые вопросы очень.
Я просто писала на pl/sql кое-что и у меня видимо мозги в этом направлении работают, хотя я и понимаю что логика другая.
Еще раз спасибо за помощь. Очень, очень благодарна.
Re: Где smarty теги меняются на html
Posted: Thu Mar 10, 2011 9:31 am
by afandi
gala wrote:
Еще. Я понимаю что передается массив, но я думала он состоит из переменных($name, $adress, и.т.д). Тогда бы я могла тупо сделать "красиво" каждое поле/input html'ом , привязать к каждому переменную и послать весь массив/array в базу.
Чтобы не думать а точно знать как устроенна переменная то можно в шаблоне использовать следующий код
Code: Select all
<pre>{$smarty_variable|print_r}</pre>
Тогда вы увидите из чего состоит ваш массив.
И еще полезно будет прочитать
Руководство по смарти
Re: Где smarty теги меняются на html
Posted: Thu Mar 10, 2011 9:07 pm
by gala
Чтобы не думать а точно знать как устроенна переменная то можно в шаблоне использовать следующий код
Code: Select all
<pre>{$smarty_variable|print_r}</pre>
Тогда вы увидите из чего состоит ваш массив.
И еще полезно будет прочитать
Руководство по смарти
Большое спасибо за ваши подсказки!
Удачи.
Re: Где smarty теги меняются на html
Posted: Sat Mar 12, 2011 6:27 am
by Hippy-core
gala wrote:
Спрошу просто: как поменять размер поля адресс. Я понимаю как поменять длинну каждого поля(делала прямо в базе), но размер textarea, я не понимаю как поменять.
Размеры элементов input и textarea можно через CSS.
Оформление->Стили->Ваш стиль->