`
phpseyo
  • 浏览: 159495 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

用python写的joomla模块生成器

阅读更多

     用到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()

 

0
1
分享到:
评论

相关推荐

    JPS:joomla python 扫描仪

    **JPS:Joomla Python Scanner** JPS,全称为Joomla Python Scanner,是一款基于Python编写的专门针对Joomla CMS(内容管理系统)的安全扫描工具。Joomla是全球广泛使用的开源CMS之一,而JPS旨在帮助网站管理员检测...

    WEB渗透测试数据库

    项目中的python脚本提供用有用的渗透辅助功能,根目录下的pen.py为脚本入口,另外script目录下也有其他一些脚本。 3.1.1 Exploit系统 pen.py的exploit子命令提供了exploit模块相关操作,exploit模块是一个轻量级的...

    wampserver2.5

    3. **PHP5.5**:这个版本的PHP引入了许多新特性,包括:内置的OpCache(用于提升PHP代码执行速度)、生成器(类似Python的yield关键字,用于内存高效的迭代操作)、闭包函数的改进以及更好的错误处理机制。...

    首页可调用标签部分说明(请参照最新 部分有改动)

    "工具"标签可能指的是用于辅助开发或管理的工具,比如版本控制系统(Git)、代码编辑器、调试工具等,或者是CMS提供的插件或模块来简化标签的管理和使用。 总结,"首页可调用标签部分说明"涉及到的是一个网站内容...

    Meshpower-website

    在`Meshpower-website`项目中,开发者使用了Python内置的`venv`模块来创建虚拟环境。这一步骤可以通过以下命令完成: ```bash python -m venv venv ``` 这条命令会在当前目录下创建一个名为`venv`的虚拟环境。虚拟...

    CMS内容管理系统-后台静态页面

    在后台,这些页面可能包括登录、管理面板、文章编辑器、分类管理、用户管理等多个功能模块。例如,"admin"这个文件名可能指的是后台管理界面的入口,管理员通过这个页面可以登录到系统并执行各种管理任务。 在设计...

    最完整的cms内容管理完整大型源码包含数据库

    5. **插件和模块**:扩展系统功能,如SEO优化、社交媒体集成、表单构建器等。 6. **API接口**:允许与其他系统或服务(如移动应用、第三方分析工具)进行数据交换。 **CMS系统的优势** 1. **易用性**:提供图形化...

Global site tag (gtag.js) - Google Analytics