Ivan Shvindin

Ivan Shvindin

Был в сети 19 марта 2019, 17:05
Заказы принимаю
Связями реалиpуется, выводить как-нибудь так, может потом как-нибудь зарефакторю в более приличное состояние)

<select name="options[color]" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
  [[msOptions?name=`color` &tplOuter=`@INLINE [[+rows]]`]]
  [[!msProducts?
    &parents=`0`
    &master=`[[*id]]`
    &link=`1`
    &tpl=`tpl1`
    &tplWrapper=`@INLINE [[+output]]`
    &limit=`0`
    &wrapIfEmpty=`0`
    &cache=`1`
  ]]
</select>
tpl1
[[!msOptions?
  &name=`color`
  &product=`[[+id]]`
  &tplRow=`@INLINE <option value="/[[+uri]]" [[+selected]]>[[+value]]</option>`
  &tplOuter=`@INLINE [[+rows]]`
]]
юзер заполняет картинки только в ru контексте
[[ms2Gallery? &resource=`[[*LanguageLinks:getID]]`]]
в ресурсе ТВха бабела, через свой фильтр получающая id

<?php
$input = explode(';', $input);
foreach ($input as $row) {
    $tmp = explode(':', $row);
    $array[$tmp[0]] = $tmp[1];
}
return $array[ru];
Описания картинок соответственно тоже нужно заполнять в одном месте в определённом формате (ru==Картинка1||en==Picture1)
<div class="span2 col-sm-2">
	<a href="[[+360x270:default=`[[+url]]`]]" class="thumbnail" data-image="[[+url]]">
		<img src="[[+120x90]]" alt="[[+description:getTXT]]" title="[[+name:getTXT]]" width="120" height="90">
	</a>
</div>
<?php
$lang = $modx->getOption('cultureKey', null, 'default');

$input = explode('||', $input);
foreach ($input as $row) {
    $tmp = explode('==', $row);
    if ($tmp[0] == 'web') {$tmp[0] = 'sk';} // язык для стандартного контекста
    $array[$tmp[0]] = $tmp[1];
}
return $array[$lang];
вот
[[getTickets?
  &loadModels=`ms2gallery`
  &leftJoin=`{
    "520x360": {"class":"msResourceFile","alias":"520x360", "on": "520x360.resource_id = Ticket.id AND 520x360.path LIKE '%/520x360/' AND 520x360.rank=0"},
    "View": {"class":"TicketView","alias":"View", "on": "Ticket.id = View.parent"}
  }`
  &select=`{
    "Ticket":"*",
    "520x360":"520x360.url as 520x360",
    "View": "COUNT(View.parent) as views"
  }`
  &groupby=`Ticket.id`
  &sortby=`views`
  &includeOriginal=`1`
  &showLog=`0`
]]
Можно делать адаптивненько через isotope без фиксированной высоты и ширины
Вот такой вызов для бутстрапа
<div class="container">
  <div class="row">
    <div class="col-md-12">
      <div class="isotope">
        <div class="col-md-3"><img class="img-responsive" src="картинка.jpg"></div>
        <div class="col-md-3"><img class="img-responsive" src="картинка.jpg"></div>
        <div class="col-md-3"><img class="img-responsive" src="картинка.jpg"></div>
        <div class="col-md-3"><img class="img-responsive" src="картинка.jpg"></div>
      </div>
    </div>
  </div>
</div>

<script>
$(function () {
    $('.isotope').isotope({
        itemSelector: '.item',
        masonry: { columnWidth: '.col-md-3' }
    });
});
</script>
ну у тебя конечный результат же выводится как-то пользователю?
бери его скриптом и отправляй через скрытый инпут, вот пример подсчёта количества знаков в сообщении
<input type="hidden" id="count" name="count" value="" placeholder="">

<script>
  function ShowCount() {
    var Count = document.getElementById('af_message').value.length; 
    document.getElementById('count').value = Count;
  }
  setInterval(ShowCount, 300);
</script>