Владимир

Владимир

С нами с 28 декабря 2012; Место в рейтинге пользователей: #53
Павел Гвоздь
08 декабря 2018, 20:54
1
+1
Насколько знаю, в PCRE модификаторах Феном не работает обрамление регулярки слешами. Используйте символ "!" или "~".

И ещё, вместо
<a.*>
пишите лучше
<a [^>]*>
В первом случае вы говорите «любые символы (кроме переноса строки, если в регулярке нет модификатора s)», во втором случае мы говорим «любые символы, кроме закрытия тега > или вообще ничего».
Денис
22 марта 2018, 13:08
4
+2
Можно например вот так сделать:

{* Выборка ID категорий с разбивкой *}
{var $cats = ('pdoResources' | snippet : ['parents' => 0, 'limit' => 0, 'returnIds' => 1, 'where' => '{"class_key":"msCategory"}'] | split : ',')}

{* Если категории есть - перебираем их *}
{if $cats ?}
	{foreach $cats as $cat}
		{* Выводим заголовок категории *}
		<h2>{'pdoField' | snippet : ['id' => $cat]}</h2>
		{* Выборка товаров *}
		{'msProducts' | snippet : [
			'parents' => $cat,
			'tpl' => '@INLINE Товар: {$pagrtitle}<br />'
		] ?: 'Товаров нет'}
	{/foreach}
{/if}
Наумов Алексей
01 февраля 2018, 16:46
4
+4
hook для Formit, отсылает сообщения через sms.ru, вызываем перед хуком email:

Предварительно создаем настройки
sms_ru_api_id — api ключ, который дадут при регистрации на сайте
manager_phone — номер телефона получателя

<?php
// API id
$api_id = $modx->getOption('sms_ru_api_id', null, null);
if(empty($api_id)) {
    $modx->log(xPDO::LOG_LEVEL_ERROR,'SMS.RU hook: empty API ID!.');
    // так как это hook, то даже в случае неудачи возвращаем true
    return true;
}

// Support phone number
$phone = $modx->getOption('manager_phone', null, null);
if(empty($phone)) {
    // так как это hook, то даже в случае неудачи возвращаем true
    return true;
}

$ch = curl_init("https://sms.ru/sms/send");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(

    "api_id"        =>  $api_id,
    "to"            =>  $phone,
    "text"      =>  "ТЕКСТ СООБЩЕНИЯ",

));
$body = curl_exec($ch);
curl_close($ch);

return true;
Алексей П
04 ноября 2017, 23:57
6
+3
Немного доработанная версия. Чтобы не запускать скрипт по несколько раз. Оставлю здесь для себя. Может еще кому-то пригодится.
Перед использованием нужно заменить параметр parent.

<?php
$step = 10;
$offset = isset($_SESSION['galgenoffset']) && $_SESSION['galgenoffset'] ? $_SESSION['galgenoffset'] : 0;
$modx->setLogLevel(MODX_LOG_LEVEL_ERROR);
$q = $modx->newQuery('modResource', array('parent' => 6007));
$total = $modx->getCount("modResource", $q);
$q->limit($step,$offset);
foreach($modx->getIterator("modResource", $q) as $doc){
	$doc->remove();
}

