我是joomla的新手,我正在尝试编写一个可安装的Joomla组件,该组件在此URL上公开HTML页面:http://localhost/joomla/someurl
(Joomla安装在/ joomla /)
以下是我已经完成的事情:
/joomla/components/
文件夹中创建了一个基本组件
router.php
并创建了一个要显示的视图。我的组件名称为mycomponent
default
视图页面。以下工作:
/joomla/components/mycomponent
/joomla/index.php?option=com_mycomponent
我有以下问题:
/joomla/arbitraryurl/
答案 0 :(得分:0)
1 /你不能使用菜单链接,如果你的视图链接到菜单项,Joomla会自动生成网址。 如果您想允许用户在菜单http://docs.joomla.org/J3.x:Developing_a_MVC_Component/Adding_a_menu_type_to_the_site_part
中关联您的观点,请在此处说明所有内容如果您无法将此视图链接到菜单项,我会针对某些特定情况使用系统插件。 系统插件将扩充JRouter,您将能够路由到您的组件以获取任何URL。
//-- No direct access
defined('_JEXEC') || die('=;)');
class plgSystemYourplugin extends JPlugin
{
public function onAfterInitialise()
{
$app = JFactory::getApplication();
// get the router
if ($app->isSite()) {
$router = $app->getRouter();
$router->attachParseRule(array($this, 'replaceRoute'));
}
}
/**
* @param JRouterSite &$router The Joomla Site Router
* @param JURI &$uri The URI to parse
*
* @return array $vars The array of processed URI variables
*/
public function replaceRoute (&$router, &$uri)
{
$array = array();
$yourURI = 'whateverIwant' //here is your custom uri
$UriSegs = sizeof(explode('/',$yourURI));
$Segs = explode('/',$yourURI);
$path = explode('/',$uri->getPath());
if(count($Segs) < count($path)){
for ($index = $UriSegs-1; $index < count($Segs); $index++) {
if($Segs[$index]!==$path[$index]){
return $array;
}
}
if(!isset($path[1]) || $path[1]===''){
return $array;
}
JRequest::setVar('option','com_yourcomponent');
JRequest::setVar('view','yourView');
$uri->reset();
}
return $array;
}
}
这会将用户重定向到index.php?option = com_yourcomponent&amp; view = yourView如果他需要页面http://yourdomaine.com/whateverIwant
此处有更多信息:http://docs.joomla.org/J2.5:Creating_a_System_Plugin_to_augment_JRouter
2 /您只需添加到url&amp; tmp =组件,Joomla将删除标准模板和模块,它将只渲染组件。
3 /您可以使用
对于脚本:
$document->addScript(JURI::root().'components/com_yourcomponent/assets/js/script.js');
对于css文件:
$document->addStyleSheet(JURI::root().'components/com_yourcomponent/assets/css/style.css');
此处有更多信息http://docs.joomla.org/Adding_JavaScript和http://docs.joomla.org/JDocument/addStyleSheet