Документация по макросам и шаблонам UMI.CMS. Документация umi cms
Формат UMI Data
Каждый раз, когда вы запрашиваете страницу своего сайта в окне браузера, система UMI.CMS формирует XML-файл в формате UMI Data. Чтобы увидеть этот файл, наберите в адресной строке браузера адрес созданной страницы, добавив к нему расширение .xml, например http://ваш_сайт/mypage.xml.
Пример файла в формате UMIData
<?xml version="1.0" encoding="utf-8" ?> <result module="content" method="content" domain="www.somedomain.com" lang="ru" header="Нет страницы для отображения" title="Заголовок моей страницы (TITLE)" request-uri="/mypage/?xmlMode=force" pageId="23052"> <meta> <keywords>Ключевые слова моей страницы</keywords> <description>Описание моей страницы</description> </meta> <user status="auth" login="username" /> <parents /> <page parentId="0" link="/mypage/" is-visible="1" object-id="27089" type-id="10"> <name>Моя страница</name> <properties> <group name="common"> <title>Основные</title> <property name="title" type="string"> <title>Поле TITLE</title> <value>Заголовок моей страницы (TITLE)</value> </property> <property name="h2" type="string"> <title>Поле h2</title> <value>Заголовок моей страницы</value> </property> <property name="meta_keywords" type="string"> <title>Поле meta KEYWORDS</title> <value>Ключевые слова моей страницы</value> </property> <property name="meta_descriptions" type="string"> <title>Поле meta DESCRIPTIONS</title> <value>Описание моей страницы</value> </property> <property name="content" type="wysiwyg"> <title>Контент</title> <value>Текст моей страницы</value> </property> <property name="tags" type="tags"> <title>Тэги</title> <value>tag1</value> </property> </group> <group name="more_params"> <title>Дополнительные параметры</title> <property name="show_submenu" type="boolean"> <title>Показывать подменю</title> <value>1</value> </property> </group> </properties> </page> </result>Вывод значений формата UMIData
Итак, вы ознакомились с описанием формата UMI Data. Теперь вы можете создать XSLT-шаблон, который преобразует исходный XML-файл в формате UMI Data в итоговую HTML-страницу, содержащую нужные элементы исходного файла.
Например, чтобы вывести значения полей заголовка и контента страницы, добавим в тестовый XSLT-шаблон следующий код (выделен жирным шрифтом):
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8" indent="yes"/> <xsl:template match="/"> <html> <head> <title><xsl:value-of select="/result/@title" /></title> </head> <body> <div> <h2><xsl:value-of select=".//property[@name ='h2']/value" /></h2> <xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/> </div> </body> </html> </xsl:template> </xsl:stylesheet>Замечание
Атрибут disable-output-escaping="yes" отключает экранирование символов. Его следует указывать для вывода полей, содержимым которых является HTML-код.
Можно видеть, что мы можем получить доступ к отдельным элементам XML-файла, запрашивая их при помощи "путей", похожих на пути к папкам в файловой системе.
Для доступа к атрибутам в этой записи необходимо использовать символ "@", а символы "[" и "]" используются для задания условий. Запись ".//" говорит о том, что надо искать этот элемент среди всех доступных. Так запись <xsl:value-of select=".//property[@name = 'h2']/value"/> дословно означает следующее:
Вывести значение элемента value расположенного внутри элемента property с атрибутом name равным h2, при этом элемент property может располагаться в любом месте обрабатываемого XML.
Замечание
Рассмотренное выше выражение является выражением на языке XPath. Интересующиеся могут изучить его самостоятельно, так как в большинстве случаев достаточно будет аналогии с адресацией в файловой системе.
dev.docs.umi-cms.ru
Объекты в UMI.CMS
Объекты в UMI.CMS — особый вид хранения данных UMI.CMS. Каждый созданный объект имеет имя и свой уникальный идентификатор (id). Объект структурно повторяет тип данных, по которому он создан, а поля объекта могут принимать различные значения.
Рассмотрим в качестве примера объекта пользователя, приведенного выше на рисунке (Рисунок 1.2, «Редактирование пользователя»). Предположим, что id этого пользователя 27163. Тогда мы можем посмотреть значения полей следующим образом (см. описание «Объекты: протокол UObject») — наберем в адресной строке:
http://ваш_сайт/uobject/27163
Мы должны будем увидеть примерно следующее:
<udata generation-time="0.002585"> <object name="username" type-id="4" ownerId="14"> <properties> <group name="identify_data"> <title>Идентификационные данные</title> <property name="login" type="string"> <title>Логин</title> <value>username</value> </property> <property name="e-mail" type="string"> <title>E-mail</title> <value>my_email@my_email.ru</value> </property> <property name="groups" type="relation"> <title>Группы пользователей</title> <value> <item name="Зарегистрированные пользователи" type-id="6" xlink:href="uobject://2374"/> </value> </property> <property name="is_activated" type="boolean"> <title>Активирован</title> <value>1</value> </property> </group> <group name="more_info"> <title>Дополнительная информация</title> <property name="user_dock" type="string"> <title>Пользовательская панель</title> <value> ... </value> </property> <property name="preffered_currency" type="relation"> <title>Предпочитаемая валюта</title> <value> ... </value> </property> </group> <group name="short_info"> <title>Краткая информация</title> <property name="lname" type="string"> <title>Фамилия</title> <value>Last_name</value> </property> <property name="fname" type="string"> <title>Имя</title> <value>Name</value> </property> </group> </properties> </object> </udata>Документация по макросам и шаблонам UMI.CMS
Макрос возвращает набор доступных списков адресов, существующих на сайте, а также список полей для создания формы по id указанному в параметре form. Если этот параметр отсутствует, то будет выведены данные о последней добавленной форме.
Саму форму необходимо самостоятельно верстать в шаблоне (см. пример ниже).
XML-ответ UData
<udata form_id="832" module="webforms" method="add" generation-time="0.501507"> <items> <item>Письмо администраторам</item> <item>Письмо в рекламный отдел</item> </items> <groups> <group name="lichnye_dannye" title="личные данные"> <field name="imya" title="имя" input_name="data[new][imya]" type="string" required="required"/> <field name="familiya" title="фамилия" input_name="data[new][familiya]" type="string"/> <field name="email" title="e-mail" input_name="data[new][email]" type="string" tip="это подсказка" required="required"/> <field name="soobwenie" title="сообщение" input_name="data[new][soobwenie]" type="text" required="required"/> </group> </groups> </udata>Элементы и атрибуты
<items>
Ветвь, описывающая набор списков адресов, созданных на сайте — элементы item.
<item>
Элемент описывающий отдельный список адресов.
@idИдентификатор списка адресов
<groups>
Ветвь, описывающая список из групп полей для этой формы.
<group>
Элемент, описывающий отдельную группу полей из списка групп.
<field>Отдельное поле из группы полей. Данные из атрибутов необходимо использовать при создании формы.
@nameИмя поля
Заголовок поля
@input_nameИмя, необходимое для задания атрибута name у тега <input>
@typeТип данных для этого поля
@idИдентификатор поля
@requiredАтрибут, указывающий, что это поле является обязательным к заполнению
@tipПодсказка к полю. Можно использовать для объяснения, что именно должно быть введено в это поле при верстке формы
Примеры использования
В качестве примера создадим простейшую форму, отправляющую сообщение с сайта на выбранный пользователем список адресов.
В том месте, где необходимо отобразить форму, вызовем макрос:
<xsl:apply-templates select="document('udata://webforms/add/832')/udata" mode="mywebform"/>Теперь необходимо описать шаблоны обработки результатов макроса. Создаем форму:
<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="mywebform"> <form method="post" action="/webforms/send/"> <input type="hidden" name="system_form_id" value="{@form_id}" /> <input type="hidden" name="ref_onsuccess" value="/webforms/posted/" /> <table> <tr> <td>Куда отправить:</td> <td> <select name="system_email_to"> <xsl:apply-templates select=".//item" mode="form-select"/> </select> </td> </tr> <xsl:apply-templates select=".//field" mode="form-fields"/> <xsl:apply-templates select="document('udata://system/captcha')/udata[url]" /> </table> <p><input type="submit" value="Отправить" /></p> </form> </xsl:template>А также, например, 2 шаблона для полей типа string (для ввода таких данных как Имя, Фамилия, e-mail) и text (для ввода самого сообщения):
<xsl:template match="field[@type = 'string']" mode="form-fields"> <tr> <td><xsl:value-of select="@title"/>:</td> <td><input type="text" name="{@input_name}"/></td> </tr> </xsl:template> <xsl:template match="field[@type = 'text']" mode="form-fields"> <tr> <td><xsl:value-of select="@title"/>:</td> <td><textarea name="{@input_name}"/></td> </tr> </xsl:template>Для которого необходимо описать шаблон, например, следующим образом:
<xsl:template match="udata[@method='captcha']"> <tr> <td><label for="{@input_id}">Защитный код:</label></td> <td><img src="{url}{@random_string}"/> <input type="text" name="captcha"/></td> </tr> </xsl:template>dev.docs.umi-cms.ru
Уроки, статьи UMI.CMS. Бесплатные уроки UMI.CMS
В данной статье я буду рассказывать про то, как вызывать кастомные макросы UMI.CMS.
Давайте сначала определимся, для чего нужны кастомные макросы(?)
Иногда бывает такое, что стандартных макросов UMI.CMS бывает не достаточно, ну или просто не хватает чего-либо, вот тут вам и понадобятся кастомные макросы.
Какие есть стандартные макросы в UMI.CMS
Стандартных макросов UMI.CMS очень много, с ними вы можете подробно ознакомиться в документации разработчика, рассматривать я их не буду. Ну может быть немного позже, когда начну готовить цикл статей по созданию своего шаблона для UMI.CMS. (далее…)
Давненько я не писал про работу с UMI.CMS. Последней статьей было про то, как сделать для сайта акцию с обратный отсчетом для вашего интернет магазина. В этой статье я расскажу про то, как можно сделать удобную работу с вашей корзиной.(далее…)
Эта статья является продолжением вот этой. В прошлой статье мною было рассказано про то как настроить шаблон данных, акции со счетчиком на страницы магазина, но не рассказал про то, как выводить привязанные товары на странице подробного описания акции — собственно про это статья. (далее…)
В UMI.CMS есть очень замечательная особенность — это управление несколькими сайтами из одной админки. Это особенность называется мультидоменность или мультисайтовость.
C подключением на живом сайте мультисайтовости проблем не происходит, а вот, что делать, если нужно подключить мультидоменность на локальном компьютере, ведь все нужно протестировать перед переносом? Да и для подключения мультисайтовости требует не 1 и даже иного не 3 часов ожидания, что делать если их нет. Все просто. Сейчас я вам расскажу, как можно быстро поднять мультидоменный сайт на UMI.CMS на локальном компьютере. (далее…)
Достаточно давно работаю с UMI.CMS версии Shop и при создание интернет магазинов постоянно возникает одна и та же проблема, от которой к сожалению не получиться избавиться, а именно — в ЧПУ после домена идет название каталога, а потом уже и правильное ЧПУ.
Любой разработчик на UMI.CMS сразу же скажет, что не следует создавать иерархического каталога, просто в модуле «Каталог» добавлять нужные вам разделы.
Может не совсем понятно, о чем именно сейчас идет речь, я объясню. Смотрите, если мы хотим, чтобы у нас в модуле «Структура» UMI.CMS все было красиво и структурированно, для этого мы в модуле «Каталог» создаем дополнительный раздел «Каталог товаров» и уже в него добавляем подразделы и товары: (далее…)
Давненько я не писал про работу с UMI.CMS, нужно исправлять ситуацию.
Не так давно на работе столкнулись с такой задачей — нужно было прикрепить файл к письму, но к тому который отправляет пользователь, такие варианты решения есть на wiki UMi.CMS, а к тому, который отправляется пользователю — автоответ на его письмо. Как говорит wiki.umisoft.ru такой возможности нет.
Стандартного функционала, для прикрепления загруженного файла к письму, которое придет администратору — не предусмотрено. Однако, имеется возможность указать в письме прямую ссылку на загруженный файл.
Для того, чтобы ясно понимать ситуацию прикрепления файла в автоответе пользователю, вот пример - пользователь решил запросить прайс лист вашей продукции, а вам нужно взамен на прайс лист получить данные пользователя. Ну я думаю примерно задача ясна, теперь я вам все распишу. Первое что нужно сделать — это в UMI.CMS создать новую форму связи. Нужно перейти в Модули -> Обратная связь. Если у вас нет формы связи, то нужно ее создать. Я не буду описывать процесс создания формы, в документации UMI.CMS это прекрасно описано. Если у вас формы есть, то вам этот шаг нужно пропустить 😉 Сразу переходите в Модули -> Шаблоны данных и тут нужно найти "Шаблон письма"(далее…)
Приходилось ли вам в популярных интернет магазинах видеть мотивирующий покупателя блок, в котором написано — «ДО КОНЦА АКЦИИ ОСТАЛОСЬ ... ДНЕЙ!»? В данном блоке есть часы с обратным отсчетом, классное описание, мотивирующие 10, 20, 30% скидки на товар!
А хотели ли вы предложить такой функционал своему заказчику или добавить в свой интернет магазин на UMI.CMS?
Теперь вы это можете сделать прочитав данную статью, которая подробно описывает функционал создания таймера обратного отсчета на акции товаров в UMI.CMS 😉 (далее…)
pontyk.com.ua
UMI.CMS
UMI.CMS — в топе ключевых рейтингов CMS России и СНГ. Более 9 000 сайтов работают сегодня на платформе UMI.CMS.
Класс продукта
CMS, eCommerce CMS
Другие CMS, на которых работает Cetera: Cetera CMS, Fastsite, Wordpress, «1C-Битрикс: Управление сайтом», NetCat, Magento, Tilda, Craft CMS, Shopify, Drupal.
Документация UMI.CMS
- Для контент-менеджеров.
- Для разработчиков.
- Для администраторов.
Статус партнёрства с вендором
Партнёр.
Портфолио
Посмотреть портфолио
Услуги Cetera на основе UMI.CMS
Редакции UMI.CMS
Для магазинов
- Ultimate — 79 900 рублей
- Сommerce — 34 900 рублей
- Shop — 22 900 рублей
Для сайтов
- Сorporate — 11 900 рублей
- Business — 22 900 рублей
- Lite — 4 900 рублей
Преимущества UMI.CMS
Самая удобная CMS для сайта
Процесс управления сайтом на UMI.CMS настолько прост, что для этого не требуется никаких специальных знаний, кроме стандартных навыков работы в MS Word. Для того, чтобы добавить на сайт страницу или новый раздел, изменить структуру меню, отредактировать текст или добавить картинку, обновить каталог, цены или список производителей в интернет-магазине, вам не потребуется админка или какая-либо дополнительная программа для управления — моментальное редактирование происходит прямо на страницах сайта.
Масштабируемый функционал
Возможностей младшей редакции системы достаточно, чтобы создать веб-ресурс небольшой компании и с уже настроенным типовым функционалом. Далее при необходимости инструментарий CMS сайта можно расширять, переходя на старшие редакции или настраивая платформу под ваши задачи. Сайт на UMI.CMS будет служить вам долго, эффективно и развиваться вместе с вашим бизнесом.
Экономична для владельцев
UMI.CMS экономична: она многократно сокращает все основные расходы компании на владение сайтом. Это происходит благодаря удобству платформы: управление контентом не требует обучения, а ежедневная работа занимает меньше рабочего времени, чем вы можете себе представить.
Быстрый запуск сайта
В коробку включены 550 готовых шаблонов интернет-сайтов, поэтому современный сайт, интернет-магазин или лендинг можно запустить сразу после установки движка и заполнения разделов информацией на русском языке или любом другом языке.
Поделиться в соц. сетях:cetera.ru
UMI.CMS | permissionsCollection
Калька с текущей документации с официального сайта, разбитая для удобства пользования не классы. Соответственно, все тамошние ошибки повторяются и здесь. Для сравнения смотрите раздел "Примеры работы с классами umi.api"
Chapter 48. permissionsCollection
Список методов
__construct() getOwnerType(Integer $owner_id) makeSqlWhere(Integer $owner_id) isAllowedModule(Integer $owner_id, String $module) isAllowedMethod(Integer $owner_id, String $module, String $method) isAllowedObject(Integer $owner_id, Integer $object_id) isSv(Integer $user_id) isAdmin(Integer $user_id) isOwnerOfObject(Integer $object_id, user_id id) setDefaultPermissions(Integer $element_id) resetElementPermissions(Integer $elementId, Integer $ownerId = false) resetModulesPermissions(Integer $ownerId, Array $modules = NULL) setElementPermissions(Integer $ownerId, Integer $elementId, Integer $level) hasUserPermissions(Integer $ownerId) copyHierarchyPermissions(Integer $fromUserId, Integer $fromUserId) getUserId() isAllowedDomain(Integer $owner_id, Integer $domain_id) setAllowedDomain(Integer $owner_id, Integer $domain_id, Boolean $allow = true) setDefaultElementPermissions(umiHierarchyElement $element, Integer $owner_id) setAllElementsDefaultPermissions(Integer $owner_id) getUsersByElementPermissions(Integer $elementId, Integer $level) pushElementPermissions(Integer $elementId, Integer $level) getInstance() getGuestId()Управляет правами доступа на страницы и ресурсы модулей. Синглтон. Экземпляр класса можно получить через статичесик метод getInstance.
getOwnerType(Integer $owner_id)
Внутрисистемный метод, не является частью публичного API
Integer $owner_id id пользователя или группы
Возвращает Integer|Array
makeSqlWhere(Integer $owner_id)
Внутрисистемный метод, не является частью публичного API
Integer $owner_id id пользователя или группы
Возвращает String фрагмент SQL-запроса
isAllowedModule(Integer $owner_id, String $module)
Узнать, разрешен ли пользователю или группе $owner_id доступ к модулю $module
Integer $owner_id id пользователя или группы пользователей
String $module название модуля
Возвращает Boolean true если доступ разрешен
isAllowedMethod(Integer $owner_id, String $module, String $method)
Узнать, разрешен ли пользователю или группе $owner_id доступ к методу $method модуля $module
Integer $owner_id id пользователя или группы пользователей
String $module название модуля
String $method название метода
Возвращает Boolean true если доступ на метод разрешен
isAllowedObject(Integer $owner_id, Integer $object_id)
Узнать, разрешен ли пользователю или группе $owner_id доступ на чтение страницы $object_id (класс umiHierarchyElement)
Integer $owner_id id пользователя или группы пользователей
Integer $object_id id страницы, доступ к которой проверяется
Возвращает Boolean true если есть доступ хотя бы на чтение
Узнать, является ли пользователь $user_id супервайзером
Integer $user_id id пользователя (по умолчанию используется id текущего пользователя)
Возвращает Boolean true, если пользователь является супервайзером
isAdmin(Integer $user_id)
Узнать, является ли пользователь $user_id администратором, т. е. есть ли у него доступк администрированию хотя бы одного модуля
Integer $user_id = false id пользователя (по умолчанию используется id текущего пользователя)
Возвращает Boolean true, если пользователь является администратором
isOwnerOfObject(Integer $object_id, user_id id)
Узнать, является ли пользователь $user_id владельцем объекта (класс umiObject) $object_id
Integer $object_id id объекта (класс umiObject)
$user_id id пользователя
Возвращает Boolean true, если пользователь является владельцем
setDefaultPermissions(Integer $element_id)
Сбросить настройки прав до дефолтных для страницы (класс umiHierarchyElement) $element_id
Integer $element_id id страницы (класс umiHierarchyElement)
Возвращает Boolean false если произошла ошибка
resetElementPermissions(Integer $elementId, Integer $ownerId = false)
Удалить все права на странциу $elementId для ползователя или группы $ownerId
Integer $elementId id страницы (класс umiHierarchyElement)
Integer $ownerId=false id пользователя или группы, чьи права сбрасываются. Если false, то права сбрасываются для всех пользователей
resetModulesPermissions(Integer $ownerId, Array $modules = NULL)
Сбросить все права на модули и методы для пользователя или группы $ownerId
Integer $ownerId id пользователя или группы пользователей
Array $modules=NULL массив, который указывает модули, для которых сбросить права. По умолчанию, сбрасываются права на все модули
setElementPermissions(Integer $ownerId, Integer $elementId, Integer $level)
Установить определенные права на страница $elementId для пользователя или группы $ownerId
Integer $ownerId id пользователя или группы пользователей
Integer $elementId id страницы (класс umiHierarchyElement), для которой меняются права
Integer $level уровень выставляемых прав то "0" до "2". "нет доступа" (0), "только чтение" (1), "чтение и запись" (2)
Возвращает Boolean true если не произошло ошибки
hasUserPermissions(Integer $ownerId)
Узнать, имеет ли пользователь или группа в принципе права на какие-нибудь страницы
Integer $ownerId id пользователя или группы
Возвращает Boolean false, если записей нет
copyHierarchyPermissions(Integer $fromUserId, Integer $fromUserId)
Скопировать права на все страницы из $fromUserId в $toUserId
Integer $fromUserId id пользователя или группы пользователей, из которых копируются права
Integer $fromUserId id пользователя или группы пользователей, в которые копируются права
Получить id текущего пользователя
Возвращает Integer id текущего пользователя
isAllowedDomain(Integer $owner_id, Integer $domain_id)
Узнать, разрешено ли пользователю или группе $owner_id администрировать домен $domain_id
Integer $owner_id id пользователя или группы пользователей
Integer $domain_id id домена (класс domain)
Возвращает Integer 1, если доступ разрешен, 0 если нет
setAllowedDomain(Integer $owner_id, Integer $domain_id, Boolean $allow = true)
Установить права пользователю или группе $owner_id на администрирование домена $domain_id
Integer $owner_id id пользователя или группы пользователей
Integer $domain_id id домена (класс domain)
Boolean $allow=true если true, то доступ разрешен
setDefaultElementPermissions(umiHierarchyElement $element, Integer $owner_id)
Установить права по умолчанию для страницы $element по отношению к пользователю $owner_id
umiHierarchyElement $element экземпляр страницы
Integer $owner_id id пользователя или группы пользователей
Возвращает Integer уровен доступа к странице, который был выбран системой
setAllElementsDefaultPermissions(Integer $owner_id)
Сбросить для пользователя или группы $owner_id права на все страницы на дефолтные
Integer $owner_id id пользователя или группы пользователей
getUsersByElementPermissions(Integer $elementId, Integer $level)
Получить список всех пользователей или групп, имеющих права на страницу $elementId
Integer $elementId id страницы
Integer $level = 1 искомый уровень прав
Возвращает Array массив id пользователей или групп, имеющих права на страницу
pushElementPermissions(Integer $elementId, Integer $level)
Указать права на страницу. Влияет только на текущую сессию, данные в базе изменены не будут
Integer $elementId id страницы
Integer $level = 1 уровень прав доступа (0-3).
Возвращает permissionsCollection экземпляр класса permissionsCollection
Возвращает Integer $guestId id пользователя "Гость"
umi-cms.spb.su