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