Как отсортировать ресурсы по publishedon и get?

Есть такой код where
{"publishedon:>=": "[[!timestampToUnixTime? &dt=`[[!#GET.news-year]]` &next=`0`]]", "AND:publishedon:<=": "[[!timestampToUnixTime? &dt=`[[!#GET.news-year]]` &next=`1`]]"}
Снипет timestampToUnixTime такой
<?php
if(!$dt){
   
    $dt = date('Y-m-d');
} else {
    $dt = "$dt-1-1";
    $dt = date($dt);
}


if($next == '1'){
    $dt = new DateTime($dt);
    $dt->add(new DateInterval('P1Y'));
    $dt = $dt->format('Y');
}

return strtotime($dt);
Vladimir
05 января 2022, 07:00
modx.pro
840
0

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

Vladimir
05 января 2022, 07:17
0
Снипет рабочий выдаёт год из гета и след год в Unix, но всё равно pdo не сортирует, если убрать эту сортировку то все ресурсы выводятся, как исправить?
    Артур Шевченко
    06 января 2022, 00:45
    0
    Надо showLog сделать, но я бы кавычки убрал, вот так
    {"publishedon:>=": [[!timestampToUnixTime? &dt=`[[!#GET.news-year]]` &next=`0`]], "AND:publishedon:<=": [[!timestampToUnixTime? &dt=`[[!#GET.news-year]]` &next=`1`]]}
      Vladimir
      13 января 2022, 13:55
      0
      Лог такой
      0.0002599: pdoTools loaded
      0.0000460: xPDO query object created
      0.0010431: Included list of tvs: img
      0.0003240: leftJoined modTemplateVarResource as TVimg
      0.0006390: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `alias_visible`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
      0.0000269: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.img`
      0.0000231: Replaced TV conditions
      0.0017660: Processed additional conditions
      0.0027940: Added where condition: 0=, modResource.parent:IN(8,9,20), modResource.template:IN(7), modResource.published=1, modResource.deleted=0
      0.0000138: Replaced TV conditions
      0.0002139: Sorted by modResource.parent, ASC
      0.0002470: Sorted by modResource.menuindex, ASC
      0.0000048: Limited to 8, offset 0
      0.0006542: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`alias_visible`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVimg`.`value`, '') AS `tv.img` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVimg` ON `TVimg`.`contentid` = `modResource`.`id` AND `TVimg`.`tmplvarid` = 23 WHERE  ( `modResource`.`parent` IN (8,9,20) AND `modResource`.`template` IN (7) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.parent ASC, modResource.menuindex ASC LIMIT 8 "
      0.0011570: SQL executed
      0.0003688: Total rows: 2
      0.0000539: Rows fetched
      0.0066609: Prepared and processed TVs
      0.0017228: Loaded "modChunk" with name "newsTpl"
      0.0034592: Compiled Fenom chunk with name "modchunk/30"
      0.0171959: Returning processed chunks
      0.0317860: Total time
      8 912 896: Memory usage
      0.0107419: pdoTools loaded
      0.0004611: Created inline "modChunk" with name "f7da63f2d337d08ca9dcacc531069c1e"
      0.0072119: Loaded "modSnippet" with name "pdoResources"
      0.0416641: Created inline "modChunk" with name "e6747421ac951eec87076a3f44c6a184"
      0.0601921: Total time
      8 912 896: Memory usage
    Vladimir
    14 января 2022, 09:10
    0
    Странно почему то и обычная сортировка по тв не работает код простейший
    'where' => '{"news-type:=": "[[!#GET.sort-type]]"}',
    Тэвэха news-type теговая и значения приходят туда правильные
      Vladimir
      16 января 2022, 19:56
      0
      Снипет сделал таким
      <?php
      if(!$dt){
          $dt = date('Y', strtotime(date('Y-m-d')));
          $dt = "$dt-1-1";
      } else {
          $dt = "$dt-1-1";
      }
      
      if($next == '1'){
          $dt = date("Y-m-d",strtotime ( '+1 year' , strtotime ( $dt ) )) ;
      }
      return strtotime($dt);
      Вызов такой как писал выше Артур
      {"publishedon:>=": [[!timestampToUnixTime? &dt=`[[!#GET.news-year]]` &next=`0`]], "AND:publishedon:<=": [[!timestampToUnixTime? &dt=`[[!#GET.news-year]]` &next=`1`]]}
      В целом засунул это в плагин и по хэшу сортирую без перезагрузке страницы через pdopage.
      Как сделал через плагин и pdopage и без перезагрузке вот ссылка на пасте бин там код pastebin.com/AuA5Rrt6
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5