Recommended Posts

3 часа назад, doma сказал:

написать так?
update re_data set `textaction`='' where 1

да

3 часа назад, doma сказал:

во круг текстового поля ставим ковычки где на клавиатуре буква "Ё" ? русская

да. вокруг названия поля.

 

3 часа назад, doma сказал:

дальше что за where 1 ?

означает - сделать для всех строк для которых выполняется условие после WHERE. Так как 1 - єто єкивалент истины, то условие после WHERE в виде единички выполнится для любой строки. Другими словами это читается как "сделать для всех".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Vladimir_K сказал:

А куда сие пихать?

а вот это уже сложнее. то, что вы нашли - это автовывод, когда вы не указываете что и куда выводить, а шаблон сам по кругу фигачит вывод всего, что ему пришло. В целом удобно, но когда нужно изменить вывод только какого-то одного свойства - жуть. 

То, где у вас есть похожее - это вывод значения для случая, когда значения в .value приходят в виде массива. Но для єтого єлемента они хоть и приходят в виде массива там, но в .value_string, которые склеивается запятой, они не массив, а уже склеенная строка, поэтому там оно не отрабатывает.

Вам нужно каким-то образом ловить ваш элемент, пусть даже по системному имени. Там есть отлов полей fio, email. Аналогично вам нужно помать по имени вашего мультиполя и внутрь выставить вот ту штуку, что я написал.

....
{elseif $data_item.name eq "phone"}
	{assign var="agent_phone" value=$data_item.value}
{elseif $data_item.name eq "email"}
	{assign var="agent_email" value=$data_item.value}
{*ЭТО БЫЛО*}
{*НАЧИНАЕМ ВНЕДРЯТЬ*}
{elseif $data_item.name eq "МОЕ_МУЛЬТИПОЛЕ"}
	{if $data_item.value_variants_array|count>0}
		<tr><th>{$data_item.title}</th><td>{', '|implode:$data_item.value_variants_array}</td></tr>
   	{/if}
{*ЗАКОНЧИЛИ ВНЕДРЯТЬ*}
{*ПОЕХАЛО ДАЛЬШЕ, ЧТО БЫЛО*}
{elseif $data_item.type eq "destination"}
....

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

а вот это уже сложнее. то, что вы нашли - это автовывод, когда вы не указываете что и куда выводить, а шаблон сам по кругу фигачит вывод всего, что ему пришло. В целом удобно, но когда нужно изменить вывод только какого-то одного свойства - жуть. 

То, где у вас есть похожее - это вывод значения для случая, когда значения в .value приходят в виде массива. Но для єтого єлемента они хоть и приходят в виде массива там, но в .value_string, которые склеивается запятой, они не массив, а уже склеенная строка, поэтому там оно не отрабатывает.

Вам нужно каким-то образом ловить ваш элемент, пусть даже по системному имени. Там есть отлов полей fio, email. Аналогично вам нужно помать по имени вашего мультиполя и внутрь выставить вот ту штуку, что я написал.


....
{elseif $data_item.name eq "phone"}
	{assign var="agent_phone" value=$data_item.value}
{elseif $data_item.name eq "email"}
	{assign var="agent_email" value=$data_item.value}
{*ЭТО БЫЛО*}
{*НАЧИНАЕМ ВНЕДРЯТЬ*}
{elseif $data_item.name eq "МОЕ_МУЛЬТИПОЛЕ"}
	{if $data_item.value_variants_array|count>0}
		<tr><th>{$data_item.title}</th><td>{', '|implode:$data_item.value_variants_array}</td></tr>
   	{/if}
{*ЗАКОНЧИЛИ ВНЕДРЯТЬ*}
{*ПОЕХАЛО ДАЛЬШЕ, ЧТО БЫЛО*}
{elseif $data_item.type eq "destination"}
....

 

а вот тут бы и пригодилось "склеивание" того чего мы неоднократно просили на форумах
так как если не заморачиваться  мультиселектом, то можно было бы вывести "склеенную переменную" и при склейте ее можно даже точку запятую приклеить или просто заяпятую или двоетеочие -все что угодно :)
в итоге была бы банальная обработка автовывода и каждый раз склеивалось бы то что надо пользователю.
неоднократно писали на форуме но нас так и не услышали.
Поясним
обзываем переменную например "est"  от слова "есть" присваиваем ей значение пусто
потмо в автовыводе если условие выволнилось пишем est=est+holodilnik
потом опять если условие выполнилось пишем est=est+"запятая+ytug"
потом опять если условие выполнилось пишем est=est+"запятая+televizor"
в итоге потом в нужном вместе вставляем переменную "est"
В итоге получилось бы 
В квартире имеется холодильник, утюг, телевизор
И просто и понятно и место в объявке мало занимает  вместо сверху вниз скролить 10 значение в итоге 100пикселей высота, когда можно все в 1 строку горизонтально например уместить

