SEOSuite - после установки!

Иногда бывает после установки seo Suite, мета теги типа canonical & robots не появляются у документа сразу, а только после его сохранения, и чтобы не заходить в каждый документ и пере сохранять, написал небольшой сниппет.

Код сниппета: OnDocFormSave_seo
<?php
// Создаем новый запрос к ресурсам MODX
$query = $modx->newQuery('modResource');

// Устанавливаем лимит на количество возвращаемых ресурсов
$query->limit(50);

// Фильтруем ресурсы, исключая те, которые имеют свойство, содержащие 'seosuite'
$query->where(['properties:NOT LIKE' => '%seosuite%']);

// Получаем коллекцию ресурсов, соответствующих запросу
$resources = $modx->getCollection('modResource', $query);


if($resources){
// Обрабатываем каждый найденный ресурс
    foreach ($resources as $res) {
      
    
        // Сохраняем изменения в ресурсе
        $res->save();
    
        // Вызываем событие после сохранения ресурса
        $modx->invokeEvent('OnDocFormSave', array(
            'mode' => modSystemEvent::MODE_UPD,
            'id' => $res->get('id'),
            'resource' => &$res,
            'object' => &$res,
        ));
    
        // Выводим информацию о ресурсе
        print_r(['id' => $res->id, 'seoProps' => $res->properties]);
    }
    
    // Если есть обновленные ресурсы, перезагрузим страницу
    return '<script>window.location.reload();</script>';
    
} else{
    
    return 'Все ресурсы уже получили properties => seosuite';
}

Далее создаем ресурс к примеру:
Заголовок*: OnDocFormSave_seo
Шаблон: Пустой шаблон
Использовать HTML-редактор: Нет
Кэшируемый: Нет
Содержимое:
<pre>
    [[OnDocFormSave_seo]]
</pre>
Открываем страничку и ждем пока обновятся документы…

ЗЫ: Писал на коленке по-быстрому)))
vectorserver
16 октября 2024, 16:05
modx.pro
2
1 516
+3
Поблагодарить автора Отправить деньги

Комментарии: 3

Дима Касаткин
24 октября 2024, 20:46
0
Привет! Спасибо за решение, сорри не могу плюсануть уже, время прошло, вовремя не заметил!

Я же правильно понимаю, что можно не делать одноразовый сниппет, а просто запустить его код через компонент Console или подобный?

И ещё есть вопрос по SEOSuite, пользуясь случаем. Они там решили вопрос с тем, что компонент создаёт большую секцию своих настроек в админке для каждого ресурса? Там эта секция была выше, чем секция с основным контентом (и соответственно с секцией TV-шек, если их системной настройкой `tvs_below_content` перенести тоже на первую вкладку в админке где страницы редактируешь) и из-за этого осложнялось редактирование контента на мой взгляд (SEO-настройки маячили и лишний раз мешались). Помню из-за этого даже кто-то ставил старые версии, SEOtab вроде… и ждали фикса, сообщив разрабам на github. Это пофикшено в свежих SEOsuite?
    vectorserver
    08 ноября 2024, 06:31
    0
    Можно и в консоли только кнопочку руками придется нажимать, одна итерация 50 ресурсов)

    По второму вопросу не скажу, не вникал)
      epic
      03 декабря 2024, 13:40
      0
      Написал вот такой плагин, меня устраивает

      <?php
      // OnDocFormRender
      $modx->controller->addHtml('<script>Ext.onReady(function(){
      	setTimeout(function(){
              hideseo = document.querySelector("div#resource-seosuite-panel > div > div.x-tool.x-tool-toggle");
              hideseo.style.cssText += "float: left";
              hideseo.click();
              
              var divNode = document.createElement("style");
              divNode.innerHTML = " .vertical-tabs-panel .vertical-tabs-header { width: 235px !important; } .vertical-tabs-panel .vertical-tabs-header .x-tab-strip-wrap ul.x-tab-strip > li.x-tab-strip-active { width: 235px !important; } ";
              document.getElementsByTagName("head")[0].appendChild(divNode);        
              
      	}, 300);
      });</script>');
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3