UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: muldy от 18 Июля 2013, 16:24:19

Название: Создать глобальный макрос?
Отправлено: muldy от 18 Июля 2013, 16:24:19
Здравствуйте!
Требуется создать простой макрос для вывода определенного текста внутри теркста, например, описание товара.
Те что я имею ввиду, имеем:

Наш товар самый популярный  и необычный товар о котором все знают но мало кто имеет!В %Region% вы найдете большой выбор этого товара!

Соотвественно, требуется вывести текст макроса: %Region%, как такое реализовать?
Название: Re:Создать глобальный макрос?
Отправлено: NOIRMAN от 18 Июля 2013, 16:31:09
А чем вас сущности (Entity) не устраивают?
Название: Re:Создать глобальный макрос?
Отправлено: muldy от 18 Июля 2013, 18:14:05
А разве у меня с помощью сущностей будет возможность вставлять ее непосредственно в редактор?
Мне требуется чтобы при заполнении можно было использовать свой макрос, который будет выводить заранее заданный текст!
Название: Re:Создать глобальный макрос?
Отправлено: admin от 21 Июля 2013, 13:37:19
то есть вам надо в редактор вставить что-то(например: %Region%), что при выводе замениться например на савтоматически определенный регион данного пользователя?

если так, то подстановка возможно:
1.  через js (подставляем в какое-то место шаблона js код в который подгружаем на 'ngt формирования страницы нужное значение и его заменяем в тексте, найдя его по функции замены подстроки)
2. через xslt (таже песня только средствами xslt работаем с нужным полем строковыми функциями)
3. через php при выводе вызываем макрос передав ему id страницы и название поля, а php в этом тексте найдет нужное значение и вставит другое.

P.S.
Cамый быстрый для реализации это js.
Более правильный в плане возможного расширения (вдруг у вас там много таких переменных появиться) это php. 
Xslt, просто как альтернатива, так как строковые функцие у xslt не мега быстрые и не мега удобные.
Название: Re:Создать глобальный макрос?
Отправлено: muldy от 22 Июля 2013, 14:51:17
Так вот мне и требуется макрос который будет заменять текст типа %Region%, но в зависимости от поддомена!
Вот поэтому и спрашиваю как написать такой макрос?
Название: Re:Создать глобальный макрос?
Отправлено: admin от 22 Июля 2013, 15:29:22
вы уже писали макросы? если нет, то вначале посмотрите Новый формат расширения функционала (http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/razrabotka_sobstvennyh_makrosov_i_modulej/novyj_format_rasshireniya_funkcionala/#script) и написание макроса (http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/razrabotka_sobstvennyh_makrosov_i_modulej/sozdanie_modulya/#write_macrosses)

самый распространенное место написание своих макросов, это файл /classes/modules/custom.php (так как там не надо прописывать права, эта функция будет доступна всем)

далее вам надо знать как в umi вытащить текст из поля зная id страницы и название поля (примеры можно посмотреть тут  (http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/primery_ispolzovaniya_vozmozhnostej_api/stranicy/)) и дальше вызываете этот макрос через %custom название_вашего_метода(id_старницы,англ_название_поля_с_текстом)% или <xsl:value-of select="document('udata://custom/название_вашего_метода/id_старницы/англ_название_поля_с_текстом')/udata" disable-output-escaping="yes"/>... в зависимости от того какой шаблонизатор вы используете
Название: Re:Создать глобальный макрос?
Отправлено: muldy от 23 Июля 2013, 16:15:16
Оказалось все проще, написал макрос и вставил в текстовую область макрос %custom region%
Название: Re:Создать глобальный макрос?
Отправлено: admin от 23 Июля 2013, 16:34:57
и то верно) чего-то про этот вариант никто и не вспомнил