UMIhelp
Разработка дополнительного функционала => Custom макросы => Тема начата: muldy от 18 Июля 2013, 16:24:19
-
Здравствуйте!
Требуется создать простой макрос для вывода определенного текста внутри теркста, например, описание товара.
Те что я имею ввиду, имеем:
Наш товар самый популярный и необычный товар о котором все знают но мало кто имеет!В %Region% вы найдете большой выбор этого товара!
Соотвественно, требуется вывести текст макроса: %Region%, как такое реализовать?
-
А чем вас сущности (Entity) не устраивают?
-
А разве у меня с помощью сущностей будет возможность вставлять ее непосредственно в редактор?
Мне требуется чтобы при заполнении можно было использовать свой макрос, который будет выводить заранее заданный текст!
-
то есть вам надо в редактор вставить что-то(например: %Region%), что при выводе замениться например на савтоматически определенный регион данного пользователя?
если так, то подстановка возможно:
1. через js (подставляем в какое-то место шаблона js код в который подгружаем на 'ngt формирования страницы нужное значение и его заменяем в тексте, найдя его по функции замены подстроки)
2. через xslt (таже песня только средствами xslt работаем с нужным полем строковыми функциями)
3. через php при выводе вызываем макрос передав ему id страницы и название поля, а php в этом тексте найдет нужное значение и вставит другое.
P.S.
Cамый быстрый для реализации это js.
Более правильный в плане возможного расширения (вдруг у вас там много таких переменных появиться) это php.
Xslt, просто как альтернатива, так как строковые функцие у xslt не мега быстрые и не мега удобные.
-
Так вот мне и требуется макрос который будет заменять текст типа %Region%, но в зависимости от поддомена!
Вот поэтому и спрашиваю как написать такой макрос?
-
вы уже писали макросы? если нет, то вначале посмотрите Новый формат расширения функционала (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"/>... в зависимости от того какой шаблонизатор вы используете
-
Оказалось все проще, написал макрос и вставил в текстовую область макрос %custom region%
-
и то верно) чего-то про этот вариант никто и не вспомнил