Борис

Борис

С нами с 15 марта 2016; Место в рейтинге пользователей: #1010
Баха Волков
06 февраля 2020, 22:07
5
+12
Не не не, не делайте так, помните или почитайте о DRY. С парсером MODX все понятно, ей сложно помочь, но феном-то полноценный шаблонизатор:

{foreach ['receiver', 'phone', 'index', 'region', 'city', 'street', 'building', 'room', 'comment', 'customfield'] as $field}
    {if $address[$field]?}
        <tr>
            <td style="{$style.th};width: 200px; font-weight: 600;">{('ms2_frontend_' ~ $field) | lexicon}: </td>
            <td style="{$style.th}">{$address[$field]}</td>
        </tr>
    {/if}
{/foreach}

8 моих строчек против твоих 80-ти
Денис
23 мая 2019, 14:07
3
0
Я делал 2 выборки на странице, всё работало.
Можно попробовать вот так:

<div id="pdopage">
     [[!+page.nav]]
    <div class="rows">
      [[!pdoPage?
        &element=`getImageList`
        &tvname=`resourcealbum` 
        &tpl=`effects-img`
        &limit=`15`
        &ajaxMode=`button`
        &wrapperTpl = `effects_wrapper`
        &docid=`[[*id]]`
        &processTVs=`1`
    ]]
    </div>
        </div>

<!-- Меняем ID на pdopage2 и добавляем параметры &ajaxElem... -->

  <div id="pdopage2">
     [[!+nav.pagevar]]
    <div class="rows">
      [[!pdoPage?
        &element=`getImageList`
        &tvname=`resourcealbum1` 
        &tpl=`effects-img`
        &limit=`15`
        &ajaxMode=`button`
        &wrapperTpl = `colors_wrapper`
        &docid=`[[*id]]`
        &processTVs=`1`
        &pageNavVar= `nav.pagevar`
        &pageVarKey=`page1`
        
        &ajaxElemWrapper=`#pdopage2`
        &ajaxElemRows=`#pdopage2 .rows`
        &ajaxElemPagination=`#pdopage2 .pagination`
        &ajaxElemLink=`#pdopage2 .pagination a`
        &ajaxElemMore=`#pdopage2 .btn-more`
    ]]
    </div>
  </div>
Dolce
16 октября 2017, 10:33
5
+2
Точно, не удалил лишений код — как следствие и скопировал не то. Вот для селектов:
$(document).ready(function() {
                               
                    $(document).on('change', '#mse2_sort', function() {
                        var selected = $(this).find('option:selected');
                        var sort = selected.data('sort');
                        sort += mse2Config.method_delimeter + selected.val();
                        mse2Config.sort =  sort;
                        mSearch2.submit();
                    });

   });
Александр
15 мая 2017, 12:41
1
0
Мучился с мультиязычностью (минишоп + несколько языков) + babel
Стандартные чанки не подгружали англояз в контексте (EN, делал как тут писали)
Русский язык (контекст WEB) — выводился норм, Английский везде выводился а в чанке корзины — нет, причем шапка таблицы заказов переводилать, а строки нет. Бред какой-то
в итоге создал плагин и повесил его на «OnLoadWebDocument»
$lang = $modx->getOption('cultureKey');
$modx->lexicon->load($lang.':minishop2:default');
И только тогда все заработало.
вот такие пироги
Александр Туниеков
10 марта 2017, 00:35
1
0
Может кому-то понадобиться опишу решение задачи. Мне понадобилось два дня чтоб пробраться через все баги.
Сверстаный html макет сертификата в mpdf выгружался криво. Одна страница растягивалась на 3 страницы. Не подгружались фоновые картинки. В итоге решили сертификаты делать картинками, а на них уже накладывать номер и код сертификата.
Во первых нужен сам mpdf. Он ставиться через composer. Но ставить через composer так не разобрался как. Поступил проще установил компонент PDFresource. В нем уже есть последняя настроенная версия mpdf.
Итоговый сниппет html2pdf:
<?php
require_once(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__)))))).'/core/components/pdfresource/vendor/mpdf/mpdf/mpdf.php'); // путь до mpdf
$mpdf = new mPDF(); 
$mpdf->list_indent_first_level = 0;
$mpdf->SetDisplayMode('fullpage');
switch($_GET['product']){
    case '218':
        $img='http://mysite.ru/assets/components/html2pdf/sertifikat-lichniy-vrach-plus.jpg';
        break;
    case '219':
        $img='http://mysite.ru/assets/components/html2pdf/sertifikat-lichniy-vrach-semeynoe-zdorovye.jpg';
        break;
    case '217': default:
        $img='http://mysite.ru/assets/components/html2pdf/sertifikat-lichniy-vrach-standart.jpg';
        break;
}
$t=$modx->getChunk('sertifikat_html',array(
    'img'=>$img,
    'nomer'=>$_GET['nomer'],
    'code'=>$_GET['code'],
    ));
