设为首页 收藏本站
查看: 771|回复: 0

[经验分享] 用python写的joomla模块生成器

[复制链接]

尚未签到

发表于 2017-5-3 07:56:38 | 显示全部楼层 |阅读模式
  用到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 += 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()

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-372282-1-1.html 上篇帖子: 用Python实现的简单通讯录 下篇帖子: Python:日志模块logging的应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表