Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 145 комментариев

Александр Либерг
Александр Либерг
Нашел код:

MODX Revolution 2.2.7-pl (traditional)

../core/model/modx/modparser.class.php
со строки 280

/**
     * Parses an element/tag property string and returns an array of properties.
     *
     * @param string $string The property string to parse.
     * @param boolean $valuesOnly Indicates only the property value should be
     * returned.
     * @return array The processed properties in array format
     */
    public function parsePropertyString($string, $valuesOnly = false) {
        $properties = array();
        $tagProps= xPDO :: escSplit("&", $string);
        foreach ($tagProps as $prop) {
            $property= xPDO :: escSplit('=', $prop);
            if (count($property) == 2) {
                $propName= $property[0];
                if (substr($propName, 0, 4) == "amp;") {
                    $propName= substr($propName, 4);
                }
                $propValue= $property[1];
                $propType= 'textfield';
                $propDesc= '';
                $propOptions= array();
                $pvTmp= xPDO :: escSplit(';', $propValue);
                if ($pvTmp && isset ($pvTmp[1])) {
                    $propDesc= $pvTmp[0];
                    if (($pvTmp[1]=='list' || $pvTmp[1]=='combo') && isset($pvTmp[3]) && $pvTmp[3]) {
                        if (!$valuesOnly) {
                            $propType = modParser::_XType($pvTmp[1]);
                            $options = explode(',', $pvTmp[2]);
                            if ($options) {
                                foreach ($options as $option) $propOptions[] = array('name' => ucfirst($option), 'value' => $option);
                            }
                        }
                        $propValue = $pvTmp[3];
                    }
                    elseif ($pvTmp[1]!='list' && $pvTmp[1]!='combo' && isset($pvTmp[2]) && $pvTmp[2]) {
                        if (!$valuesOnly) {
                            $propType = modParser::_XType($pvTmp[1]);
                        }
                        $propValue = $pvTmp[2];
                    } else {
                        $propValue = $pvTmp[0];
                    }
                }
                if ($propValue[0] == '`' && $propValue[strlen($propValue) - 1] == '`') {
                    $propValue= substr($propValue, 1, strlen($propValue) - 2);
                }
                $propValue= str_replace("``", "`", $propValue);
                if ($valuesOnly) {
                    $properties[$propName]= $propValue;
                } else {
                    $properties[$propName]= array(
                        'name' => $propName,
                        'desc' => $propDesc,
                        'type' => $propType,
                        'options' => $propOptions,
                        'value' => $propValue
                    );
                }
            }
        }
        return $properties;
    }
Вроде оно)))
Александр Либерг
Александр Либерг
Как вариант:
[[$chankName?
		  	&grid=`4`
		  	&title=ПОИСК что то там
		  ]]
Т.е. title — без апострафов, да у меня там еще grid передается — его ставить первым (выше параметра на русском) иначе он тоже в title лезет.

Получается что русские символы ломают парсер, после них парсер перестает парсить параметры)))))
Но корень проблемы не решен!

