Где smarty теги меняются на html

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
callado
New Member
New Member
Posts: 2
Joined: Mon Feb 21, 2011 12:04 pm

Где smarty теги меняются на html

Post 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-тегов.

Спасибо!
glacies
Forum Members
Forum Members
Posts: 12
Joined: Wed Jan 26, 2011 11:30 pm

Re: Где smarty теги меняются на html

Post by glacies »

$control->control - это переменная. В шаблоне просто указано, что нужно вывести ее значение, а значение задается в модуле через $this->smarty->assign('name','value'). Само же value, которое выдает html-код тега uinput для вашего примера, по всей вероятности возвращается функцией типа $this->CreateInputSubmit(параметры).
callado
New Member
New Member
Posts: 2
Joined: Mon Feb 21, 2011 12:04 pm

Re: Где smarty теги меняются на html

Post by callado »

glacies wrote:$control->control - это переменная. В шаблоне просто указано, что нужно вывести ее значение, а значение задается в модуле через $this->smarty->assign('name','value'). Само же value, которое выдает html-код тега uinput для вашего примера, по всей вероятности возвращается функцией типа $this->CreateInputSubmit(параметры).
Спасибо большое, вы на самом деле мне очень помогли сдвинуться с мёртвой точки в этом направлении) Я как-то завис совсем на этом моменте, теперь всё яснее.
gala
Forum Members
Forum Members
Posts: 25
Joined: Sat Jun 13, 2009 8:56 am

Re: Где smarty теги меняются на html

Post by gala »

glacies wrote:$control->control - это переменная. В шаблоне просто указано, что нужно вывести ее значение, а значение задается в модуле через $this->smarty->assign('name','value'). Само же value, которое выдает html-код тега uinput для вашего примера, по всей вероятности возвращается функцией типа $this->CreateInputSubmit(параметры).

Я вот тоже зависла здесь. Не могли бы вы немного подробнее объяснить где редактируеся шаблон. Просто в моем шаблоне $control->control - это несколько переменных(SelfRegistration модуль) и я никак не могу понять как мне настроить layout шаблонa

Заранее благодарна
Галя
glacies
Forum Members
Forum Members
Posts: 12
Joined: Wed Jan 26, 2011 11:30 pm

Re: Где smarty теги меняются на html

Post by glacies »

А что такое "layout шаблона"?
Если нужно расположить поля "красиво" и известны все, то убираем из шаблона конструкцию {foreach from=$controls item=control}…{/foreach} и ручками прописываем вывод для каждого элемента. Кстати, как видите, $controls - массив, состоящий из StdClass'ов, {$controls|print_r} в помощь.
А если нужно просто применять стиль, все input, которые, к примеру, генерятся фунцией CreateInputText имеют class="cms_textfield", а id можно посмотреть.
gala
Forum Members
Forum Members
Posts: 25
Joined: Sat Jun 13, 2009 8:56 am

Re: Где smarty теги меняются на html

Post 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 кое-что и у меня видимо мозги в этом направлении работают, хотя я и понимаю что логика другая.

Еще раз спасибо за помощь. Очень, очень благодарна.
afandi
Forum Members
Forum Members
Posts: 35
Joined: Thu Apr 15, 2010 8:04 am

Re: Где smarty теги меняются на html

Post by afandi »

gala wrote: Еще. Я понимаю что передается массив, но я думала он состоит из переменных($name, $adress, и.т.д). Тогда бы я могла тупо сделать "красиво" каждое поле/input html'ом , привязать к каждому переменную и послать весь массив/array в базу.
Чтобы не думать а точно знать как устроенна переменная то можно в шаблоне использовать следующий код

Code: Select all

<pre>{$smarty_variable|print_r}</pre>
Тогда вы увидите из чего состоит ваш массив.

И еще полезно будет прочитать Руководство по смарти
gala
Forum Members
Forum Members
Posts: 25
Joined: Sat Jun 13, 2009 8:56 am

Re: Где smarty теги меняются на html

Post by gala »

Чтобы не думать а точно знать как устроенна переменная то можно в шаблоне использовать следующий код

Code: Select all

<pre>{$smarty_variable|print_r}</pre>
Тогда вы увидите из чего состоит ваш массив.

И еще полезно будет прочитать Руководство по смарти
Большое спасибо за ваши подсказки!


Удачи.
Hippy-core
Forum Members
Forum Members
Posts: 76
Joined: Sat Dec 06, 2008 3:05 pm

Re: Где smarty теги меняются на html

Post by Hippy-core »

gala wrote: Спрошу просто: как поменять размер поля адресс. Я понимаю как поменять длинну каждого поля(делала прямо в базе), но размер textarea, я не понимаю как поменять.
Размеры элементов input и textarea можно через CSS.
Оформление->Стили->Ваш стиль->
Post Reply

Return to “Russian - русский”