sgController(DocLister) — в шаблоне элемента вызываю самописный сниппет с параметром
[[library_prev? &v='[+introtext+]']]
сам код сниппета
<?php
$replText = $v;
echo mb_strimwidth("$replText", 0, 10, "...");
Но в результате получаю пустоту либо просто вывод introtext если писать
echo $v;
Почему значение не приравнивается к строке или что-то есть ещё?
Вызыв сниппета:
[[sgController?
&sgOrderBy=`sg_id DESC`
&thumbSnippet=`phpthumb &thumbOptions=w=200&h=350&zc=1`
&tpl=`@CODE: <div class="col-4"> <h3>[+pagetitle+]</h3> [+images+] <p>[[library_prev? &v='[+introtext+]']]</p> </div>`
&sgOuterTpl=`@CODE:[+wrapper+]`
&sgRowTpl=`@CODE:<img src="[+thumb.sg_image+]" class="img-thumbnail" alt="[+e.sg_title+]" title="[+e.sg_description+]">`
&sgDisplay=`1`
]]
Сниппет library_prev вызывается, в вашем случае, со значением аргумента равным [+introtext+], т.к. интерполяция значений плейсхлдеров (и специальных тегов текущего документа), в генерируемой странице, происходит на более позднем этапе.
Ваш сниппет будет возвращать результат - строку со значением [+introtex, которую вы и будете видеть в результатах работы DocLister.
Вам нужно, внутри вашего сниппета, получать значение плейсхолдера introtext c использованием MODx API.
Ваш сниппет я бы переписал так:
<?php
$replText = $modx->getPlaceholder($v);
return mb_strimwidth($replText, 0, 10, "...");
И вызывал бы так: [[library_prev? &v='introtext']]
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости