Вывод в блоке счетчика со временем. Типа "до конца акции осталось".

Аватар пользователя VasyOK VasyOK 19 апреля 2012 в 20:34

Здорово, народ!

Как сделать такой блок:
Товар: Слон розовый
До конца акции осталось: 50мин. 30 сек

По проишествии этого времени, на этом месте должен появится другой товар.

В блоке ссылка на товар (с определенным признаком) или статью акции товара, не принципиально.

Комментарии

Аватар пользователя S_F S_F 19 апреля 2012 в 20:47

Модулек есть автоматической депубликации нод. Прикрутить к нему считалку в реальном времяни и будет самое оно..

Аватар пользователя Antoniy Antoniy 20 апреля 2012 в 2:25

Лучше не депубликация, а автоматом чтоб ставилось по окончании срока - "Акция закрыта".

Аватар пользователя VasyOK VasyOK 20 апреля 2012 в 16:12

По мне так лучше вообще эту ерунду не ставить но рас надо, значит надо.

Scheduler позволяет задать дату публикации и снятич я с публикации. Вплоть то часа.
А в нем можно выставить только часы, а дни не выставлять? По принципу каждый день с 8,00 до 11,00 пиво со скидкой.

Такую хренотень еще нашел.
http://drupal.org/project/uc_lto

Аватар пользователя VasyOK VasyOK 22 апреля 2012 в 15:05

А по запросу timer на орге показано аж несколько модулей
http://drupal.org/project/modules?filters=bs_project_sandbox%3A0&text=timer

Собственно осоновной вопрос:
как по прошествии промежутка времени снимать с публикации один материал и ставить другой

Аватар пользователя Niklan Niklan 23 апреля 2012 в 11:26

"VasyOK" wrote:
как по прошествии промежутка времени снимать с публикации один материал и ставить другой

снять рулесом по сути можно, а вот добавить хз

Аватар пользователя VasyOK VasyOK 23 апреля 2012 в 14:21

Можно и поставить, но для этого надо знать PHP.
Вот как опубликовать случайный материал из не опубликованных типа story? Здесь специалисты по высокоуровневому кодингу есть?

Создал тему на орге, но видно там мой английский не понимают
http://drupal.org/node/1542354

Аватар пользователя S_F S_F 23 апреля 2012 в 15:16

В любом случае создавать ндо надо заранее, тем или иным образом. Подключать ее можно только "опубликовано/ не опубликовано".
Варианты решений которые попадались впринципе все перечилены.
Самый "навороченый" и гибкий - это рулес.

Вот с сетчиком время тут не подскажу, не было задачи, попробуй спросить у Mirocow, я у него видел решение с подобной фигней.

Аватар пользователя VasyOK VasyOK 23 апреля 2012 в 16:20

Как раз таймер - это легко модулей таймера несколько.

Мне нужно только PHP кодом опубликовать случайный (или не случайный) материал из списка не опубликованных одного типа.

Остальное я знаю.

Аватар пользователя S_F S_F 23 апреля 2012 в 21:43

"VasyOK" wrote:
Мне нужно только PHP кодом опубликовать случайный (или не случайный) материал из списка не опубликованных одного типа.

А почему именно кодом? Вьюс чем плох?

Аватар пользователя VasyOK VasyOK 23 апреля 2012 в 21:58

Это я знаю:
Устанавливаем node expire дефолтное время жизни для материала. Создаем несколько материалов, но публикуем только один.
Делаем правило (Rules), когда время жизни истекает, материал снимаем с публикации...

и... (а вот это PHP кодом в этом я малость плаваю поэтому не знаю):

...публикуем случайный материал из не опубликованных определенного типа.

Как views - не понимаю.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 24 апреля 2012 в 5:56

"VasyOK" wrote:
Вот как опубликовать случайный материал из не опубликованных типа story?

Как то так (не тестировалось)

<?php

$nids 

= array(12345); // Массив из id нод
$random array_rand($nids1); // Отбираем из массива выше случайный ключ id

$node node_load($nids[$random[0]]);
$node->status 1// Публикуем
node_save($node); // Пересохраняем

?>

PROFIT!

Аватар пользователя VasyOK VasyOK 24 апреля 2012 в 15:29

$nids = array(1, 2, 3, 4, 5); - тут судя по всему нужно сделать выборку нод из БД с параметрами
* тип материал
* не опубликовано

Это какая таблица?

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 24 апреля 2012 в 16:52

Выборка по типу ноды

d6: $nodes = db_query('SELECT nid FROM {node} WHERE type="%s"', $type);
d7: $nodes = node_load_multiple(array(), array('type' => $type));

Добавь условие для status = 1

Аватар пользователя S_F S_F 24 апреля 2012 в 17:29

"VasyOK" wrote:
Как views - не понимаю.

Все дошло наконец чего хочешь. Тогда конечно пхпой.
Просто как вариант все "публикуем" а через вьюху рандомно показываем или нет ограниченое количество страниц..

Аватар пользователя VasyOK VasyOK 25 апреля 2012 в 17:07

<?php
$nids = array(1, 2, 3, 4, 5);
$random = array_rand($nids, 1);
$node = node_load($nids[$random[0]]);
$node->status = 1;
node_save($node);
?>
Не работает твой код, volocuga.

Может если использовать Rules в него надо какой-то return добавить?

/*После долгих размышлений*/
Да! В него надо определнно добавить ruturn. Народ, подскажите какой. Или хоть варианты. Или хоть где посмотреть примеры php кода в Rules.