Так что подскажите как грамотно в карточке объявке обозвать и склеить переменную

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, doma сказал:

обзываем переменную например "est"  от слова "есть" присваиваем ей значение пусто
потмо в автовыводе если условие выволнилось пишем est=est+holodilnik
потом опять если условие выполнилось пишем est=est+"запятая+ytug"
потом опять если условие выполнилось пишем est=est+"запятая+televizor"
в итоге потом в нужном вместе вставляем переменную "est"
В итоге получилось бы 

Я так понимаю вы хотите сделать что-то типа автогенерируемого текста на базе данных объявления.

1. такое лучше не делать в шаблоне. шаблоны, хоть и активные, но должны содержать поменьше такой механической логики. они часто из-за этого становятся нечитабельными.

2. если делать такое в шаблоне, то вот вариант

{*создаем накопитель*}
{assign var=x value=array()}

{*наполняем накопитель*}
{if $data.utug.value==1}
{append var=x value='утюг'}
{/if}
{if $data.tv.value==1}
{append var=x value='телевизор'}
{/if}
{if $data.refgigerator.value==1}
{append var=x value='холодильник'}
{/if}
{if intval($data.sea_distance.value)>0 && intval($data.sea_distance.value)<501}
{append var=x value='море в шаговой доступности'}
{elseif intval($data.sea_distance.value)>500}
{append var=x value='до моря '|cat:$data.sea_distance.value|cat:' м'}
{/if}

{*вываливаем накопитель в шаблон*}
{if $x|count>0}
<div>Мы предлагаем: {$x|implode:', '}</div>
{/if}

логика имхо очевидная, перебираем параметры и решаем, что закинуть в накопитель. потом склеиваем все зяпатой и отдаем наружу. если финальные предложения более сложные, чем банальное перечисление, то нужно создать несколько накопителей, собрать каждый из них, вывалить их в переменные и потому в последний накопитель загрузить эти переменные и уже вывести из него - тут все зависит от споьсоба склейки. можно склеивать потоково, как вы показывали, но там более сложные условия, нужно контроллировать что есть, что нет, где ставить запятую, а тут по факту код сам склеивает, вы только говрите что именно ему нужно объединить в строку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 hours ago, doma said:

И просто и понятно и место в объявке мало занимает  вместо сверху вниз скролить 10 значение в итоге 100пикселей высота, когда можно все в 1 строку горизонтально например уместить

Это то, о чём я писал выше. Очень удивился, что много очень функционала хорошего в движок заложено. И настроек тонких много. А такой простой вещи нет( Приходится извращаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, abushyk сказал:

Я так понимаю вы хотите сделать что-то типа автогенерируемого текста на базе данных объявления.

1. такое лучше не делать в шаблоне. шаблоны, хоть и активные, но должны содержать поменьше такой механической логики. они часто из-за этого становятся нечитабельными.

2. если делать такое в шаблоне, то вот вариант


{*создаем накопитель*}
{assign var=x value=array()}

{*наполняем накопитель*}
{if $data.utug.value==1}
{append var=x value='утюг'}
{/if}
{if $data.tv.value==1}
{append var=x value='телевизор'}
{/if}
{if $data.refgigerator.value==1}
{append var=x value='холодильник'}
{/if}
{if intval($data.sea_distance.value)>0 && intval($data.sea_distance.value)<501}
{append var=x value='море в шаговой доступности'}
{elseif intval($data.sea_distance.value)>500}
{append var=x value='до моря '|cat:$data.sea_distance.value|cat:' м'}
{/if}

{*вываливаем накопитель в шаблон*}
{if $x|count>0}
<div>Мы предлагаем: {$x|implode:', '}</div>
{/if}

логика имхо очевидная, перебираем параметры и решаем, что закинуть в накопитель. потом склеиваем все зяпатой и отдаем наружу. если финальные предложения более сложные, чем банальное перечисление, то нужно создать несколько накопителей, собрать каждый из них, вывалить их в переменные и потому в последний накопитель загрузить эти переменные и уже вывести из него - тут все зависит от споьсоба склейки. можно склеивать потоково, как вы показывали, но там более сложные условия, нужно контроллировать что есть, что нет, где ставить запятую, а тут по факту код сам склеивает, вы только говрите что именно ему нужно объединить в строку.

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

{assign var=x value='Располагается'}
а вот потом как его правильно склеить ? просто написав
$x=$x.'пробел или запятая'.$data.city.value_string
потом 
$x=$x.'пробел или запятая'.$data.street.value_string
Потом выводим ее в шаблон
{$x}
В итоге выведется
Располагается Москва Сугутская улица

пример условный и используется сейс_стринг так как если просто брать поле телевизор то там либо 0 либо 1 и тестом писать можно но не обязательно
нас больше интересует как склеить текстовые данные

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Объединение строк в smarty происходит не через точку, а через модификатор cat http://www.smarty.net/docsv2/ru/language.modifier.cat.tpl

Но вариант на массиве, по моему опыту, чаще более читабельный и удобный.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

Объединение строк в smarty происходит не через точку, а через модификатор cat http://www.smarty.net/docsv2/ru/language.modifier.cat.tpl

Но вариант на массиве, по моему опыту, чаще более читабельный и удобный.

 

да непременно хорошее решение, но одно дело просто автовывод- другое дело написание красиво :)
Почему мы просили как склеить текстовые поля -потому что нужно просто произвольный текст наклепать - не зависимый от автовывода
Так как для его формирования мы используем например множество условий
IF-ELSE и в зависимости от него формируется длинное предложение, так как другого варианта пока не предложено
Вот простой пример если нужно сформировать текст завязанный на определенной категории, саму текстовку мы выдернуть не можем, так как сейчас например по ID доступна только маленькая строка например 1 комнатная,
а если мы знаем ID категории то в струтуре смотрим например это сдача квартир 1 комнатная
то и формируем текстовку "Раздел: Долгосрочная аренда 1 комнатных квартир в городе Киров "

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, abushyk сказал:

Объединение строк в smarty происходит не через точку, а через модификатор cat http://www.smarty.net/docsv2/ru/language.modifier.cat.tpl

Но вариант на массиве, по моему опыту, чаще более читабельный и удобный.

 

через поисковики нашли типа такого думали правильно
Пишут

$title = $user_data['first_name'].' '.$user_data['last_name'];

тебе надо соединить между собой три строки - одну переменную, пробел, и вторую переменную. Оператор соединения строк (конкатенации) в РНР - точка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, doma сказал:

а если мы знаем ID категории ...то и формируем текстовку ....

Это не связано со способом формирования конечной строки. Это логика как и что взять. А как полученное склеить - это отдельный процесс.

18 минут назад, doma сказал:

через поисковики нашли типа такого думали правильно

да, для php правильно. Но смарти - это не php в чистом виде. а если вы хотите делать это в шаблоне, то вам придется пользоваться правилами языка смарти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 hours ago, Vladimir_K said:

И ещё сразу, что бы темы лишние не плодить. Поле для ввода телефона можно сделать множественным? Что бы можно было указать несколько телефонов.

Вот это сможет кто-то подсказать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, Vladimir_K сказал:

Вот это сможет кто-то подсказать?

в таблицах data и user уже заложен ввод двух телефонов - phone и mobilephone, но если мало, то можете наделать еще phone1...phone100, owner_phone, agent_phone и прочие варианты ;) Для этих позиций вы можете выбирать тип записи safe_string, и пользователь может написать свой телефон как: 8 800-мой-телефон, +7 (926) 123-4567, 1234567890 или танька-бл*дь (проглотит всё), а можно выбрать тип записи mobilephone, указать маску ввода mask=+7(hhh)hhh-hhhh и пользователь ничего кроме цифр не введет. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Vladimir_K сказал:

Вот это сможет кто-то подсказать?

http://wiki.sitebill.ru/index.php?title=Дополнительные_параметры_элемента_модели

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, Chernetskiy сказал:

то можете наделать еще phone1...phone100, owner_phone, agent_phone и прочие варианты

или просто добавить поле типа textarea и через перенос строки набивать туда номера хоть сотнями)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
24 minutes ago, abushyk said:

или просто добавить поле типа textarea и через перенос строки набивать туда номера хоть сотнями)

Это конечно вариант, я думал над этим. Но в поле mobilephone прельщает возможность настроить формат ввода. На старом сайте как раз и было простое текстовое поле для телефона. Так там такого поналупили, что на голову не натянешь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 минуты назад, Vladimir_K сказал:

mobilephone прельщает возможность настроить формат ввода

оно нифига не работает на андроидах. нигде. так что можете сильно на него не завязываться.

я буду делать аналог такого поля, что бы контролировал по маске, но без плагина маски при вводе. но текущий элемент mobilephone юзабелен только на десктопах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
29 minutes ago, abushyk said:

оно нифига не работает на андроидах. нигде. так что можете сильно на него не завязываться.

я буду делать аналог такого поля, что бы контролировал по маске, но без плагина маски при вводе. но текущий элемент mobilephone юзабелен только на десктопах.

При все истерии насчёт мобайла и т.д. по факту я пока вижу, что минимум 75-80% трафика идёт с десктопа.

Но за то, что предупредили про такой ньюанс спасибо, будем знать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас