vectorserver

vectorserver

С нами с 12 декабря 2018; Место в рейтинге пользователей: #44
vectorserver
19 мая 2022, 14:48
0
Допилил редирект если он нужен:
Параметры:
  • &id: Уникальный ID, если есть конфликты форм
  • &snippet:Login,ForgotPassword,UpdateProfile,Register
  • &redirect:[[~1]]
  • &chunkForm: имя чанка или html код (Для ForgotPassword,UpdateProfile,Register не используются в параметрах tpl, для этого сделан параметр)

//Login
[[!AjaxLogin_vectorserver? &snippet=`Login`]]

//ForgotPassword
[[!AjaxLogin_vectorserver? 
&snippet=`ForgotPassword` 
&id=`q`
&redirect=`[[~1]]`
]]


<h2>UpdateProfile</h2>
[[!AjaxLogin_vectorserver?
    &snippet=`UpdateProfile` 
    &useExtended=`0`
    &chunkForm=`[[$UProfile]]`
]]
Код сниппета:
<?php
/* @global $modx*/
/** @var TYPE_NAME $scriptproperties */
/** @var TYPE_NAME $snippet */

/** @var TYPE_NAME $id */
$chunkForm = $chunkForm??'';
//Уникальный ID
$id = $id??$modx->resource->id;
$uniqid = "form_".md5($snippet.$id);

//Если нужен редирект 
$redirect = $redirect??false;

