3

I'm using Drupal 7.5 and I want to put up a notification about the website going into maintenance mode on x scheduled date and time. What is the best way to do this? Are there any built-in options for posting server maintenance notifications or must I create a custom block for it?

Forgive me for this super basic question, but I did a search and the other questions on this were more advanced.

Note: this site is run on a Commons Profile and developed by someone else.

  • Merci for the (late) accept ... better late then never, right? Next question? – Pierre.Vriens Dec 23 '16 at 9:21
  • I was more novice when I posed this question and had originally accepted the simpler answer but have come to the wisdom of doing things as natively as possible before adding modules. – Christia Dec 23 '16 at 9:23
  • Learning by mistakes, good for you! – Pierre.Vriens Dec 23 '16 at 9:27
  • 1
    @Christia just for the records, rules is not something which comes out of the box in Drupal, rules was good fit for you as you might had it in your project. – arpitr Dec 23 '16 at 14:18
1

Reduce the risk of "modulitis"

As an alternative to the Scheduled Maintenance module, suggested in the previous answer, you can also use the Rules module for this. Instead of installing yet another module that you can only use for "announcing scheduled maintenance".

If you don't have Rules enabled yet, you can probably (actually: pretty sure) use it to implement lots of other features in your site. That will help to reduce the risk of your site suffering "modulitis", aka "way too much contributed modules that slow down a site").

Creating a custom Rule

Have a look at this custom rule (in Rules export format):

{ "rules_announce_scheduled_maintenance" : {
    "LABEL" : "Announce scheduled maintenance",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "data_is" : {
          "data" : [ "site:current-date" ],
          "op" : "\u003E",
          "value" : 1477639800
        }
      },
      { "data_is" : {
          "data" : [ "site:current-date" ],
          "op" : "\u003C",
          "value" : 1477726200
        }
      },
      { "user_has_role" : {
          "account" : [ "site:current-user" ],
          "roles" : { "value" : { "2" : "2" } }
        }
      }
    ],
    "DO" : [
      { "drupal_message" : {
          "message" : "\u003Cstrong\u003EMaintenance upcoming!\u003C\/strong\u003E Please note that access to this site will be limited due to scheduled site maintenance.",
          "type" : "warning"
        }
      }
    ]
  }
}

If you have the Rules UI enabled, you can import the above rule in your own site. Some details about what this rule actually does:

  • The rule is triggered (= Rules Event) for anything a user/visitor does in the site (because of Rules Event Drupal is initializing being used).
  • The first 2 Rules Conditions check is the site's current time (in GMT) is between 2016-10-28 07:30:00 and 2016-10-29 07:30:00.
  • The 3rd Rules Condition verifies if the user is authenticated, so nothing happens for anonymous users. Remove or adapt this Rules Condition to fit your needs.
  • If all Rules Conditions are satisfied, then the Rules Action will display a message (of type warning) with content like so:

    Maintenance upcoming! Please note that access to this site will be limited due to scheduled site maintenance.

    If you want, change the type of message from Warning to Status (= Information only), or to change the actual message content, which BTW can also include some HTML markup.

How to use this rule

  • Any time you have a maintenance window coming up, you only adapt the "from" and "to" dates in the Rules Conditions.
  • You can either leave this rule enabled permanently, or you disable the rule and only enable it around the timeframe you want to show this maintenance message.
  • After the "to" date/time has arrived, no more message will be shown. Even if you don't (or forget to) disable this rule.

Possible improvements

You have all the power of Rules available to further improve this rule, e.g.:

  • Only trigger this rule when (e.g.) "Content is viewed" (by replacing the Rules Event with any other event that fits).
  • Only show it on selected pages (like the frontpage?).
  • Send an eMail to an admin if special conditions are met.
  • Refine the message being shown (e.g. with an hyperlink to a page with more details about scheduled maintenance).
|improve this answer|||||
1

Drupal Core has in built option to put site on maintenance but out of the box it does not have option to show maintenance message prior to scheduled date. In order to do that you can Scheduled Maintenance module.

Scheduled maintenance allows users to schedule an upcoming maintenance and show site visitors a warning message in advance.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.