Головна » Блоги » InstantCMS - переваги та недоліки системи
Автор блогу: Олег Васильович я
+63 RSS-стрічка RSS-стрічка

InstantCMS - переваги та недоліки системи

Різне (2)
Нагадуємо автору про завершення терміну його публікаціїї в InstantCMS 2-х
Вітаю!
Часто виникає необхідність нагадати автору запису про те, що закінчується термін його публікації.
Щоб не виходити за межі шаблону, весь код розмістимо в одному файлі.
Для початку скопіюємо файл templates > default > content > default_item.tpl.php в папку content свого шаблону. Якщо необхідніть нагадування є тільки в певному типі контенту, то можна додатково переназвати файл за таким принципом: системна_назва_типу_контента__item.tpl.php. Для прикладу: board_item.tpl.php

Далі скопіюйте, та вставте в потрібному місці наведений нижче код:
Код PHP:
  1.  
  2. <?php if((cmsUser::getInstance()->id == $item['user']['id'] || cmsUser::isAdmin()) && !empty($item['date_pub_end'])) { ?>
  3. <?php
  4. $date_pub_end = date_create($item['date_pub_end']);
  5. //запись будет снята с публикации в конце дня, потому прибавляем 1день к $item['date_pub_end']
  6. date_add($date_pub_end, date_interval_create_from_date_string('1 days'));
  7. $date_pub_end_true = date_format($date_pub_end, 'Y-m-d H:i:s');
  8.  
  9. function diff($date_pub_end_true, $today_date = NULL) {
  10.  
  11. $today_date = new DateTime('now');
  12.  
  13. $time_left = $today_date->diff($date_pub_end_true, false);
  14. $days = $time_left->days;
  15.  
  16. // до окончания публикации осталось:
  17. $time_left->s = $date_pub_end_true->getTimestamp() - $today_date->getTimestamp();//секунд
  18. $time_left->i = floor($time_left->s / 60);//минут
  19. $time_left->h = floor($time_left->s / 3600);//часов
  20. $time_left->d = $days;//дней
  21.  
  22. return $time_left;
  23. }
  24.  
  25. $time_left = diff(new DateTime($date_pub_end_true));
  26.  
  27. ?>
  28.  
  29. <?php
  30. //выводим сообщения, если до окончания срока публикации осталось меньше 30 дней
  31. if($time_left->d < 30) {
  32. ?>
  33. <div class="pub-end-notice">
  34. <?php if ($time_left->h <= 0) { ?>
  35. <div class="red-notice">Публикация записи прекращена!</div>
  36. <?php } elseif($time_left->h < 24) { ?>
  37. <div class="red-notice">Сегодня, в 24:00, публикация записи будет прекращена!</div>
  38. <?php } elseif($time_left->h < 48) { ?>
  39. <div class="orange-notice">Завтра в 24:00 публикация записи будет прекращена!</div>
  40. <?php } else { //выведутся только целые дни (часы) до окончания срока публикации ?>
  41. <div class="green-notice">Публикация записи будет прекращена через <?php html(string_date_age_max($date_pub_end_true)); ?>!</div>
  42. <?php } ?>
  43. </div>
  44. <?php } ?>
  45. <style>
  46. .pub-end-notice {
  47. font-weight: 700;
  48. margin: 15px 0;
  49. }
  50. .green-notice {
  51. color: green;
  52. font-size: 1.3em;
  53. }
  54. .orange-notice {
  55. color: orange;
  56. font-size: 1.5em;
  57. }
  58. .red-notice {
  59. color: red;
  60. font-size: 2em;
  61. }
  62. </style>
  63. <?php } ?>
  64.  
В коді все відкоментовано. Розібратися та змінити під свої потреби не складе проблем.
Змініть на потрібні значення умов: if($time_left->d < 30) та if ($time_left->h <= 0)
До речі, остання зроблена таким чином, що текст попередження можна змінювати мало не щогодини (для прикладу, виводяться різні тексти за 48 та 24 години до закінчення терміну публікаціїї, та після ії завершення).

Стиль текстів зроблено тільки для прикладу. Змініть його на свій смак.

Не забудьте помітити для себе змінений файл, щоби випадково не затерти при оновленнях, та внести в нього відповідні зміни при необхідності (наприклад, при тих же оновленнях).

Миру вам!
Нагадування користувачам про аватар в instantcms 2*
Про бажаність унікального аватару теми піднімались не один раз.
Можна, звичайно, зробити поле "аватар" обов'язковим при реєстації. Недолік - ускладнюється сама реєстрація.
Як варіант пропоную виводити нагадування про нього.
Спробував зробити за допомогою кук.
Отже, завдання вивести нагадування про аватар зареєстрованому користувачу в якого аватар не встановлено.