//JS TMP
$js = "<script>
    let $uniqid = document.getElementById('{$uniqid}').getElementsByTagName('form')[0];
    
    if($uniqid){
        $uniqid.addEventListener('submit', (e) => {
            
            let redirectTo = '{$redirect}';
        
            fetch($uniqid.action, {
               method: 'POST',
               body: new FormData($uniqid)
            }).then(function (response) {
                // The API call was successful!
                return response.text();
            }).then(function (data) {
                // This is the HTML from our response
                var parser = new DOMParser();
                var doc = parser.parseFromString(data, \"text/html\");
                $uniqid.innerHTML = doc.getElementById('{$uniqid}').innerHTML;
                if(redirectTo){
                    window.location = '{$redirect}';
                }
            }).catch(function (err) {
                // There was an error
                console.warn('Something went wrong.', err);
            });
        
         // on form submission, prevent default
        e.preventDefault();
      });
    }
  
</script>";

$runSnippet = "<div id='{$uniqid}' class='AjaxLogin_vectorserver'>{$modx->runSnippet($snippet)}{$chunkForm}</div>\n{$js}";
return $runSnippet;
vectorserver
19 мая 2022, 12:51
-2
Слишком много гемора!
Вот пример, JS + LOGIN (https://vectorserver.ru/test/ajaxform-login.html )
Вызов:
[[!AjaxLogin_vectorserver? &snippet=`Login`]]

[[!AjaxLogin_vectorserver? &snippet=`Login` &id=`q`]]

[[!AjaxLogin_vectorserver? &snippet=`Register` &id=`123`]]
Код сниппета AjaxLogin_vectorserver:
<?php
/* @global $modx*/
/** @var TYPE_NAME $scriptproperties */
/** @var TYPE_NAME $snippet */

/** @var TYPE_NAME $id */
$id = $id??$modx->resource-id;
$uniqid = "form_".md5($snippet.$id);
$url = $modx->resource->uri;


$js = "<script>
    let $uniqid = document.getElementById('{$uniqid}').getElementsByTagName('form')[0];
    if($uniqid){
        $uniqid.addEventListener('submit', (e) => {
            
        
            fetch($uniqid.action, {
               method: 'POST',
               body: new FormData($uniqid)
            }).then(function (response) {
                // The API call was successful!
                return response.text();
            }).then(function (data) {
                // This is the HTML from our response
                var parser = new DOMParser();
                var doc = parser.parseFromString(data, \"text/html\");
                $uniqid.innerHTML = doc.getElementById('{$uniqid}').innerHTML;
            }).catch(function (err) {
                // There was an error
                console.warn('Something went wrong.', err);
            });;
        
         // on form submission, prevent default
        e.preventDefault();
      });
    }
  
</script>";

$runSnippet = "<div id='{$uniqid}' class='AjaxLogin_vectorserver'>{$modx->runSnippet($snippet)}</div>\n{$js}";
return $runSnippet;
vectorserver
19 мая 2022, 07:28
0
Вот за что минусить!?
За то что я высказался не так как тебе удобно!?
Все что ты описал есть в MagicThemes!
vectorserver
13 мая 2022, 13:25
-1
Ерунда какая-то, это мое мнение! Я быстрее страницу заверстаю!
vectorserver
21 апреля 2022, 20:46
0
Не плохо.

Я на migx такое меню делаю обычно плюс статичную ссылку с красивым адресом.
vectorserver
19 апреля 2022, 15:26
0
Вы просили параметры отключения, я скинул! Что не так!?
Прочитайте нормально документацию по Pdotools!
vectorserver
19 апреля 2022, 06:26
0
&cache        0    	Кэширование результатов работы сниппета.
&cacheTime    3600	Время актуальности кэша, в секундах.
&cache_user    1	Принудительно устанавливает ID посетителя, по-умолчанию кеширование производится с учетом ID посетителя
vectorserver
18 апреля 2022, 12:23
0
Создай свой сниппет и вызови его в шаблоне
<?php
/* @global $modx */

//Date now
$datenow = time();

//Date start  - end
$date_enable = $modx->getOption('date_enable', '', '22-04-18');
$date_disable = $modx->getOption('date_disable', '', '22-04-19');
//time on - off
$time_enable = $date_enable . " " . $modx->getOption('time_enable', '', '08:00 am');
$time_disable = $date_disable . " " . $modx->getOption('time_disable', '', '10:00 pm');


//days
if ($datenow >= strtotime($date_enable) && $datenow <= strtotime($date_disable)) {

    //times
    if ($datenow >= strtotime($time_enable) && $datenow <= strtotime($time_disable)) {
        //Show CART
        return $modx->runSnippet('msMiniCart', array('tpl' => 'cart_mini'));
    }
}
vectorserver
15 апреля 2022, 12:14
+1
Напиши мне в лс t.me/vectorserver
vectorserver
15 апреля 2022, 12:02
0
Может Fenom отключен?
Атак работает?:
href="[[+uri]]"
или
href="[[~ [[+id]] ]]"
vectorserver
15 апреля 2022, 11:57
0
Контексты левые есть кроме WEB!?
vectorserver
15 апреля 2022, 06:26
0
Неплохо!
Самый простой способ внедрить зависимости не залезая в пространство имен, выполнить команду:
<?php
$modx->addExtensionPackage('mypkg', '/path/to/core/components/mypkg/model/', array('tablePrefix'=>'mypre_'));
vectorserver
05 апреля 2022, 13:14
0
Напиши мне в лс, поправим!
А по идее компонент платный, разработчик (@Prihod ) обязан ответить!
vectorserver
05 апреля 2022, 13:08
0
У опции m2 точно тип поля int?

Попробуй вот так:
'optionFilters'=>'{"CAST(m2 AS UNSIGNED INTEGER):>":600}'
vectorserver
01 апреля 2022, 08:36
0
Создастся TV именем hitsViews
vectorserver
01 апреля 2022, 08:07
+1
Держи: github.com/vectorserver/modx_hitsViews/raw/main/hitsviews-1.0-beta1.transport.zip
Код плагина:
<?php
/* @global $modx */
$eventName = $modx->event->name;

if ($eventName == 'OnLoadWebDocument') {

    $tvName = 'hitsViews';
    $tvCaption = 'Счетчик визитов hitsViews';
    $create = 0;


    $tv = $modx->resource->getTVValue($tvName);

    //Создает tv в первый раз из под админа
    if ($tv===NULL) {
        $collection_templates = $modx->getCollection('modTemplate');

        $templates = array();
        foreach ($collection_templates as $template) {
            $templates[] = array('access' => true, 'id' => $template->id);

        }

        //Создаем TV
        $response = $modx->runProcessor('element/tv/create', array(
            'name' => $tvName,
            'caption' => $tvCaption,
            'category' => 0,
            'type' => 'number',
            'default_text' => 0,
            'templates' => $templates,
        ));


        $tv = "0";
    }

    $tvVal = (int) $tv;
    //savecount
    $modx->resource->setTVValue($tvName, $tvVal+=1);
    $modx->resource->save();
}
vectorserver
31 марта 2022, 13:26
1
0
Накидал сниппет на коленке.

Вызов сниппета:
&input — Исходный ролик
&default — другое зеркало ролика
[[ytTest? &input=`https://www.youtube.com/watch?v=BCwkRcDlo2k` &default=`https://www.youtube.com/watch?v=tu-hhC_PNEg`]]
Код сниппета:
<?php
//Snippet ytTest
/**
 * @param $yt_source
 * @return false|mixed
 */
function ytTest($yt_source){

    //Парсинг YT ID
    preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $yt_source, $matches);

    $yt_id = $matches[0];

    if(!$yt_id) return false;

    $yt_image = "https://img.youtube.com/vi/{$yt_id}/default.jpg";

    file_get_contents($yt_image, false, stream_context_create(['http' => ['ignore_errors' => true]]));

    $check = $http_response_header[0];

    return ($check === "HTTP/1.0 200 OK")? $yt_source : false;
}

/** @var TYPE_NAME $input */
/** @var TYPE_NAME $default */
return ytTest($input) ? ytTest($input) : $default;
vectorserver
22 марта 2022, 10:37
0
Вот так нужно:
[[pdoMenu?
    &parents=`95`
    &resources=`114,106,121,2011,132,141,1335,...`
    &sortby=`ids`
    &sortdir=`ASC`
 ]]