用到joomla做东西,但是每次新建模块都得以导入的方式才行(直接在数据表module中新增记录和新建module文件夹的方法在 1.7 版本上不灵)。于是用python写了个生成模块的小程序,这样直接输入模块名就可以生成一个模块zip包,再把zip包导入joomla后台就OK了。暂时只是生成 module ,以后有需要再做兼容 component 和 plugin 的吧。由于有些机器上没装python,用py2exe转为exe程序,直接运行压缩包里的joomla_module.exe根据提示填即可。
这里是 python 代码:
# A Generation for joomla to create module easily # @author phpseyo # @version 1.0.0 # @date 2011-12-23 import string import shutil import sys import os import types import zipfile def rewrite_file(path, find, rep): memoryFile = [] #get these file content fp = open (path, 'r+') for line in fp.readlines(): if (type(find) is types.ListType): i = 0 for find_word in find: if (line.find(find_word)>1): line = line.replace(find_word, rep[i]) i += 1 memoryFile.append(line) continue else : if (line.find(find)>1): line = line.replace(find, rep) memoryFile.append(line) continue memoryFile.append(line) fp.close() os.remove(path) newfiles = open(path, 'w') for line in memoryFile: newfiles.write(line) newfiles.close() def zip_dir(source_dir, out_path): target_file = out_path + '.zip' myZipFile = zipfile.ZipFile(target_file, 'w' ) for root,dirs,files in os.walk(source_dir): for vfileName in files: fileName = os.path.join(root,vfileName) myZipFile.write( fileName, fileName, zipfile.ZIP_DEFLATED ) myZipFile.close() __author__="Administrator" __date__ ="$2011-12-22 17:52:45$" # define file path mod_dir = 'mod_name/' lg_dir = 'language/zh-CN/' tmpl_dir = 'tmpl/' module_path = 'D:/' file_helper = mod_dir + 'helper.php' file_name_php = mod_dir + 'mod_name.php' file_name_xml = mod_dir + 'mod_name.xml' file_default = mod_dir + tmpl_dir + 'default.php' file_index = mod_dir + 'index.html' file_lg_ini = mod_dir + lg_dir + 'zh-CN.mod_name.ini' file_lg_sys_ini = mod_dir + lg_dir + 'zh-CN.mod_name.sys.ini' # Get user's input mod_name = raw_input('Please input your mod_name!\n') mod_name_lower = mod_name.lower() mod_name_upper = mod_name.upper() mod_name_camel = '' # Split '_' and get the camel words if mod_name.find('_') : mod_name_split = mod_name.split('_') for mod_name_word in mod_name_split : mod_name_camel += string.capwords(mod_name_word) else : mod_name_camel = string.capwords(mod_name) # Make directory and files if os.path.exists(module_path+'mod_'+mod_name_lower): print('\nDirectory have been made! ') os._exit(0) new_mod_dir = module_path+'mod_'+mod_name_lower+'/' os.makedirs(new_mod_dir+lg_dir) os.makedirs(new_mod_dir+tmpl_dir) # Copy files to the new dir shutil.copy(file_helper, new_mod_dir+'helper.php') shutil.copy(file_name_php, new_mod_dir+'mod_'+mod_name_lower+'.php') shutil.copy(file_name_xml, new_mod_dir+'mod_'+mod_name_lower+'.xml') shutil.copy(file_index, new_mod_dir+'index.html') shutil.copy(file_index, new_mod_dir+tmpl_dir+'index.html') shutil.copy(file_default, new_mod_dir+tmpl_dir+'default.php') shutil.copy(file_lg_ini, new_mod_dir+lg_dir+'zh-CN.mod_'+mod_name_lower+'.ini') shutil.copy(file_lg_sys_ini, new_mod_dir+lg_dir+'zh-CN.mod_'+mod_name_lower+'.sys.ini') # Replace the words in files find1 = '[Name]' find2 = ['[name]', '[NAME]'] find3 = '[NAME]' rep2 = [mod_name_lower, mod_name_upper] rewrite_file(new_mod_dir+'helper.php', find1, mod_name_camel) rewrite_file(new_mod_dir+'mod_'+mod_name_lower+'.php', find1, mod_name_camel) rewrite_file(new_mod_dir+'mod_'+mod_name_lower+'.xml', find2, rep2) rewrite_file(new_mod_dir+lg_dir+'zh-CN.mod_'+mod_name_lower+'.ini', find3, mod_name_upper) rewrite_file(new_mod_dir+lg_dir+'zh-CN.mod_'+mod_name_lower+'.sys.ini', find3, mod_name_upper) # Zip files zip_dir(new_mod_dir, module_path+'mod_'+mod_name_lower) print('OK! The zip is under '+module_path) raw_input()