0

joomla2.5バージョンで作成したコンポーネントをインストールする必要があります。インストールでは、別のコンポーネントを上書きするために、デフォルトのテンプレート(templates / templatename / html / com_test / viewname / default.php)にhtmlフォルダーを追加する必要があります。では、インストールxmlまたはinstalation.phpスクリプトで指定して、joomlaインストールのデフォルトテンプレートに他のフォルダーやファイルを含むフォルダーを追加するにはどうすればよいですか?

また、これが私のinstallation.phpファイルのコードであることにも言及する必要があります。これは私がこれまでに作成した方法ですが、それでもフォルダーがコピーされない理由を理解できません。インストールしようとしているzipファイルにあるため、ソースが間違っていると思います

<?php
defined('_JEXEC') or die('Restricted access');

/**
 * Script file of HelloWorld component
 */
class com_helloWorldInstallerScript
{
    /**
     * method to install the component
     *
     * @return void
     */
    function install($parent) 
    {

        $db = JFactory::getDBO();
        $query = "
                SELECT ".$db->nameQuote('template')."
                FROM ".$db->nameQuote('#__template_styles')."
                WHERE ".$db->nameQuote('client_id')." = 1 and ".$db->nameQuote('home')." = 1;
              ";
        $db->setQuery($query);
        $AdminTemplate = $db->loadResult();

        $query = "
                SELECT ".$db->nameQuote('template')."
                FROM ".$db->nameQuote('#__template_styles')."
                WHERE ".$db->nameQuote('client_id')." = 0 and ".$db->nameQuote('home')." = 1;
              ";
        $db->setQuery($query);
        $SiteTemplate = $db->loadResult();

        $src = "/viewnamenew";
        $destination = JPATH_SITE."/templates/".$SiteTemplate ."/html/com_test/viewname";
        JFolder::copy($src, $destination);
    }

    /**
     * method to uninstall the component
     *
     * @return void
     */
    function uninstall($parent) 
    {
        // $parent is the class calling this method
        echo '<p>' . JText::_('COM_HELLOWORLD_UNINSTALL_TEXT') . '</p>';
    }

    /**
     * method to update the component
     *
     * @return void
     */
    function update($parent) 
    {
        // $parent is the class calling this method
        echo '<p>' . JText::_('COM_HELLOWORLD_UPDATE_TEXT') . '</p>';
    }

    /**
     * method to run before an install/update/uninstall method
     *
     * @return void
     */
    function preflight($type, $parent) 
    {
        // $parent is the class calling this method
        // $type is the type of change (install, update or discover_install)
        echo '<p>' . JText::_('COM_HELLOWORLD_PREFLIGHT_' . $type . '_TEXT') . '</p>';
    }

    /**
     * method to run after an install/update/uninstall method
     *
     * @return void
     */
    function postflight($type, $parent) 
    {
        // $parent is the class calling this method
        // $type is the type of change (install, update or discover_install)
        echo '<p>' . JText::_('COM_HELLOWORLD_POSTFLIGHT_' . $type . '_TEXT') . '</p>';
    }
}
4

1 に答える 1

1

installation.php ファイルを使用する必要があります。

フォルダーを作成してその中にファイルをコピーする場合は、これらの行に沿って何かを行います

$destination = JPATH_SITE."/templates/templatename/html/com_test/viewname";
JFolder::create($destination);
JFile::move($src, $dest);

JPATH_SITE は、Joomla のデフォルト ディレクトリです。$src はコンポーネントと共にインストールしたファイルのディレクトリで、$dest は JPATH_SITE."/templates/templatename/html/com_test/viewname" になります。

別の方法 (そしておそらくより良い方法) で、installation.php 内のファイルを次のように記述することもできます。

jimport('joomla.filesystem.file');
$file=JPATH_SITE."templates/templatename/html/com_test/viewname/default.php";
$buffer="Text to put into the file"
JFile::write($file, &$buffer)

これにより、JFolder をまったく使用しなくても、必要なフォルダーが作成されます。

いくつかのフォルダーを作成する場合は、いくつかの空の index.html ファイルを配置する必要があることに注意してください。ただし、これらのいくつかはコンポーネントから簡単にコピーできるはずです!

お役に立てれば

于 2012-08-11T19:25:31.613 に答える