问题描述
我想知道是否有人在如何安排在特定日期和时间将Joomla设置为“离线/维护模式”的更多详细信息。我发现了这个post here on stack overflow,我想知道是否有人成功(1)实现了一个自定义插件来添加此功能,或者(2)通过将站点设置为离线/维护模式的脚本,也许cronjob在特定时间运行脚本,或者(3)可能已经存在一个扩展,只需添加此脱机/维护模式计划功能即可。
根据我上面链接的上一篇文章,我不确定插件是否可以工作,或者不确定如何最好地使用脚本和cronjob技术。根据我在帖子中的回复的理解,听起来脚本和cronjob将是实现此目的的唯一方法。如果有人可以让我知道他们是否成功实现了这一点,那将是一件好事,或者关于如何实现它的任何建议或方向会有所帮助。
解决方法
使用这么少的插件在我看来不值得。 我宁愿使用像这样的小脚本:
<?php
// Make sure this is only called through command line
if (php_sapi_name() !== "cli") die('Only command line');
// Replace by your joomla configuration file path
$configuration_file_path = '/var/www/joomla/configuration.php';
if (!empty($argv[1])) {
$offline = 1;
} else {
$offline = 0;
}
// Retrieve configuration file content
$configuration_content = file_get_contents($configuration_file_path);
// Replace the offline line by the calculated value
$configuration_content = preg_replace('/(.*)public \$offline =(.*)/m','$1public $offline = \'' . $offline . '\';',$configuration_content);
// Write back the configuration file
file_put_contents($configuration_file_path,$configuration_content);
可以通过命令行调用此脚本:
php offline.php 1 #to enable offline status
php offline.php 0 #to disable offline status
如果您需要通过编辑/ etc / crontab来通过cronjob运行它,或将其添加到您的托管设置中:
# Offline at 4AM each day
0 4 * * * www-data php /path/of/your/script/offline.php 1 >> /dev/null 2>&1
# Online at 4:05AM each day
5 4 * * * www-data php /path/of/your/script/offline.php 0 >> /dev/null 2>&1