//return $t;
$mpdf->WriteHTML($t, 0); /*формируем pdf. С ключом 0 обрабатывает стили css.*/
$mpdf->Output('mpdf11.pdf', 'I'); // вывод pdf в браузер. С ключом 'D' выводит файл на загрузку.
exit; // без этой команды в браузер выпадают ероглифы
Итоговый чанк sertifikat_html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="ru">
<head>
	<meta charset="utf-8">
</head>

<body>
<div class="example2">
    
    <img src="[[+img]]"  >
    <div style="margin-top: -895px;padding-left:80px;"><span>[[+nomer]]</span></div>
    <div style="margin-top: -20px;padding-left:470px;"><span>[[+code]]</span></div>
</div>
</body>
</html>
В mpdf стили position:absolute обрабатываются ограниченно. Пришлось долго возиться, чтобы наложить текст на картинку. Решилось все стилем margin-top с отрицательными значениями. Причем те же стили примененные к span эффекта не давали. Только div выручил.
Сейчас все наконец-то работает :)
Виталий Серый
28 февраля 2017, 14:03
4
+4
Самое простое через ключ массива.
{*Первые два*}
{foreach $rows as $idx => $row}
	{if $idx < 2}
		<div>{$idx} - {$row.title}</div>
	{/if}
{/foreach}

{*С пятой строки*}
{foreach $rows as $idx => $row}
	{if $idx > 4}
		<div>{$idx} - {$row.title}</div>
	{/if}
{/foreach}

{*Чересстрочная вакханалия*}
{foreach $rows as $idx => $row}
	<div{$idx is odd ? ' class="odd"' : ''>{$idx} - {$row.title} и два тикета туДаблин</div>
{/foreach}
И т.п.
Документация Fenom.
Виталий Серый
13 ноября 2016, 18:44
3
0
Код чанка написать между foreach.
Например:
{foreach $rows as $row}
	<div class="item">
		<div class="title">{$row.title}</div>
		<div class="desc">{$row.description}</div>
		<div class="image"><img src="{$row.image}" alt="{$row.title}" /></div>
	</div>
{/foreach}
Виталий Серый
08 июня 2016, 00:58
7
+3
Можно попробовать обойтись средствами Fenom без getImageList.
{set $rows = json_decode($_modx->resource.tv_product_main_gallery, true)}
{foreach $rows as $row}
    {$row.image}
{/foreach}
Виталий Барышников
06 марта 2016, 11:59
1
0
Спасибо, всё работает. Только для тех, кто еще будет делать была проблема, что не работает пересчет корзины когда меняем количество товара в input. Нужно вручную добавить событие сабмита формы в onchange этого инпута:
<input type="number" name="count" value="[[+count]]" max-legth="4" onchange="$(this).closest(miniShop2.form).submit();" class="input-sm form-control" />
Константин Ильин
08 декабря 2015, 01:08
2
0
Да бы не заниматься двойной работой по заполнению словаря, сделал такой выход:
[[!GetNameFilter]]
$query = $modx->query("SELECT * FROM modx_tt_ms2_options WHERE `key`= '".$filter."'");
$item = $query->fetch(PDO::FETCH_ASSOC);
return $item['caption'];
в чанке tpl.mFilter2.filter.outer заменил вот так:
<h4>[[+table:is=`msoption`:then=`[[!GetNameFilter? &filter=`[[+filter]]`]]`:else=`[[%mse2_filter_[[+table]]_[[+filter]]]]`]] </h4>