Павел Романов

Павел Романов

С нами с 03 марта 2014; Место в рейтинге пользователей: #36
05 июля 2016, 19:03
+2
Ну вообще-то конечно сниппет — самое оптимальное для таких вложенностей.
Но если стоит pdoTools и выводите соответствующими инструментами, то попробуйте Fenom использовать:
{var $av = $_pls['tv.aviable']}
{if $av == 0}
	Нет в наличии
{else}
	{if $av > 1 && < 10}
		<i class="fa fa-circle"></i>
	{else}
		{if $av >= 10 && < 30}
			<i class="fa fa-circle"></i> <i class="fa fa-circle"></i>
		{else}
			{if $av >= 30}
				<i class="fa fa-circle"></i> <i class="fa fa-circle"></i> <i class="fa fa-circle"></i>
			{/if}
		{/if}
	{/if}
{/if}
Вроде, нигде не ошибся ))
05 июля 2016, 16:17
0
Попробуйте так:

<?php
$tip_poddonov = $hook->getValue('tip_poddonov');
$maxweight = $hook->getValue('maxweight');
$q = count($tip_poddonov);
$count = 0;
while($count < $q){
    $string .= '<b>Тип поддонов для грузов:</b> '.$tip_poddonov[$count].'<br /><b>Макс. вес груза на палете, кг:</b> '.$maxweight[$count].'<br /><br />';
    $count++;
}
$modx->setPlaceholder('all', $string);
return true;
04 июля 2016, 17:24
+2
Системная настройка tree_default_sort.
03 июля 2016, 18:04
0
Ну и славненько ).
Вообще, IMHO, если вывод чуть хитрее стандартного (несколько вкладок у формы, зависимые TV, запросы, подобные Вашему), лучше всегда конфигурации использовать — там, кстати, и возможностей больше.
03 июля 2016, 17:15
0
1. Если вывести на какой-нибудь странице:
[[Snippet? &id=`1`]]
Что-то выводит?

2. И сделайте, все же, через конфигурацию.
03 июля 2016, 16:38
0
Я сейчас проверил — работает. Сделайте конфигурацию — таким образом Вы избегнете ошибок.
Например, эта строка, как минимум, должна быть такой:
{"header":"Альбом", "sortable":"false", "dataIndex":"albumname", "renderer": "this.renderChunk", "renderchunktpl":"[[Snippet? &id=`[[+album]]`]]"}
03 июля 2016, 15:53
0
Да, сорри, это я не понял, что речь про админку.

Прежде чем писать свой, попробуйте сделать это MIGX-поле через конфигурацию.
Только для вывода в таблице назовите поле не album, а как-нибудь иначе, например, albumname.
У него в качестве ререндера выберите thisRenderChunk и в поле renderChunk template пропишите:
[[Snippet? &id=`[[+album]]`]]
03 июля 2016, 11:18
0
Можно сделать сниппет по мотивам этого:

<?php
if(empty($id)) return '';
$table = 'modx_gallery_albums';
$sql = "SELECT `name` FROM `$table` WHERE `id` = $id";
$query = new xPDOCriteria($modx, $sql);
if ($query->prepare() && $query->stmt->execute()){
    $res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
    foreach ($res as $row){
        $out = $row['name'];
    }
} else {
    $out = "Ошибка";
}
return $out;

И вызывать его так:
[[Snippet? &id=`[[+album]]`]]

А можно поставить Rowboat и вызывать так:
[[Rowboat?
   &table=`modx_gallery_albums`
   &tpl=`album-name`
   &where=`{"id":"[[+album]]"}`
]]

Чанк «album-name»:
[[+name]]
01 июля 2016, 12:14
0
У Вас что этот [[+results] выводит?
01 июля 2016, 11:53
0
А так работает?
<fieldset id="mse2_[[+table]][[+delimeter]][[+filter]]">
	<span>Сортировать по формату:</span>
	[[+rows]]
</fieldset>
01 июля 2016, 11:39
1
+1
У Вас дата в базе хранится в виде 2016-07-01 03:00:00, а Вы пытаетесь фильтровать по дате в Unix-формате.
Если в лоб, то решение следующее:
1. Сделать еще одно поле timeUnix типа текст.

2. Сделать плагин на событие OnDocFormSave, который будет брать дату из поля timeEvent, переводить ее в нужный формат и записывать в поле TV timeUnix:
<?php
$res = $modx->getObject('modResource', $id);
$date = $res->getTVValue('timeEvent');
if(empty($date)) return '';
$time = strtotime($date);
$res->setTVValue('timeUnix', $time);

3. Выборку в pdoResources cделать уже через этот новый TV:
&where=`{"timeUnix:>=,<=:AND":[1467331200,1498867200]}`
30 июня 2016, 15:36
+1
Вы пытаетесь получить значение поля из формы, да еще и без указания самого поля)).
Вам же нужно записать значение в плейсхолдер:
$hook->setValue('allFormFields','тут_то_что_нужно записать');
30 июня 2016, 15:17
0
Если товары в ресурсах, то подойдет. В описании же:
"— Возможность работы с любым ресурсом, не обязательно товар Minishop2."
18 июня 2016, 17:21
0
А, ну тогда да.
Сделайте, чтобы в базе было так: #63#||#66#||#636# и все будет гораздо проще ))

18 июня 2016, 17:04
0
Если у Вас в TV subcategory у товара в базу пишется ||***||, то будет.

У одного товара это ||63||, у другого может быть ||636||,||363|| (если параметр множественный и соответствующим образом настроен), у третьего ||6363|| и тут нет никаких пересечений — это разные строки.
Если прописывать в tvFilters %||[[*id]]||%, то все нормально будет выводиться.
На странице с ID=636 мы же ищем товар, у которого в TV есть именно такая подстрока: ||636||. С какой стати нам выведется товар с ||63||?

Другое дело, что может быть путаница из-за этого || — потому я всегда использую #.
18 июня 2016, 16:47
0
Это понятно. Я сам обычно использую ## или ::
А что у Вас не работает-то? Если Вы используете || в качестве обёртки, то это должно фунциклировать:
&tvFilters=`subcategory==%||[[*id]]||%`

Только вызов у Вас какой-то странный. Сделайте так:
[[pdoResources?
        &parents=`53`
        &includeTVs=`image,price,price-wsale,subcategory`
        &tpl=`product-item`
        &templates=`4`
        &tvFilters=`subcategory==%||[[*id]]||%`
        &tvFiltersOrDelimiter=`:`
]]
18 июня 2016, 16:30
0
А так?
&tvFilters=`subcategory==%[[*id]]%`
15 июня 2016, 19:04
0
Так в логе же:

[2016-06-15 19:03:26] (ERROR @ /home/s5689/www/core/components/formit/model/formit/fihooks.class.php : 552) [FormIt] Произошла ошибка при попытке отправить почту. Невозможно запустить функцию mail.

И у многих хостеров на тестовый период mail() отключена (TimeWeb, например).
10 июня 2016, 14:57
+2
Сделайте сниппет amp (только пробел уберите тут: & amp;):
<?php
return str_replace('&', '& amp;', $input);

И используйте как модификатор:
[[+pagetitle:amp]]

Ну или встроенным (тоже без пробела):
[[+pagetitle:replace=`&==& amp;`]]