我需要安装我在joomla 2.5版本上创建的组件。 安装程序要求我在默认模板(templates / templatename / html / com_test / viewname / default.php)中添加一个html文件夹,以覆盖另一个组件。 那么如何在instalation xml或instalation.php脚本中指定 在joomla instalation的默认模板中添加包含其他文件夹和文件的文件夹?
我还需要提一下,这是我的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>';
}
}
答案 0 :(得分: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文件 - 尽管你应该可以轻松地从你的组件中复制一些文件夹!
希望这有帮助