Разделы

  
 

[РЕШЕНО] word_limit в phx не работает

В чанке Ditto пишу
[+introtext:word_limit=`10`+]
— ничего не выводит.
Если пишу
[+introtext:limit=`100`+]
— выводит и обрезает, но в конце появляется �
Как победить это?

UPD. Просто не было снипета word_limit
<?php
    $retval = $output;
    $array = explode(" ", $output);
    if (count($array)<=$options)
    {
    $retval = $output;
    }
    else
    {
    array_splice($array,$options);
    $retval = implode(" ", $array);
    }
    return $retval;
    ?>

EVO Как вывести элемент из произвольного документа только если существует?

Подскажите плиз. Как реализовать выбор, например, заголовок из другого ресурса, например, №3. Который определяется в TV текущего документа.

Пытаюсь реализовать конструкцию типа:
[+phx:if=`[[GetField? &docid=`[*mainProjectID*]` &field=`longtitle`]]`:ne=``:then=`1`:else=`2`+]


Это получется, но если нужна картинка, с постобработкой то выходит очень жирная картина.

Если не сложно… Напишите плиз, как может выглядеть сниппет.

Ошибка выполнения phx Parse error: syntax error, unexpected ')'

Вывожу картинку товара с помощью phx. При этом мне нужно, при отсутствии загруженной картинки выводит страндатную nophoto

На такую проверку

[+image:ifnotempty:then=`<img src="[+image+]" class="shk-image"/>`:else=`<img src="images/nophoto.jpg" class="shk-image"/>`+]


парсер выдает ошибку

Parse error: syntax error, unexpected ')' in /assets/plugins/phx/phx.parser.class.inc.php(220) : eval()'d code on line 1


При этом не нравится ему именно оператор else, когда его убираю все работает. Переустановка плагина проблему не решила. Подскажите, в чем может быть проблема?
  • 0
  • 15 апреля 2012, 21:11
  • switch
  • 1

Обработка ссылки с помощью phx

Есть такой чанк
<a rel="example_group" href="[+chek_scan:mphoto:ifempty=``+]">Чек</a>

когда в документе есть скан — выводит ссылку на него, если нет — ничего; но слово «Чек» выводится всегда.
Как его можно выводить только если chek_scan — непустой?
  • -1
  • 14 апреля 2012, 21:01
  • w3d
  • 5

Не работает phx

Доброй ночи!

Есть тв параметр необходимо если он заполнен выводить одно значение, если нет — то другое.

Вот этот код не работает

Вызов дитто

[[Ditto? &tpl=`ditto-product2` &startID=`[+id+]` &sortBy=`menuindex` &hiddenFields=`p1,p2,p3,p4,p5` &sortDir=`ASC` &summarize=`all`  ]] 


шаблон ditto-product2

<tr>
          <td  class="white"><a href="[(base_url)][~[+id+]~]">[+pagetitle+]</a></td>
<td width="60">[+p1:is=`1`:then=`есть`:else=`нет`+]</td>
<td class="white2"></td>
<td width="60">[+p2:is=`1`:then=`есть`:else=`нет`+]</td>
<td class="white2"></td>
<td width="60">[+p3:is=`1`:then=`есть`:else=`нет`+]</td>
<td class="white2"></td>
<td width="60">[+p4:is=`1`:then=`есть`:else=`нет`+]</td>
<td class="white2"></td>
<td width="60">[+p5:is=`1`:then=`есть`:else=`нет`+]</td>

</tr>


p1, p2,p3,p4,p5 — chechbox

почему не понятно.

заранее благодарна за помощь.
  • 0
  • 13 апреля 2012, 02:57
  • tanya
  • 12

Проблема с URL при подключении phx

MODX Evolution 1.0.5, Shopkeeper 1.3.5

Суть проблемы: при отображении товаров в категориях используется такая конструкция

<a href="[+url+] ">Подробнее ›</a>


До установки phx работала отлично, теперь если url имеет вид

http://www.mysite.ru/616-sumka-ik.html

то переход идет не на страницу с товаром, а на документ с ID 616, если такого id нет, тогда все нормально.

Подскажите как исправить? Мучаюсь неделю, не могу найти никакой информации по этому вопросу.

[EVO] Мелкие сниппеты на замену phx

Заменил вот такую конструкцию
<div class="addit-data">
[*addit:is=``:then=``:else=`
<fieldset>
<legend>Дополнительные опции</legend>
[*addit:shk_widget=`checkbox:addit:desc_page:br:price`*]
</fieldset>
`*]
</div>

На такую (добавил комментарии)
<?php
// Проверяем входные данные, если TV параметр не указан, ничего не делаем
if(empty($tv)) {return '';}
// Получаем TV
$tvValue = $modx->getTemplateVar($tv);
// Если значение TV параметра пустое, ничего не делаем
if(empty($tvValue['value'])) {return '';}
// Каждый параметр располагаем с новой строки
$br = isset($br) ? '<br />' : '';
// Идентификатор документа
$docid = '[*id*]';
// Будет ли выбран первый элемент
$first_selected = isset($first_selected) ? true : false;
// Функция на событие onclick
$function = 'jQuery.additOpt(this)';
// Определяем переменную в которой будет располагаться результат работы сниппета, т.е. доп. параметры
$shk_output = '';
// Контейнер для дополнительных параметров (обертка)
$otag = '<div class="addit-data"><fieldset><legend>Дополнительные опции</legend>';
$ctag = '</fieldset></div>';