Ищу в коде мод икса место отвечающее за парсинг параметров чанка)))) посмотрим что там
Александр Либерг
Александр Либерг
Да в принципе могу чанков разных наделать :-)
И кнопку кастомизироваеть не обязательно (скорее всего везде «искать» будет), а вот заголовок надо разный! Но тут еще одна проблема: если параметр на русском то в HTML вставляется с апострофами ` — или как этот символ называется :-) (это те кавычки в которых параметр пишется).

Но на английском все четко срабатывает)
А код трогать не охота — потом если обновить версию модикса, то надо опять лезть в код, а самое главное запомнить где правил))))
Алексей
Алексей
А оно надо обязательно — кастомизировать надпись на кнопке? Если нет, поправить прямо в чанке [[+button]] на «Искать», и можно спокойно искать причину такого поведения передачи параметров в чанк. Самому интересно.
Василий Наумкин
Василий Наумкин
Саша Иващенко
Саша Иващенко
хаха, сарказм, прикольно ))

я про то, что я не могу заменить
<a href="[[+360x450:default=`[[+url]]`]]"
на
<a href="javascript:void(0);"
так как не отображается картинка
или просто не понимаю как…
а вы мне про подумай и угадай где оно выводится.

Ну вернее я мог не так выразить свою мысль.
Саша Иващенко
Саша Иващенко
так я не вкурю в каком сниппете оно генерирует код текущего(дефолтного) показа картинок (галереи)
добавил событие к ссылке
onclick="reloadd();"
и
$(function reloadd() {
        //Some code
        return false;
    });
а оно картинку не хочет показывать, видимо в сниппете оно добавляет свое действие. но в каком я чет не найду
Саша Иващенко
Саша Иващенко
А еще точнее
Пример в верстке
<ul id="thumblist" class="clearfix" >
  <li><a class="zoomThumbActive" href='javascript:void(0);' rel="{gallery: 'gal1', smallimage: './imgProd/triumph_small1.jpg',largeimage: './imgProd/triumph_big1.jpg'}"><img src='imgProd/thumbs/triumph_thumb1.jpg'></a></li>
  <li><a href='javascript:void(0);' rel="{gallery: 'gal1', smallimage: './imgProd/triumph_small2.jpg',largeimage: './imgProd/triumph_big2.jpg'}"><img src='imgProd/thumbs/triumph_thumb2.jpg'></a></li>
  <li><a  href='javascript:void(0);' rel="{gallery: 'gal1', smallimage: './imgProd/triumph_small3.jpg',largeimage: './imgProd/triumph_big3.jpg'}"><img src='imgProd/thumbs/triumph_thumb3.jpg'></a></li>
</ul>
и кусок tpl.msGallery.row в котором href
<a href="[[+360x450:default=`[[+url]]`]]" class="thumbnail"..
уже занят и как javascript:void(0) туда запихнуть?
<li class="span2">
	<a href="[[+360x450:default=`[[+url]]`]]" class="thumbnail" data-image="[[+url]]" rel="{gallery: 'gal1', smallimage: '[[+136x205]]',largeimage: '[[+360x450:default=`[[+url]]`]]'}">
		<img src="[[+136x205]]" alt="" title="[[+name]]" width="136" height="205">
	</a>
</li>
Саша Иващенко
Саша Иващенко
дополняю пост:
tpl.msGallery.row
<li class="span2">
    <a href="[[+360x450:default=`[[+url]]`]]" class="thumbnail" data-image="[[+url]]" rel="{gallery: 'gal1', smallimage: '[[+136x205]]',largeimage: '[[+360x450:default=`[[+url]]`]]'}">
        <img src="[[+136x205]]" alt="" title="[[+name]]" width="136" height="205">
    </a>
</li>
tpl.msGallery.outer
<div id="msGallery">
    <a rel="fancybox gal1" class="jqzoom" href="[[+image]]" target="_blank" >
        <img src="[[+360x450]]" width="360" height="450" alt="" title="" id="mainImage" />
    </a>
    <ul class="thumbnails">
        [[+rows]]
    </ul>
</div>
<script type="text/javascript">
    $(function() {
        $('.jqzoom').jqzoom({
            zoomType: 'standard',
            lens:true,
            preloadImages: false,
            alwaysOn:false
        });
    });
</script>
Андрей
Андрей
У меня 1 товар, к нему в связях добавил 2 товара (связь этих товаров с главным — один ко многим, ну т/е 1 главный товар — остальные дочерние, это верно ?)

Код такой:
[[!getPage?&element=`msProducts`&limit=`5` &sortdir=`ASC`
&showLog=`1` &link=`3` &master=`[[*id]]`]]
в итоге 0.0003040: Total rows: 0, что я не правильно делаю ??