`
phpseyo
  • 浏览: 158350 次
  • 性别: 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
分享到:
评论

相关推荐

    joomla模块开发教程

    Joomla模块开发是扩展Joomla网站功能的关键途径,使其能够支持多语言,为全球用户提供更加友好和便捷的体验。在本教程中,我们将探讨如何创建和管理Joomla模块的语言文件,以便实现多语言功能。 首先,为了使模块...

    joomla模块用户列表

    Joomla是一款广泛使用的开源内容管理系统(CMS),它允许用户创建和管理网站,具有高度的可扩展性和灵活性。在Joomla中,“模块”是构建网站布局和功能的基本元素,它们可以显示在页面的不同位置,如侧边栏、页眉或...

    joomla category模块

    在使用 Joomla Category 模块时,你可以根据需要调整这些文件来实现自定义功能。例如,可以通过修改 `helper.php` 中的函数来添加新的筛选条件,或者通过编辑 `tmpl` 文件夹内的模板文件来改变分类列表的视觉效果。...

    joomla模板和模块

    - 复制模块不会生成新的代码文件,而是在系统中创建了一个新的实例,便于在不同位置使用相同的模块内容。 #### 二、位置、布局与模板 **2.1 模板与风格** - **模板(Template)**:在Joomla中,模板指的是网站的整体...

    joomla 标签云模块

    对于"Joomla 标签云模块"的使用,首先你需要确保你的网站运行的是Joomla!1.5版本。由于这个模块依赖于Flash插件,因此在用户浏览器中安装Flash是必不可少的。然而,需要注意的是,Adobe Flash已经逐渐被淘汰,许多...

    joomla留言板模块

    在实际使用中,安装这个Joomla留言板模块后,管理员可以通过后台管理界面进行配置,设置如是否需要用户登录才能留言、是否开启邮件通知、每页显示留言数量等参数。用户则可以在前台页面上查看并发表留言,与其他访问...

    joomla图片模块

    "Joomla图片模块"这个主题涵盖了许多关键知识点,包括模块安装、配置、使用以及与Joomla系统其他组件的交互。 首先,我们来看看提供的文件列表: 1. **uninstall.morfeoshow.php**:这是模块的卸载脚本,当用户...

    joomla 新闻联播 模块

    "新闻联播模块"在Joomla中是一个特别设计的组件,它允许用户在网站上创建动态且吸引人的新闻展示,通常以幻灯片的形式呈现,以吸引访问者的注意力并提供最新的信息。 **Joomla模块详解** Joomla模块是系统中的小...

    joomla分享按钮模块

    **Joomla 分享按钮模块详解** Joomla 是一个流行的开源内容管理系统(CMS),它允许用户创建、管理和维护网站,而无需深入的编程知识。在Joomla的生态系统中,"分享按钮模块"是增强网站交互性的重要组件。这个模块...

    Joomla PayPlans发票模块

    使用Joomla PayPlans发票模块,用户可以享受到以下主要功能: - **自动发票创建**:每次完成支付后,系统会自动创建并关联相应的发票,减少人为错误。 - **自定义模板**:可以设置和定制发票的外观和格式,符合公司...

    joomla视频模块

    **Joomla视频模块详解** Joomla,作为一个流行的开源内容管理系统(CMS),允许用户轻松地创建和管理网站。在Joomla中,"模块"是构建页面布局的重要组成部分,它们可以显示在网站的不同位置,如页眉、页脚、侧边栏...

    joomla PNG 补丁 模块

    安装和启用这个模块后,Joomla网站上的PNG图片应该能够正确显示其透明效果,无论用户使用的是哪种浏览器。为了实现这一目标,模块可能采用了一些技术策略,比如使用CSS滤镜、JavaScript库或者服务器端处理,具体取决...

    joomla modules

    要使用 mod_banner 模块,首先需要将其解压并上传到 Joomla 网站的 "modules" 目录下。然后,在 Joomla 后台管理界面中找到“模块管理”,点击“安装新模块”导入 "mod_banner.xml" 文件。安装成功后,你可以对模块...

    joomla图片循环播放模块

    5. 内容管理:将需要展示的图片上传到Joomla的媒体管理器,并在模块配置中引用这些图片。还可以添加链接、标题和描述,以增强用户体验。 6. 测试与发布:最后,预览网站以确保模块按预期工作,无误后将其设为“发布...

    joomla Flash模块

    使用Joomla Flash模块,你需要: - 在Joomla后台的“模块管理”部分安装并启用该模块。 - 配置模块,指定SWF文件的URL,设置合适的尺寸和其他属性。 - 将模块拖放到网站的合适位置,如主要内容区、侧边栏或页脚等。 ...

    joomla建站软件需用模块

    很难找的,内含19个joomla模块,绝对超值,有需要建站的朋友可以来此下载。

    joomla表单模块

    9. **扩展性**:Joomla表单模块可以通过Joomla的事件触发机制(如contentPrepare或onFormRender)与其他插件进行集成,实现更复杂的功能,如表单字段的动态生成、第三方服务的集成等。 10. **备份与更新**:在对...

    Joomla 新闻图模块

    "Joomla 新闻图模块"指的是专为此目的设计的模块,它可以增强网站的用户体验,增加互动性,同时帮助传达最新信息。 这个模块可能包含以下功能: 1. **多图展示**:新闻图模块能够一次性显示多张图片,每张图片代表...

Global site tag (gtag.js) - Google Analytics