vectorserver

vectorserver

С нами с 12 декабря 2018; Место в рейтинге пользователей: #26
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`
 ]]
vectorserver
22 марта 2022, 10:34
0
Не изобретай велосипед) Используй: catalogfill-2.4.10-pl.transport.zip
Ссылка от автора: disk.yandex.ru/d/fk_Fq1HgGZYA4Q
vectorserver
14 февраля 2022, 15:30
0
<?php
$ms2 = $modx->getService('miniShop2');
$ms2->initialize($modx->context->key);
$cart = $ms2->cart->get();

$cartCount = 0;

foreach($cart as $key => $value){
    if($productId == $value['id']){
        $cartCount+=1;
    }
}

return $cartCount;
vectorserver
14 февраля 2022, 13:57
1
0
Я бы сделал прослушку на nodejs, и повесил бы к примеру на node.localhost:3000 и потом через плагин отправлял бы данные.

<?php

$eventName = $modx->event->name;
switch($eventName) {
    case 'OnWebLogin':
        
        // хук на вход http://node.localhost:3000/?userID=1&login=1
        break;
    case 'OnWebLogout':

        // хук на выход http://node.localhost:3000/?userID=1&logout=1
        break;
}

NodeJS
const http = require("http");
 
http.createServer(function(request, response){
     
    console.log("Url: " + request.url);
    console.log("Тип запроса: " + request.method);
    console.log("User-Agent: " + request.headers["user-agent"]);
    console.log("Все заголовки");
    console.log(request.headers);
     
    response.end();
}).listen('node.localhost',3000);
vectorserver
14 февраля 2022, 12:37
1
0
Я использовал в свое время, для синхронизации товаров, точно не помню, вот накидал на коленке.
Работает :)

Пример:
<?php
//Файл дампа времменый
$dump = __DIR__ . "/test_.sql";

//Экспорт из бд №1 таблицы modx_users, modx_user_group_roles
$export_db = exportDatabase('localhost', 'root', '', 'modx', array('modx_users', 'modx_user_group_roles'), $dump);

//Импорт в бд №2
$import_db = importDatabase('localhost', 'root', '', 'remote_modx', $dump);

function importDatabase($host, $user, $password, $database, $backupFilePath)
{

    $password = ($password) ? "-p$password" : "";
    $cmd = "mysql -u {$user} {$password} {$database} < $backupFilePath";
    return exec($cmd) === 0;
}

function exportDatabase($host, $user, $password, $database, $tables, $targetFilePath)
{

    $cmd = "mysqldump --host {$host} --user {$user} ";
    if ($password) {
        $cmd .= " --password {$password} ";
    }
    $cmd .= " {$database} ";

    if ($tables) {
        $cmd .= implode(" ", $tables);
    }

    $cmd .= " > {$targetFilePath}";

    return exec($cmd) === 0;
}
vectorserver
12 января 2022, 11:17
-3
Думаю, это бессмыслено конвертировать одно в другое, тем более код!
По мне удобнее работать с родным парсером из коробки!
vectorserver
07 сентября 2021, 21:53
0
<?php
$sth = $modx->query("SELECT * FROM reg_users");
$result = $sth->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $data) {
    $regNum = $data['regNum'];
}
?>
<div><?php echo $regNum;?></div>
<?php return ''; ?>
vectorserver
07 сентября 2021, 21:46
0
<?php
$file = ('<div class="video-iframe yt-vme-container" style="position: relative; inset: unset; max-width: 640px; padding: unset; height: 100%; width: 100%;"><script type="text/javascript" src="https://youtube-com.cdn.vidyome.com/vidyome/builds/player.js" id="vme_player_13232258508328254" container-id="vme-yt-66035627250847576" site-id="MTcwNQ==" video-id="ytb" video-play="false" video-source="https://www.youtube.com/embed/b6aLl-W8gCk?" video-poster="https://i.ytimg.com/vi/b6aLl-W8gCk/hqdefault.jpg">...</div>');

$doc = new DOMDocument();

$doc->preserveWhiteSpace = false;

$doc->loadHTML($file);

$xpath = new DOMXpath($doc);

$video_source = $xpath->query("//@video-source");

if($video_source->length){
    
    echo "video-source: {$video_source->item(0)->value}";
}
vectorserver
11 ноября 2020, 08:31
0
Удачи! Но что-то мне подсказывает, что ты вернёшься!)
vectorserver
30 июля 2020, 09:32
+1
Вай, Баха красавчик, все по полочкам!