Joomla: автоматизация установки шаблонов |
|
Добавил(а) microsin
|
Этот простой vbs-скрипт может избавить от нудной процедуры установки шаблонов для Joomla 1.0.12, если их много. Установка происходит методом копирования.
'USAGE: cscript.exe install_all_templates.vbs templates_catalog
'Example: install_all_templates.vbs f:\Joomla\templates\Templateplazza
'
' Этот простой скрипт может избавить от нудной процедуры установки шаблонов,
' если их много. Например, необходимо выбрать шаблон для сайта из
' большой подборки шаблонов, и для этого необходимо сначала установить
' каждый шаблон по отдельности в менеджере шаблонов Joomla, что при количестве
' шаблонов в 30 и более перерастает в неподъемную задачу.
' Скрипт работает просто - на входе через командную строку передается путь до папки,
' куда свалены шаблоны (каждый шаблон - архив с расширением zip). Каждый архив
' проверяется на корректность (при этом используется врЕменная папка temp_dir_path).
' Если с архивом шаблона все в порядке, то создается в папке templates сайта на Joomla
' папка для шаблона, и туда распаковывается его содержимое. Если папка для шаблона
' с таким же именем уже существовала, то её старое содержимое уничтожается и заменяется
' новым. Ошибки пишутся в файл logfile.
' Внимание! Для упрощения скрипт принимает только те архивы шаблонов, у которых основные
' файлы (проверка осуществляется по файлам index.php и templateDetails.xml) и каталоги
' находятся именно в КОРНЕ архива.
Set objArgs = WScript.Arguments
templates_dir_path = objArgs(0)
temp_dir_path = "c:\!install_all_templates_temp"
unzip = chr(34)+"C:\Program Files\7-Zip\7z.exe"+chr(34)+" x -r -o"
logfile = "install_log.txt"
install_dir = "Q:\home\deltacom.ru\www\templates"
Function clear_temp ()
'delete all folders
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFolder temp_dir_path + "\*", 1
Set temp = FSO.GetFolder(temp_dir_path)
'delete all files in root folder
For Each File1 In temp.Files
FSO.DeleteFile File1.Path, 1
Next
End Function
Function log (message)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile(logfile, 8, True)
if (Trim(message)<>"") then
TextStream.WriteLine CStr(Now) + " " + message
else
TextStream.WriteLine message
end if
TextStream.Close
End Function
log ("*** START ***")
'Step 1: make temp folder, if not exist
Set FSO = CreateObject("Scripting.FileSystemObject")
if not FSO.FolderExists(temp_dir_path) then
FSO.CreateFolder temp_dir_path
end if
'cycle at each file in templates_dir_path
Set WshShell = CreateObject("WScript.Shell")
Set Folder = FSO.GetFolder(templates_dir_path)
For Each File In Folder.Files
clear_temp
templateOK = true
'Step 2: unpack template to temp folder
cmdline = unzip + temp_dir_path + " " + File.Path
'WScript.Echo (cmdline)
RetCode = WshShell.Run(cmdline, 1, True)
if RetCode<>0 then
log ("!!!Error unpack: " + File.Path)
end if
'Step 3: check template files
TemplFile = temp_dir_path + "\" + "index.php"
if not FSO.FileExists(TemplFile) then
templateOK = false
end if
TemplFile = temp_dir_path + "\" + "templateDetails.xml"
if not FSO.FileExists(TemplFile) then
templateOK = false
end if
if not templateOK then
log ("!!!Bad template: " + File.Path)
end if
if templateOK then
'Step 4: create template work folder
templ_dir = install_dir + "\" + FSO.GetBaseName(File.Name)
'WScript.Echo (templ_dir)
if FSO.FolderExists(templ_dir) then
FSO.DeleteFolder templ_dir, 1
end if
FSO.CreateFolder templ_dir
'Step 5: unpak template contents
cmdline = unzip + templ_dir + " " + File.Path
RetCode = WshShell.Run(cmdline, 1, True)
if RetCode<>0 then
log ("!!!Error unpack: " + File.Path)
end if
log (FSO.GetBaseName(File.Name) + " installed")
end if
Next
clear_temp
log ("*** STOP ***")
log ("")
WScript.Echo ("Шаблоны установлены")
|