$_SESSION['galgenoffset'] = $offset + $step;
if ($_SESSION['galgenoffset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['galgenoffset']);
} else {
  $sucsess = round($_SESSION['galgenoffset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = $_SESSION['galgenoffset'] ?
           $_SESSION['galgenoffset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";
Андрей
28 октября 2017, 20:54
1
+2
Кстати очень годный сборщик иконочных шрифтов — Fontello.
Василий Наумкин
19 октября 2017, 12:59
1
+1
Не знаю, я использую 1Password по семейному тарифу для себя и жены.
Володя
13 октября 2017, 14:52
1
+1
вызов на странице категории quickview.vgrish.ru/test-product.html

[[!QuickView.initialize?
&services=`miniShop2`
&bootstrapModalJsCss=`0`
&bootstrapDialogJsCss=`1`
]]

<div class="quickview-parent"
	data-quickview-mode="modal"
	data-data-action="chunk"
        data-data-element="product.quickview.cart"
	data-quickview-loop="true"
	data-quickview-sethash="true"
        data-hash-cart="true"
	data-dialog-size="size-wide"
	data-dialog-buttons='["prev","next"]'>

	[[!pdoPage?
		&parents=`0`
		&element=`msProducts`
		&tpl=`@INLINE
		<a class='quickview'
		   data-click
		   data-data-id="[[+id]]"
		   data-dialog-title="[[+pagetitle]]">[[+pagetitle]]</a>

`
	]]
	
	[[!+page.nav]]
</div>
чанк модалки товара product.quickview.cart

<h1>[[*pagetitle]]</h1>
<div id="msProduct" class="row">
    <div class="col-md-6">
        [[!msGallery]]
    </div>
    <div class="col-md-6">
        <form class="form-horizontal ms2_form msoptionsprice-product" method="post">
            <input type="hidden" name="id" value="[[*id]]"/>
            <input type="hidden" name="mssetincart_set" value="[[*id]]"/>
             
            <div class="form-group">
                <label class="col-md-2 control-label">[[%ms2_product_article]]:</label>
                <div class="col-md-10 form-control-static">
                    <span class='msoptionsprice-article msoptionsprice-[[*id]]'>[[+article:default=`-`]]</span>
                </div>
            </div>
            <div class="form-group">
                <label class="col-md-2 control-label">[[%ms2_product_price]]:</label>
                <div class="col-md-10 form-control-static">
                    <span class='msoptionsprice-cost msoptionsprice-[[*id]]'>[[+price]]</span> [[%ms2_frontend_currency]]
                    [[+old_price:gt=`0`:then=`
                    <span class="old_price"><span class='msoptionsprice-old-cost msoptionsprice-[[*id]]'>[[+old_price]]</span> [[%ms2_frontend_currency]]</span>
                    `:else=``]]
                    
                </div>
            </div>
            <div class="form-group form-inline">
                <label class="col-md-2 control-label" for="product_price">[[%ms2_cart_count]]:</label>
                <div class="col-md-10">
                    <input type="number" name="count" id="product_price" class="input-sm form-control" value="1"/>
                    [[%ms2_frontend_count_unit]]
                </div>
            </div>
            <div class="form-group">
                <label class="col-md-2 control-label">[[%ms2_product_weight]]:</label>
                <div class="col-md-10 form-control-static">
                    <span class='msoptionsprice-mass msoptionsprice-[[*id]]'>[[+weight]]</span> [[%ms2_frontend_weight_unit]]
                </div>
            </div>
            <div class="form-group">
                <label class="col-md-2 control-label">Набор:</label>
                <div class="col-md-10 form-control-static">
                    <span class='mssetincart-cost mssetincart-[[*id]]'>[[+price]]</span> [[%ms2_frontend_currency]]
                    
                    <span class='mssetincart-mass mssetincart-[[*id]]'>[[+weight]]</span> [[%ms2_frontend_weight_unit]]
                </div>
            </div>
              
            [[!msOptions?
            &options=`color,size`
            ]]

            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                   
                    <button type="submit" class="btn btn-default" name="ms2_action" value="cart/add" 
		 	data-quickview-mode="modal"
                        data-data-action="chunk"
                        data-data-element="!cart.quickview"
                        data-dialog-size="size-wide"
                        data-dialog-title="cart"
                        onclick="setTimeout((function () {
			                return $(this).quickview();
			            }.bind(this)), $.fn.quickview.defaults.timeout)
			            "
                        >
					    <i class="glyphicon glyphicon-barcode"></i> [[%ms2_frontend_add_to_cart]]
					</button>
					
                </div>
            </div>
        </form>

    </div>
</div>
чанк модалки корзины cart.quickview
[[!msCart]]
[[!msOrder]]
это можно будет просто при нажатии кнопки в модальном окне вывести работающую корзину?!
да, как в примере