Modx revo вывод если есть TV

Предположим, что вы хотите получить значение одного поля из какого-то объекта MODX (чаще всего ресурса, пользователя или профиля пользователя). Давайте используем ресурс. Обычно для получения значения поля ресурса сначала получают сам объект $doc = $modx->getObject() , а затем значение любого поля $doc->get(‘fieldName’) . При использовании данного способа необходимо проверить, что объект $doc существует. Иначе вызов с помощью метода $doc->get() выдаст ошибку PHP.

Кроме того, этот способ довольно медленный и очень ресурсоемкий. Вам нужно получить значение только одного поля, а получаете весь объект в памяти. Есть другой способ. Он более быстрый и менее затратный.

Получить значение поля объекта

Воспользуемся методом xPDO::newQuery() , который позволяет получать значения из базы данных напрямую, минуя сложные проверки и создание объектов.

$query = $modx->newQuery(‘modResource’, array( ‘pagetitle’ => ‘Products’, )); $query->select(‘introtext’); $intro = $modx->getValue($query->prepare());

Этот метод работает с любыми объектами MODX. Если что-то пойдет не так (или объект не найден, или значение поля не установлено), $modx->getValue() вернет false.

MODX. Вывод новостей на сайте

Получение поля объекта типа Boolean

Для того, чтобы отличить ошибку от значения «0», нужно использовать сравнение по типам (===).

Необходимо помнить, что тип возвращаемого значения будет string. Поэтому правильно сравнивать нужно так

Получение значения TV

Обычно пользуются стандартными методами.

/* Объект TV получен и нужно получить необработанное значение TV */ $val = $tvObj->getValue($resourceId); /* Получаем обработанное значение TV */ $val = $tvObj->renderOutput($resourceId); /* Используя объект ресурса можно получить обработанное значение TV */ $val = $resource->getTVValue($tvId);

Еще по теме:  Wink или Яндекс плюс

Попробуем вышеописанный метод. Значения TV хранятся в объекте modTemplateVarResource (таблица modx_site_tmplvar_contentvalues). Но у TV еще есть значение по-умолчанию. Поэтому учтем этот вариант.

$resourceId = 23; $tvId = 12; /* Получаем значение объекта modTemplateVarResource */ $query = $modx->newQuery(‘modTemplateVarResource’, array( ‘contentid’ => $resourceId, ‘tmplvarid’ => $tvId, )); $query->select(‘value’); $val = $modx->getValue($query->prepare()); /* Получаем значение TV по-умолчанию если запись не найдена */ if ($val === false) { $query2 = $modx->newQuery(‘modTemplateVar’, array( ‘id’ => $tvId, )); $query2->select(‘default_text’); $val = $modx->getValue($query2->prepare()); }

Необходимо помнить, что этот метод возвращает необработанное значение. Например, для Image TV вы получите не картинку, а путь к ней. А вместо даты, только строковое значение timestamp.

Получение значения даты

Метод getValue() всегда возвращает необработанное значение в отличие от get() . Поэтому для вывода значения в формате даты нужно использовать функцию strftime()

$query = $modx->newQuery(‘modResource’, array( ‘pagetitle’ => ‘Products’, )); $query->select(‘editedon’); $editedOn = $modx->getValue($query->prepare()); if ($editedOn === false) { /* Запрос не выполнен */ $output = ‘Ресурс не найден’; } elseif (empty($editedOn)) { $output = ‘Ресурс не редактировался’; } else { $output = strftime(‘%m, %d, %Y’, $editedOn); } return $output;

17 декабря 2015 0 6800

ModX Revo — Урок №3.1 Шаблоны. Вывод ресурсов и создание TV поля

arkadyexp 02 февраля 2017 # ↓ 0

Подскажите пожалуйста, как реализовать подобное:
Есть магазин на шопкипере, и есть задача отказаться там от встроенного плагина мультвалютности, а реализовать простое умножение поля price с ценой на значение другого tv (назовем его курс валюты).
Вся эта затея нужна чтобы кнопочкой в товаре переключать тип валюты, которая используется для добавления товара, простым языком сделать кнопку при перекл. которой цена будет умножаться на курс, или не будет т.е. своего рода-вводим цену конкретного товара в рублях или евро.
Во фронте отображение цены планирую сделать тупо модификаторами, естественно такая цена, улетая в корзину, не умножится на значение поля курса. Поэтому я нашел кусочек кода в shopkeeper.class.php с формированием цены:

Еще по теме:  Давление газа ТВ г

$purchaseOutput = array( ‘id’ => $p_id, ‘count’ => $p_count, ‘price’ => $p_price*(Это значение нужно умножить на значение TV) ‘name’ => htmlspecialchars( $this->purchase->get($this->config[‘fieldName’]) ), ‘className’ => $packageData[‘className’], ‘packageName’ => $packageData[‘packageName’], ‘options’ => $p_options, ‘url’ => $linkUrl );

price мне просто нужно умножить на значение дополнительного поля. Как это можно сделать?
Я понимаю что все чуть сложней мне сначала нужно вывести условие в настройке товара (кнопочку умножается цена или нет на курс) и если умножается, то это значение price умножить на значение tv в отдельном документе (назовем его настройки сайта) или же прям напрямую на число в БД курса. Все что касается modx модульно реализуемо, а вот в php вообще никак не выходит.
Ну или если «это долго рассказывать», то хоть напишите как получить в php значение tv поля и присвоить его например $kurs, чтобы хотябы просто умножить))). Аминь

Источник: modzone.ru

3 урок Корпоративный сайт на MODX Revolution. Вывод изображений слайдера через TV поля, ТВ на MODX

Здравствуйте, Друзья! Буду рад вашей поддержке: Карта Сбербанка: 5484 0100 1558 0676 В данном видео уроке мы выведем слайдер на главной странице нашего сайта, при помощи TV полей. Реализуем таким образом вывод изображений на MODX Revo. Ссылка на первый урок по созданию корпоративного сайта на MODX revolution: youtu.be/ncbK1n7sJds Также, у меня есть видео урок по переносу сайта на MODX с OpenServer на хостинг в интернете: youtu.be/3zePlFxnoU4 Также, есть видео урок по выводу новостей на MODX Revo, при помощи дополнения MIGX: youtu.be/I2-vTCE8mjY Если Вас интересует создание или продвижение сайта на MODX Revolution, обращайтесь по следующим контактам: vasya_maksmail.ru

Источник: ekadoctor.ru

Еще по теме:  Сумерки на ТВ в ближайшее время когда

3 урок Корпоративный сайт на MODX Revolution. Вывод изображений слайдера через TV поля, ТВ на MODX

Здравствуйте, Друзья! Буду рад вашей поддержке: Карта Сбербанка: 5484 0100 1558 0676 В данном видео уроке мы выведем слайдер на главной странице нашего сайта, при помощи TV полей. Реализуем таким образом вывод изображений на MODX Revo. Ссылка на первый урок по созданию корпоративного сайта на MODX revolution: youtu.be/ncbK1n7sJds Также, у меня есть видео урок по переносу сайта на MODX с OpenServer на хостинг в интернете: youtu.be/3zePlFxnoU4 Также, есть видео урок по выводу новостей на MODX Revo, при помощи дополнения MIGX: youtu.be/I2-vTCE8mjY Если Вас интересует создание или продвижение сайта на MODX Revolution, обращайтесь по следующим контактам: vasya_maksmail.ru

Источник: sovenok-ya.ru

Оцените статью
Добавить комментарий