Андрей Шевяков

Андрей Шевяков

С нами с 28 сентября 2016; Место в рейтинге пользователей: #62
Володя
26 февраля 2025, 11:21
1
0
Можно попробовать плагином на событие OnBeforeManagerPageInit
if ('OnBeforeManagerPageInit' === $modx->event->name) {
    if (is_array($action) && in_array($action['controller'], ['security/user'])) {
        $modx->controller->addHtml('<script>
        Ext.override(MODx.grid.User, {
            Originals: {initComponent: MODx.grid.User.prototype.initComponent},
            initComponent: function () {
                this.Originals.initComponent.call(this);
                if (store = this.getStore()) {
                    store.baseParams["sort"] = "id";
                    store.baseParams["dir"] = "asc";
                }
            },
        });
        </script>');
    }
}
Riwka
25 декабря 2024, 14:29
1
+1
$array = array(ids); 
if(in_array($modx->resource->get('id'), $array)) {
	$modx->regClientStartupHTMLBlock('<script>Ext.onReady(function() {
if(MODx.loadRTE) MODx.loadRTE("modx-resource-introtext");
});</script>');
}

Вместо id можно поставить template и будут вам шаблоны
Роман
10 декабря 2024, 22:05
1
0
[[!msOptions?
                                    &options=`mount`
                                    &tpl=`tpl.msOptions.Roman`
                                    &sortOptionValues=`mount:SORT_ASC`
]]
Артур Шевченко
06 декабря 2024, 21:05
1
0
Есть параметр sortOptionValues в него надо передать что-то типа value:desc
Артур Шевченко
21 ноября 2024, 22:15
1
0
надо как то подгружать через Ajax, разные формы
Можно и подгружать. Устанавливаешь SendIt. Разметка будет такая
<form action="">
    <select name="realty_type" data-si-preset="load_fields" data-si-event="change" data-si-form>
        <option value="квартира" selected>квартира</option>
        <option value="земельный участок">земельный участок</option>
    </select>
    <div id="results">{'loadFields' | snippet: ['type' => 'квартира']}</div>
</form>
Пресет такой
'load_fields' => [
    'hooks' => '',
    'resultBlockSelector' => '#results',
    'resultShowMethod' => 'insert',
    'snippet' => 'loadFields'
]
Сниппет loadFields примерно такой
$type = $type ?? $_POST['realty_type'];
$html = '';
switch ($type) {
    case 'квартира':
        $html = $modx->getChunk('flatFields', []);
        break;
    case 'земельный участок':
        $html = $modx->getChunk('groundFields', []);
        break;
}
if($SendIt){
    if($result['success']){
        return $SendIt->success(true, ['html' => $html]);
    }else{
        return $SendIt->error(false, []);
    }
}
return $html;
Ну а в чанках соответственно поля.
Павел Романов
05 ноября 2024, 17:51
1
0
Можно такой сниппет сделать и запускать через CronManager:
<?php
$sql = "SELECT id FROM {$modx->getTableName('modResource')} WHERE deleted = 0 AND published = 1";
$q = $modx->prepare($sql);
$q->execute();
$resources = $q->fetchAll(PDO::FETCH_ASSOC);
foreach ($resources as $resource) {
    $response = $modx->runProcessor('mgr/index/update', array('id' =>$resource['id']), array('processors_path' => MODX_CORE_PATH . 'components/msearch2/processors/'));
    if ($response->isError()) {
        $modx->log(modX::LOG_LEVEL_ERROR, print_r($response->getAllErrors(), true));
    }
}
Александр
14 июля 2024, 12:55
6
+3
RewriteCond %{REQUEST_URI} ^/assets/images/products/[0-9]+/[^/]+\.(jpg|jpeg|png|gif|webp)$ [NC]
RewriteRule .* - [F]
Запрещает доступ ко всем изображениям в папке галереи товара, но не запрещает к вложенным в подпапках
Павел Романов
28 мая 2024, 12:22
2
+2
Сделайте сниппет getTags:
<?php
$id = $modx->getOption('id', $scriptProperties, $modx->resource->get('id'));
$table = $modx->getOption('table_prefix').'ms2_products';
if($query = $modx->query("SELECT * FROM {$table} WHERE id = {$id}")){
	$prod = $query->fetch(PDO::FETCH_ASSOC);
	$tags = json_decode($prod['tags'], 1);
	foreach($tags as $tag){
	    $out .= $modx->getChunk($tpl, array('tag' =>  $tag));
	}
}
return $out;

Вызывайте:
[[getTags? &tpl=`tag_tpl`]]

Если не на странице товара, указывайте &id:
[[getTags? &id=`[[+id]]` &tpl=`tag_tpl`]]

Чанк tag_tpl:
<a href="/search/?[[+tag]]" class="some-class">[[+tag]]</a>
Дима Касаткин
26 апреля 2024, 02:05
1
0
Запустит довольно просто, как раз этим занимался сейчас :) решил и здесь написать:

Создай второй контекст, создай плагин (в элементах в админке) назови например ContextSwitch и подключи его на OnHandleRequest вот код:
<?php
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}

// Определяем запрашиваемый хост
$host = $_SERVER['HTTP_HOST'];

// Выбираем контекст с настройкой http_host
$q = $modx->newQuery('modContextSetting', array('key' => 'http_host', 'value' => $host));
$q->select('context_key');

if ($q->prepare() && $q->stmt->execute()) {
    // Получаем ключ контекста
    if ($context = $q->stmt->fetch(PDO::FETCH_COLUMN)) {
        // Web инициализируется в index.php - на него переключаться не нужно
        if ($context != 'web') {
            $modx->switchContext($context);
        }
    }
}
Далее в новом контексте укажи настройку (правый клик в админке → редактировать контекст) и добавь туда 2 системные настройки:
1. site_start (укажи id страницы в новом контексте, её нужно там создать и опубликовать) и это будет главная страница!
2. http_host (полный адрес url без https и слешей, например sub.example.com)

И всё должно заработать!
Артур Шевченко
16 апреля 2024, 20:24
2
+2
Если на fenom то как-то так наверное
{set $cats = []}
{foreach $products as $product}
    {set $parent = $product.id | resource: 'parent'}
   {set $productsByCategory[$parent][] = $product}
{/foreach}
{foreach $productsByCategory as $parent => $products}
    {$parent | resource: 'pagetitle'}
    {foreach $products as $product}
       {$product | print}
    {/foreach}
{/foreach}