// Задаем значение TV параметра
$value = !empty($tvValue) ? explode("||",$tvValue['value']) : array();

// Выставляем счетчик на 0
$cnt = 0;
// Добавили к переменной открывающий тег обертки
$shk_output .= $otag;

// Разбираем массив параметров
foreach($value as $val){
    list($item,$itemvalue) = explode("==",$val);
    
    // Если цена доп. параметра меньше 0
    if ($itemvalue<0) {$price = ' <span style="font:700 11px tahoma;color:red">('.$itemvalue.' грн.)</span>';}
    // Если цена доп. параметра равна 0
    elseif ($itemvalue==0) {$price = '';}
    // Если цена доп. параметра больше 0
    else {$price = ' <span style="font:700 11px tahoma;color:red">(+'.$itemvalue.' грн.)</span>';}
    // Выставляем отмеченные параметры
    $selected = $cnt==0 && $first_selected ? ' checked="checked"' : '';
    // Формируем доп. параметр
    $shk_output .= "\n".'<label><input class="addparam" type="checkbox" name="'.$tv.'__'.$docid.'__'.$cnt.'" value="'.$cnt.'__'.$itemvalue.'" id="'.$tvname.$docid.$cnt.'"'.$selected.' onclick="'.$function.'" /> '.$item.$price.'</label>'.$br;
    // Увеличиваем счетчик на 1
    $cnt++;

}
// Добавляем к переменной закрывающий тег обертки
$shk_output .= $ctag;
// Возвращаем готовый результат
return $shk_output;
?>

Вызов
[[addit_params?&tv=`addit`&br=``]]

Сделал побыстрому (взял кусок кода из shk_widget модифиатора для phx) ничего особо не продумывал, доделаю позже. в &tv ставим имя TV параметра и получаем на выходе чекбоксы с названиями и ценой, т.е. для дополнительных параметров товара. Кто юзал Шопкипер знает. Тут еще не все функции работают из shk_widget, т.е. не полноценная замена. Но допилить не тяжело.

Кстати пробовал методы getTemplateVarOutput и getTemplateVar, так вот последний на 1 запрос делает меньше, т.е. если нам нужен не обработанный вывод значения TV, то наверное лучше пользоваться последним
Вот собственно описание этих двух методов
http://wiki.modxcms.com/index.php/API:getTemplateVarOutput
http://wiki.modxcms.com/index.php/API:getTemplateVar

[EVO] немного про PHx (для начинающих)

в MODx EVO если такой замечательный плагин PHx
но очень многие через него решают все свои проблемы
к примеру вместо 2-х 3-х шаблонов делают 1.
применяя конструкцию типа:

[+id:is=`4`:then=`
выводим код и снипеты и все что надо
`:else=`
опять кучу всего 
`+]



( Читать дальше )
  • +3
  • 6 апреля 2012, 18:36
  • Dmi3y
  • 15

[REVO] Вопрос по выводу отдельных ссылок, которые должны отображаться при published=1

Всем привет. Понадобилось создать элементарное верхнее меню, но не просто код в чанке с ссылками. Ссылки всего четыре. Главная задача сделать их так чтобы они отображались только при условии published=1. Попытался я задействовать таких монстров как wayfinder или getResources, но наткнулся на грабли… во первых у меня все четыре документа находятся в корне контекста… Я попробовал например след параметры getResources &parent=`-1` (-1 говорит о том, что брать ресурсы только из &resources) &resources=`2, 3 ,4, 5` и по умолчанию есть условие &showUnpublished=`0` (показывать неопубликованные), но как я поняла оно не работает для &resources, а работает только для &parent. Попытался я воткнуть условие $where = `{'published:=':1}`, но видимо условия писать я тоже не научился и вроде оно тоже не сработает для &resources. Короче я не могу по структуре сайта данные документы затащить в какой-то контейнер чтобы потом дать &parent для этих ссылок. С wayfinder похожие проблемы вышли

Походу как я догадываюсь, что придумал полную фигню и что есть тег системный [[*published]], но я не понимаю как его правильно задействовать c phX… скажу честно я не опытен еще с phX. К тому же мне кажется что это трюк тоже не пройдет. Неужели нужно писать какой-то сниппет для такой ерунды… если нужно, то подскажите плиз как. Всем спасибо!

[Evo] Ditto filter + PHx

Уважаемые.
[!Ditto? &tpl=`item_products_category` &depth=`2` &startID=`7` &filter=`tvweight,@EVAL return $_POST['weight'];,1|tvmaterial,@EVAL return $_POST['material'];,1` &noResults=`Извините, недвижимости по Вашему запросу не найдено.`!]


TV-параметры берутся из такой формы:
<form action="[~318~]" method="post"> 					
<div class="widget shop_by_widget widget-shop-by-material"> 
<h3 class="widget-title">Материал</h3>				
<select name="material"> 
<option value="#">Пожалуйста выберите...</option>
<option value="1">Золото</option> 
<option value="2">Серебро</option> 
</select> 
</div>					
<div class="widget shop_by_widget widget-shop-by-gemstone"> 
<h3 class="widget-title">Вес</h3>				
<div> 
<select name="weight"> 
<option value="#">Пожалуйста выберите...</option>
<option value="1">до 1.5 г.</option>
<option value="2">от 1.5 г. до 3 г.</option>
<option value="3">от 3 г. до 6 г.</option>
</select> 
</div> 
</div>
<input name="Submit" type="submit" value="Просмотр" /> 
</form>

При включенном плагине PHx не работает. При выключенном работает.