У Друпала есть одна тонкость, как ее побороть я не знаю.
Вариантов отложенной публикации много, самые простые уже посоветовали выше,
можно также использовать db_rewrite_sql
для этого написать простенький модуль,
назовем его "deferrednode", а дату проставлять в поле "дата создания"
function deferrednode_db_rewrite_sql($query, $primary_table, $primary_field, $args){ switch($primary_field){ case'nid': if(!user_access('administer nodes')){ // this query deals with node objects $return = array(); if($primary_table!= 'n'){ $return['join'] = "LEFT JOIN {node} n ON $primary_table.nid = n.nid"; } // $return['where'] = 'created <' . mktime(0, 0, 0, 1, 1, 2005); $return['where'] = 'n.created <' . time(); return$return; break; } case'tid': // this query deals with taxonomy objects break;
case'vid': // this query deals with vocabulary objects break; } }
При отключенном кешировании последний вариант отрабатывает нормально, но стоит включить кеш, и тогда без запуска крона не обойтись.
Учитывая, что крон запускается только через определенные прмежутки времени точно вовремя выставить материал не получается. Та же проблема привязки к крону и у других известных мне способов.
Комментарии
http://drupal.org/project/scheduler
можно просто дату вперёд выставлять, а во views фильтр сделать
Документ: Время создания
меньше чем или равно
now
а в пятом друпале с помощью views это можно сдеать?
у Node: Created Time такого не нашел. Может делается как-то по другому?
заранее спасибо
У Друпала есть одна тонкость, как ее побороть я не знаю.
Вариантов отложенной публикации много, самые простые уже посоветовали выше,
можно также использовать db_rewrite_sql
для этого написать простенький модуль,
назовем его "deferrednode", а дату проставлять в поле "дата создания"
switch ($primary_field) {
case 'nid':
if(!user_access('administer nodes')){
// this query deals with node objects
$return = array();
if ($primary_table != 'n') {
$return['join'] = "LEFT JOIN {node} n ON $primary_table.nid = n.nid";
}
// $return['where'] = 'created <' . mktime(0, 0, 0, 1, 1, 2005);
$return['where'] = 'n.created <' . time();
return $return;
break;
}
case 'tid':
// this query deals with taxonomy objects
break;
case 'vid':
// this query deals with vocabulary objects
break;
}
}
function deferrednode_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if($op=='view' && $node->created > time() && !user_access('administer nodes')) drupal_access_denied();
}
При отключенном кешировании последний вариант отрабатывает нормально, но стоит включить кеш, и тогда без запуска крона не обойтись.
Учитывая, что крон запускается только через определенные прмежутки времени точно вовремя выставить материал не получается. Та же проблема привязки к крону и у других известных мне способов.