2012-02-16 7 views
0

Я планирую разработать пользовательский компонент Joomla и хранить файлы в репозитории git. Структура моего мерзавца проекта будет имитировать развернутый StrutureJoomla Custom Compoment Dev Env: Горячее развертывание

Joomla
<root> 
-administrator 
    -components 
    -com_abc 
-components 
    -com_abc 
-modules 
    -com_abc 
-plugins 
    -com_abc 

Вместо того, чтобы скопировать/заархивировать файлы PHP/HTML для компонента каждый раз, когда я хотел бы попробовать и использовать папку Joomla корня, как root для моего проекта git. Я бы использовал функцию git ignore, чтобы исключить файлы, относящиеся к основному проекту joomla. Мне интересно, кто-нибудь сделал что-то подобное и как вы изначально развертываете свой компонент. Это всего лишь случай использования диспетчера расширений Joomla и указания каталога в корневой каталог joomla?

ответ

2

Я сам так давно сделал это. Я использовал следующие три ссылки, чтобы настроить свою структуру развития:

Что я теперь получил отдельный проект Eclipse, для моей локальной установки Joomla и каждый Joomla расширение/шаблон. На каждом расширении я использую Git, но не сама установка Joomla.

Каждый раз, когда я вношу изменения в расширение, я использую построитель Eclipse для вызова Phing, который копирует отредактированные файлы в мою установку Joomla. Таким образом, я могу проверить изменения локально. Когда я готов развернуть расширения на удаленный сайт, я использую Phing для создания почтовых пакетов, чтобы я мог вручную установить их с помощью Joomla Extension Manager.

Обратите внимание, что я нахожусь в Windows, но я думаю, что это хорошее решение для других операционных систем. Использование Eclipse в качестве редактора также хорошо, с завершением кода и т. Д. Раньше я использовал Notepad ++.

Моей структура папок расширений:

com_extensionname 
    - backend 
     - assets 
     - controllers 
     - helpers 
     - language 
     - models 
     - sql 
     - tables 
     - views 
     - access.xml 
     - extensionname.php 
     - config.xml 
     - controller.php 
     - index.html 
     - router.php 
     - LICENSE.txt 
    - frontend 
     - assets 
     - controllers 
     - helpers 
     - language 
     - models 
     - views 
     - extensionname.php 
     - controller.php 
     - index.html 
     - router.php 
    - build.xml 
    - extensionname.xml 

Затмение внешнего инструмента для запуска следующего файла:

Location: Path to phing.bat 
Working Directory: ${project_loc} 
Arguments: create_packages (This only argument only goes to the "Create packages"-tool 

Пример Phing XML-файл (build.xml):

<?xml version="1.0" encoding="UTF-8"?> 
<project name="Project Name" default="copy_to_test" basedir="."> 
<property name="test" value="YOUR PATH TO LOCAL JOOMLA INSTALLATION" override="true" /> 
<property name="src" value="${project.basedir}" override="true"/> 

<!-- Package properties --> 
<property name="package_path" value="PATH WHERE PACKAGES SHOULD GO" override="true" /> 
<property name="package_name" value="com_YOUREXTENSION" override="true" /> 

<!-- Files --> 
<fileset dir="./frontend" id="frontend_files"> 
    <include name="**" /> 
    <exclude name="language/**" /> 
</fileset> 
<fileset dir="./backend" id="backend_files"> 
    <include name="**" /> 
    <exclude name="language/**" /> 
    <exclude name="packages/**" /> 
</fileset> 

<!-- Language files --> 
<fileset dir="./frontend/language" id="frontend_language_files"> 
    <include name="**" /> 
</fileset> 
<fileset dir="./backend/language" id="backend_language_files"> 
    <include name="**" /> 
</fileset> 

<!-- All files (for packaging) --> 
<fileset dir="${src}" id="allfiles"> 
    <include name="**" /> 
    <exclude name="backend/packages/**" /> 
    <exclude name=".**" /> 
</fileset> 

<!-- Target: Copy to test --> 
<target name="copy_to_test" description="Copies files to test project."> 
    <echo message="Running build.xml. Copying files from dev to test..." /> 

    <!-- Manifest file --> 
    <copy file="MANIFEST_FILE.xml" todir="${test}/administrator/components/com_YOUREXTENSION" /> 

    <!-- Component files --> 
    <copy todir="${test}/components/com_YOUREXTENSION"> 
     <fileset refid="frontend_files" /> 
    </copy> 
    <copy todir="${test}/administrator/components/com_YOUREXTENSION"> 
     <fileset refid="backend_files" /> 
    </copy> 

    <!-- Language files --> 
    <copy todir="${test}/language/en-GB"> 
     <fileset refid="frontend_language_files" /> 
    </copy> 
    <copy todir="${test}/administrator/language/en-GB"> 
     <fileset refid="backend_language_files" /> 
    </copy> 
</target> 

<!-- Target: Create packages --> 
<target name="create_packages" description="Generates package files"> 
    <echo message="Running build.xml. Generating package files" /> 

    <!-- <propertyprompt propertyName="package_version" defaultValue="" promptText="Enter version" /> --> 
    <xmlproperty file="MANIFEST_FILE.xml"/> 

    <delete file="${package_path}/${package_name}-${extension.version}.zip" /> 
    <delete file="${package_path}/${package_name}-${extension.version}.tar.gz" /> 

    <zip destfile="${package_path}/${package_name}-${extension.version}.zip"> 
     <fileset refid="allfiles" /> 
    </zip> 
    <tar destfile="${package_path}/${package_name}-${extension.version}.tar.gz" compression="gzip"> 
     <fileset refid="allfiles" /> 
    </tar> 
</target> 

Смежные вопросы