У документов есть "Дата публикации" и "Дата отмены публикации"
Хочу с помошью DocManager`a поуправлять данными в этих полях, но что-то не понимаю какой там формат.
В базе pub_date и unpub_date имеют тип int(20) не понимаю как из него дату\время получить.
Расскажите как с форматом жить.
Пару вопросов сразу.
1. Как записать текущую дату\время?
2. Как получить (посчитать) чтобы записать текущую дату\время + какой-то период, например месяц (два, три).
В MODx, как и в других программах на PHP, используется число, равное количеству секунд, прошедших с начала эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT) до текущего времени. В PHP имеется множество средств работы с ними.
Во-первых, удобнее использовать API MODx вместо запросов к базе:
$array = $modx->getDocument($docID,$whatDate);
$itDate = $array[$whatDate];
Во-вторых, если выводится подряд две даты, то лучше получать их за один запрос базе ($modx->getDocument($docID,’pub_date, unpub_date’)), а не за два, и выводить две строки в одном сниппете.
В-третьих, что значит «не срабатывает»? Есть разные варианты, но в любом случае ничего сложного нет в том, чтобы самостоятельно разобраться, вставив в программу печать получаемых данных и результатов каждого шага вычислений.
Кстати, дата отмены публикации может быть пустой, так что ничего и не выводится.
Все должно работать, возможно, страница берется из кэша, в котором сохранен только первый вызов. Попробуйте обновить сайт – может, заработает.
Но я все же рекомендую сделать один вызов сниппета, в котором одним запросом получаются две даты. Нужно создать примерно такой сниппет:
<?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";
?>
Как вариант - для текущего документа - [*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]
Не получится использовать в 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]