Forumlar / National / Russian / Тех. поддержка / Как объединить две переменные для функции

Kopusha
#1 2017-12-24 14:25

К примеру у меня есть 
{PHP.usr.profile.user_country} = ua. Или я создал {PHP.usr.profile.user_specialization} которое равно у некоторых юзеров 'designer'. 

Скажем в плагине банеров (взято для примера) сам банер выводится в TPL {PHP|banner_widget('код банера', 1)}

Если у меня создана к примеру зона для банеров под кодом 'ua' я могу сделать так - {PHP|banner_widget('ua', 1)}. Но я могу сделать и так - {PHP.usr.profile.user_country|banner_widget('$this',1)} и банер увидят ТОЛЬКО пользователи с Украиной в профиле. Очень удобно. 

Или можно создать зону банеров  'designer' и только для дизайнеров увидеть {PHP.usr.profile.user_specialization|banner_widget('$this',1)}.  (usr.profile.user_specialization - экстраполе)

 

Я хочу создать зону банеров для дизайнеров из Украины - 'uadesigner'. И еще одну 'rudesigner'.

Как скрестить две переменные - что то примерно как {PHP.usr.profile.user_country|PHP.usr.profile.user_specialization|banner_widget('$this',1)}. 

Был когда то тут тюториал но я его потерял. Спасибо!

 

Added 1 hour later:

UPD

Умом понимаю что в имятемы.php надо бы написать функцию $myvar = usr.profile.user_country + profile.user_specialization и получить в tpl  {PHP.myvar|banner_widget('$this',1)}. Но не осилил как это сделать что бы работало.

Added 4 minutes later:

UPD UPD - было бы хорошо вычислить myvar напрямую в TPL где выводится сама конструкция....Пробую...Бьюсь)


Bu konu Kopusha tarafından düzenlendi(2017-12-24 16:16, 6 yıllar önce)
Macik
#2 2017-12-29 07:47

Если кратко:

  • Включить использование файла пользовательских функций. В файле настроек `config.php` добавить - `$cfg['customfuncs'] = TRUE;
  • Создать в системной папке (`system`) файл пользовательских функций — `functions.custom.php`
  • в файле написать свою функцию, например `my_user_prop`:
    funtion my_user_prop() {
        return cot::$usr['profile']['user_country'] . cot::$usr['profile']['user_specialization']; 
    }
  • в шаблоне использовать цепочку вызова и подстановки: ` {PHP|my_user_prop()|banner_widget('$this',1)}`

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
Kopusha
#3 2017-12-29 10:37

Спс большое. Почему не в имятемы.php а в кастомфанкшинз?

Added 54 seconds later:

Я к тому что у меня уже в имятемы.пхп уже есть кучка подобного и все работает на ура. Но может действительно лучше не так.

Macik
#4 2017-12-29 21:28

Да, конечно, можно и туда. Просто, исторически, у меня в темах нет сложной логики. Стараюсь всю логику держать в соотв. расширениях. Все же темы оформления это «внешнее». Мыслю категорией, что пользователь может «захотеть» сменить тему. Поэтому и привык, что если есть необходимость в доп. функциях, то писать их в «кастомз». 

 

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F