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 ("Шаблоны установлены")