Ответы пользователя по тегу UMI.CMS
  • Как использовать umiTemplaterPHP при разработке php-шаблона?

    @ilyarsoftware
    К umiTemplaterPHP это отношения не имеет, это стандарт документирования PHPDoc, многие IDE поддерживают его по умолчанию или с плагином. Ищите информацию о поддержке этого стандарта в используемой IDE.

    Для документирования массива на текущий момент стандарт дает следующий пример:

    /**
     * Initializes this class with the given options.
     *
     * @param array $options {
     *     @var bool   $required Whether this element is required
     *     @var string $label    The display name for this element
     * }
     */


    Для документирования результата, логично использовать так:

    /**
     * @return array {
     *     @var bool   $required Whether this element is required
     *     @var string $label    The display name for this element
     * }
     */


    Но такое применение может не поддерживаться текущими инструментами для работы с PHPDoc. На эту тему открыто обсуждение в проекте развития PHPDocumentor.

    Возможные решения рассмотрены в документе: Документирование ассоциативных массивов в PHPDoc.
    Ответ написан
  • Добавление цены к товару при отправки его в корзину UMI?

    @ilyarsoftware
    Как можно отправить запрос с ценой = 1 000?

    Если кратко, то никак. Подробнее можно прочитать в документации по макросу %emarket basket()% именно он используется для взаимодействие с корзиной для текущего пользователя.

    Ниже опишу возможные варианты применения применения коэффициента для цены.

    Используйте валюты, системная валюта "фантики", в модуле Интернет магазин устанавливаете курс рублей 10, на посетителю показываете рубли. Создаем новою валюту, и устанавливаем ее в качестве системной валюты в config.ini, Код валюты по умолчанию: default-currency = "RUR", можно использовать существующие, если только у вас отключено обновление валют, в противном случае курс будет обновятся.

    Более простой вариант для применения коэффициента к цене можно задействовать функционал скидок.

    Для реализации более сложной логики применения коэффициента следует использовать API UMI.CMS, например реализовать обработчик событий umiObjectProperty_loadPriceValue для отображения цены и order_refresh (в зависимости от требований может потребоваться использовать событие orderItem_refresh) для расчета заказа (подробнее смотри документацию Разработка нестандартного функционала / Событийная...).

    Как вариант использования API UMI.CMS сделать собственную реализацию процесса работы с корзиной и оформления товара это будет проще чем делать с нуля, но сложнее чем реализация обработчиков событий, зато получаем больше контроля.
    Ответ написан
    4 комментария
  • Как добавлять объекты в справочник через Edit-in-Place в UMI?

    @ilyarsoftware
    Делать это 40 полями в свойствах объекта не рационально.

    Вполне рационально т.к. UMI.CMS отдельно хранит схему данных (Шаблонны данных - тип) и данные (объекты системы), остается решить вопрос интерфейс для этого будет полезно использовать возможность кастомизации системы которая назавается Перегрузка шаблонов административного интерфейса или через фронтенд, что будет еще проще реализовать.

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


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

    Так не работает: имена полей перекликаются, например name он подставляет заголовок страницы.


    Проблема решения описана не достаточно подробно, предположу что, проблема в данных, посмотрите как базе записано имя элемента справочника, если я правильно определил проблему, по данным все будет понятно.
    Ответ написан
  • Какие изменения исходников допустимы, чтобы не потерять поддержку службы заботы?

    @ilyarsoftware
    Изменения системы регламентируются Лицензионным договором:
    3.2.4. Клиент вправе вносить изменения в правомерно приобретённый экземпляр Системы исключительно в целях функционирования Системы на конкретных технических средствах Клиента или под управлением конкретных программ Клиента (адаптация) в пределах, указанных на странице docs.umi-cms.ru/system_modification_rules, а также исправлять явные ошибки Системы.

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

    Кроме этого, важно помнить, что изменяя исходный код системы не предусмотренный для клиентских решений теряется не только поддержка, а также и техническая возможность обновления (измененные системные файлы будут презаписанны).
    Ответ написан
    Комментировать
  • Как отключить кэширование сайта на UMI CMS?

    @ilyarsoftware
    За кэширование отвечает Секция [cache] в файле config.ini, который находится в корне системы. Основные параметры config.ini можно установить в административном интерфейсе.

    Не исключайте возможные иные причины проблемы, например: кеш браузера или вносите изменения в неиспользуемый шаблон.
    Ответ написан
  • Как добавить дополнительное поле описание товара в админке UMI?

    @ilyarsoftware
    Добавить дополнительное поле можно через Модуль "Шаблоны данных", в стандартных типах данных группы полей и некоторые поля могу быть защищены от редактирования, например Общее [common]. Это сделано намерено, для защиты пользователя от фатальной ошибки.

    Для того чтобы иметь возможность редактировать защищенные группы и поля надо в адресной строке, при редактировании типа данных добавить параметр ?skip-lock=1 и перезагрузить страницу.

    Делайте это внимательно, не удалите "лишнего", что может привести к ошибкам работы системы.
    Ответ написан
    1 комментарий
  • Как редактировать содержимое страницы?

    @ilyarsoftware
    Посмотрите это видео Создание и редактирование каталога товаров, еще будет полезен это Редактирование объекта каталога.

    Некоторая информация отображаемая посетителю сайта действительно может быть не доступна для редактирования через административный интерфейс (может быть особенностью конкретного внедрения). В таком случае надо обратится к разработчику и уточнить требования по реализации, UMI.CMS позволяет сделать доступной для редактирования любую отображаемую пользователю информацию.
    Ответ написан
    Комментировать
  • Как отменить кэширование одного из xslt-шаблонов?

    @ilyarsoftware
    В конфигурационном файле есть секция [cache] в ней можно настроить not-allowed-methods. Если логику реализовать через кастомный макрос используя его для доставки CSS, то появится возможность добавить опцию not-allowed-methods[] = "custom/someLogic". Кастомный макрос прописать в шаблоне:

    <link rel="stylesheet" href="/udata/custom/someLogic" />

    Теоретически должно помочь.
    Ответ написан
    Комментировать
  • Ошибка в запросе usel?

    @ilyarsoftware
    Протокол USel это обертка над selector, включите отладку: define( "DEBUG_SQL_SELECTOR", false ), будет видно построены запрос по которому можно будет сделать вывод о причине проблемы.
    Ответ написан
  • Как вывести поле из полной новости в анонс?

    @ilyarsoftware
    Любое поле или группу любой страницы можно получить через протокол UPage, пример вывода значения поля content:

    <xsl:value-of 
      select="document(concat('upage://', @id, '.content'))//value"
      disable-output-escaping="yes" />

    @id это идентификатор страницы которое можно получить в текущем контексте, а также можно использовать путь страницы.

    Суть примера сводится к построению запроса: concat('upage://', @id, '.content')) в результате будет обращение по адресу upage://1.content (при @id=1), а //value обращение к ноде результирующего XML.

    Протокол UPage можно тестировать в браузере, например: http://site.com/upage/1.content или http://site.com/upage/1 для получения всей страницы.
    Ответ написан
    1 комментарий
  • Почему не удаляются из объектов каталога свойства?

    @ilyarsoftware
    Так может быть. Типы в модуле Шаблоны данных могут быть вложенными, если мы добавляем атрибут в тип то этот же атрибут будет добавлен ко всем "детям", а удаление не наследуется т.е. атрибут может остаться в одном из типов. Посмотрите внимательно к какому типу относится объект и проверти атрибуты типа.
    Ответ написан
  • Как передать цену из другого поля?

    @ilyarsoftware
    Заказ пересчитывается при обновлении корзины и в момент оформления, поэтому манипуляция с объектами корзины напрямую непредсказуемо, посмотрите в направление обработки событий, например Цена в зависимости от условий.
    Ответ написан
  • Как организовать попарный вывод элементов списка в UMI.CMS?

    @ilyarsoftware
    Попробуйте так:
    <xsl:param name="colnum" select="2"/>
    
    <xsl:template match="udata[@module = 'catalog'][@method = 'getObjectsList']">
      <xsl:apply-templates select="lines/item[position() = 1]|lines/item[position() mod $colnum = 1]"/>
    </xsl:template>
    
    <xsl:template match="item">
      <div>
         <xsl:apply-templates select=".|following-sibling::item[position() &lt; $colnum]" mode="div"/>
      </div>
    </xsl:template>
    
    <xsl:template match="item" mode="div">
      <span class="element-{@id}" >
        <xsl:value-of select="."/>
      </span>
    </xsl:template>

    Демонстрация примера.
    На эту тему есть статья: Таблицы в несколько колонок в XSLT-шаблонах и похожий вопрос рассматривается в теме: вывод объектов каталога.
    Ответ написан
    Комментировать
  • Откуда взялась и как исправить - ошибка в UMI: coreException: CSRF Protection?

    @ilyarsoftware
    Может быть поможет, посмотрите раздел Главная/Конфигурация/Настройка доменов, если домен с которого вы работает не является основным, добавьте его в список Адрес зеркала домена в свойствах основного домен вашего сайта.

    Пробуйте решение для Ошибка (coreException): Give me a normal type to c..., эти ошибки могут быть связаны.

    Как временное решение можете отменить защиту CSRF установив параметр csrf_protection=0 в config.ini.
    Ответ написан
  • UMI CMS выдает неправильный ответ сервера?

    @ilyarsoftware
    Посмотрите внимательно (убрал лишние заголовки):

    $curl -I http://comfortauto.kz/jhfuyj/
    HTTP/1.1 404 Not Found
    Status: 404 Not Found
    
    $ curl -I http://comfortauto.kz/jhfuyj
    HTTP/1.1 301 Moved Permanently
    Status: 301 Moved Permanently
    Location: /jhfuyj/

    Первая ссылка показывает правильный ответ сервера на несуществующую страницу, вторая ссылка преадресация потому что ссылка не на "папку" т.е. не заканчивается символом "/", за это поведение отвечает параметр folder-redirect = "1" секция [seo] в файле конфигурации config.ini, подробнее тут.

    Как на этом движке вообще устроен принцип ответа сервера... ответ зависит от того что надо сделать, часто требуемое поведение ответа сервера решает секция [seo] в файле конфигурации config.ini.

    За оформление страницы 404 отвечает шаблон, меняется это в зависимости от того какой в вашем проекте используется шаблонизатор:
    • TPL: content/not_found/default.tpl
      <?php
      
      $FORMS = Array();
      
      $FORMS['block'] = <<<HTML
      <p>Такой страницы на сайте не существует.</p> 
      HTML;

    • XSLT:
      <xsl:template match="udata[@module = 'content'][@method = 'sitemap']">
        <p>Такой страницы на сайте не существует.</p>
      </xsl:template>



    Подробнее тут и тут.
    Ответ написан
    1 комментарий
  • Как закрыть админку в UMI CMS?

    @ilyarsoftware
    Верный способ запретить доступ к /admin через настройки веб-сервера, например отредактировать .htaccess в корне проекта, добавить правило:

    RewriteEngine On
    RewriteRule ^admin - [R=404,L]
    ####################### UMI_CMS_HTACCESS_BEGIN ###########################


    После применения все ссылки начинающиеся с admin/ будут отдавать код 404 (страница не найдена).

    Где находится админка уже не важно, но если интересно... Реализация админки в UMI.CMS модульная и ее реализация находится в папке соответствующего модуля (classes/modules/*/__admin.php), ее можно оставить на месте.
    Ответ написан
    5 комментариев
  • Как вывести все объекты в каталоге на одной странице, UMI CMS?

    @ilyarsoftware
    Для того что макрос getObjectsList показал все товары, надо передать вместо номера страницы значение all , другими словами надо добавить на страницу ссылку:
    <a href="?p=all">Показать все товары</a>
    Ответ написан
    1 комментарий
  • Разбор get параметров UMI?

    @ilyarsoftware
    Вероятно это ошибка, воспроизводится на версии 2.9.7-49344.
    Ответ написан
    Комментировать
  • Почему XSL не читает куки?

    @ilyarsoftware
    Возможность получить значение куки в процессе XSLT-преобразования зависит того какой XSLT-процессор используется в рабочем окружении. Также можно наблюдать, как этот вопрос по разному решается в продуктах или библиотеках.

    В частности UM.CMS (проверял на версии 2.9.7-49344) передает значение куки в одноименный параметр при выполнении трансформации шаблона.

    Беда может быть связана с более старой версией, где это поведение не поддерживается, либо каким либо внешним багом.
    Ответ написан
    Комментировать