vectorserver

vectorserver

С нами с 12 декабря 2018; Место в рейтинге пользователей: #24
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'));
    }
}
15 апреля 2022, 12:14
+1
Напиши мне в лс t.me/vectorserver
15 апреля 2022, 12:02
0
Может Fenom отключен?
Атак работает?:
href="[[+uri]]"
или
href="[[~ [[+id]] ]]"
15 апреля 2022, 11:57
0
Контексты левые есть кроме WEB!?
15 апреля 2022, 06:26
0
Неплохо!
Самый простой способ внедрить зависимости не залезая в пространство имен, выполнить команду:
<?php
$modx->addExtensionPackage('mypkg', '/path/to/core/components/mypkg/model/', array('tablePrefix'=>'mypre_'));
05 апреля 2022, 13:14
0
Напиши мне в лс, поправим!
А по идее компонент платный, разработчик (@Prihod ) обязан ответить!
05 апреля 2022, 13:08
0
У опции m2 точно тип поля int?

Попробуй вот так:
'optionFilters'=>'{"CAST(m2 AS UNSIGNED INTEGER):>":600}'
01 апреля 2022, 08:36
0
Создастся TV именем hitsViews
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();
}
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;
22 марта 2022, 10:37
0
Вот так нужно:
[[pdoMenu?
    &parents=`95`
    &resources=`114,106,121,2011,132,141,1335,...`
    &sortby=`ids`
    &sortdir=`ASC`
 ]]
22 марта 2022, 10:34
0
Не изобретай велосипед) Используй: catalogfill-2.4.10-pl.transport.zip
Ссылка от автора: disk.yandex.ru/d/fk_Fq1HgGZYA4Q
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;
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);
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;
}
12 января 2022, 11:17
-3
Думаю, это бессмыслено конвертировать одно в другое, тем более код!
По мне удобнее работать с родным парсером из коробки!
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 ''; ?>