We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 2532
    • 31 Posts
    У документов есть "Дата публикации" и "Дата отмены публикации"

    Хочу с помошью DocManager`a поуправлять данными в этих полях, но что-то не понимаю какой там формат.
    В базе pub_date и unpub_date имеют тип int(20) не понимаю как из него дату\время получить.

    Расскажите как с форматом жить.

    Пару вопросов сразу.

    1. Как записать текущую дату\время?

    2. Как получить (посчитать) чтобы записать текущую дату\время + какой-то период, например месяц (два, три).
      • 785
      • 2,113 Posts
      В MODx, как и в других программах на PHP, используется число, равное количеству секунд, прошедших с начала эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) до текущего времени. В PHP имеется множество средств работы с ними.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 2532
        • 31 Posts
        спасибо за наводку, помогло

        вот ещё одна проблема возникла, помогите разобраться...

        для вывода нужной даты создал сниппет getDate
        <?php
        	$docID = (isset($docID))? $docID : "";
        	$whatDate = (isset($whatDate))? $whatDate : "pub_date";
        		
        	$sql_getDate = "SELECT `$whatDate` FROM ".$modx->getFullTableName("site_content")." WHERE `ID` = '".$docID."'";
        
        	$rezult = $modx->dbQuery($sql_getDate);
        	
        	while( $row = $modx->db->getRow( $rezult ) ) $itDate = $row[$whatDate];
        	
        	print (date( 'j/m/Y \в H:i', $itDate ));
        	
        	return;
        ?>
        


        далее из своего чанка два раза вызываю:
        Опубликован [!getDate? &docID=`[*id*]` &whatDate=`pub_date`!]<br/>
        Отмена публикации [!getDate? &docID=`[*id*]` &whatDate=`unpub_date`!]
        


        И выводится только первый вызов. Второй не срабатывает. Почему?

        ЗЫ. Подозреваю кривой код сниппета. В PHP, к сожалению, не силён. Буду признателен если поправите.
          • 785
          • 2,113 Posts
          Во-первых, удобнее использовать API MODx вместо запросов к базе:
          $array = $modx->getDocument($docID,$whatDate);
          $itDate = $array[$whatDate];
          Во-вторых, если выводится подряд две даты, то лучше получать их за один запрос базе ($modx->getDocument($docID,’pub_date, unpub_date’)), а не за два, и выводить две строки в одном сниппете.
          В-третьих, что значит «не срабатывает»? Есть разные варианты, но в любом случае ничего сложного нет в том, чтобы самостоятельно разобраться, вставив в программу печать получаемых данных и результатов каждого шага вычислений.
          Кстати, дата отмены публикации может быть пустой, так что ничего и не выводится.
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 2532
            • 31 Posts
            Не срабатывает значит как буд-то вызова и не было...
            Сниппет сделал таким:
            <?php
            	print "<p>begin<br/>";
            		
            	$docID = (isset($docID))? $docID : "";
            	print "docID=$docID<br/>";
            	
            	$whatDate = (isset($whatDate))? $whatDate : "";
            	print "whatDate=$whatDate<br/>";
            	
            	$array = $modx->getDocument($docID,$whatDate);
            
            	print date('j-m-Y \в H:i', $array[$whatDate])."<br/>";
            	print "end</p>";
            
            	return;
            ?>


            в документе вызовы такие:
            Опубликован [!getDate? &docID=`[*id*]` &whatDate=`pub_date`!]<br/>
            Отмена публикации [!getDate? &docID=`[*id*]` &whatDate=`unpub_date`!]


            результат на странице такой:
            Опубликован

            begin
            docID=74
            whatDate=pub_date
            7-07-2008 в 02:57
            end

            Отмена публикации
            т.е. во время второго вызова не показывается ничего, как буд-то его и нет совсем.
            Само поле, естественно, имеет значение (unpub_date установленно).
            Если меняю местами вызовы (т.е. сначала unpub пытаюсь посмотреть), то та-же история. Первый вызов работает, второй нет.

            Чего может быть не так?
              • 785
              • 2,113 Posts
              Все должно работать, возможно, страница берется из кэша, в котором сохранен только первый вызов. Попробуйте обновить сайт – может, заработает.

              Но я все же рекомендую сделать один вызов сниппета, в котором одним запросом получаются две даты. Нужно создать примерно такой сниппет:
              <?php
              $id=$modx->documentObject[’id’];
              $array = $modx->getDocument($id,’pub_date, unpub_date’);
              $output = "Опубликован ".date(’j-m-Y в H:i’, $array[’pub_date’])."
              \n";
              $output.= "Отмена публикации ".date(’j-m-Y в H:i’, $array[’unpub_date’])."\n";
              return $output;
              ?>
              И вызывать его
              [[getDate]]
              А можно (и нужно) сниппет значительно упростить, оставив всего одну строку (без переносов):
              <?php
              return "Опубликован: ".date(’j-m-Y в H:i’, $modx->documentObject[’pub_date’])."
              \n"."Отмена публикации: ".date(’j-m-Y в H:i’, $modx->documentObject[’unpub_date’])."\n";
              ?>
                Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
                Статьи о MODx, регулярно новые публикации
                • 19164
                • 1,215 Posts
                Как вариант - для текущего документа - [*pub_date*] [*unpub_date*], форматируем при помощи PHx [*pub_date:date=`%d.%m.%Y`*]


                AKots :Р
                  DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                  Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                  [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
                  • 2532
                  • 31 Posts
                  Metaller, а если использовать GetField типа:
                  [!GetField? &docid=`[*parent*]` &field=`pub_date`!]


                  как к выводу прикрутить форматирование date=`%d.%m.%Y`?
                    • 19164
                    • 1,215 Posts
                    Не получится использовать в PHx некешируемый вызов сниппета - результат все равно будет закеширован.

                    У PHx уже есть готовый модификатор parent, нужно использовать его.

                    [*id:parent=`pub_date`:date=`%d.%m.%y`*]

                    Если кеширование не имеет значения, можно попробовать

                    [*phx:input=`[[GetField? &docid=`[*parent*]` &field=`pub_date`]]`:date=`%d.%m.%y`*]
                      DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                      Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                      [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]