0

好吧,伙计们,这是 hwta 正在尝试做的事情。我有一个已安装的 joomla 组件。它工作得很好但现在我希望组件加载它自己的 index.php 和 css 而不必依赖或关心默认模板。我创建了一个组件/视图/dafault.php 并在其中调用

require_once ('D:\site\localsite\templates\component\index.php');

在 index.php 中,我已经调用了 css,所以这没关系。问题是所有其他默认项目都进入视图顶部菜单、侧面菜单、徽标以及默认模板的所有其他内容。

请帮助我。我在这个上拉头发。我是 joomla 的新手——习惯了 kohana。

而且我已经尝试过 tmpl=component 并且它没有做太多。有没有办法去除所有预加载的东西,例如在默认模板上,只留下组件人员?

4

4 回答 4

0

如果我不理解您的问题,您可以这样做;

<?php if ($this->countModules( 'position-1' )) : ?>
   <div class="cssforthecomponent">
      <jdoc:include type="component" />
   </div>
<?php else: ?>  

<?php if ($this->countModules( 'position-2' )) : ?>
    <div class="cssfortherestofwebsite">
        <jdoc:include type="component" />
   </div>
<?php endif; ?>

将组件分配给具有空模块的菜单项到同一菜单项的位置 1。它会起作用的。你不需要为此包括或做等等。

和平..

于 2013-07-27T09:29:50.843 回答
0

你可以这样调用你的组件:

index.php?option=com_your_component&format=raw

或者您可以为您的组件添加一个菜单项并禁用此菜单项的所有模块分配

于 2013-07-27T22:31:08.863 回答
0

你在这方面工作太努力了。Joomla 旨在使模板覆盖变得容易,而无需硬编码一堆可能在以后导致问题的东西。最简单的方法是创建一个特定于该组件的模板,然后将该模板仅分配给该组件。您将需要为组件创建一个菜单项,以便您拥有一个项 ID,它会显示在模板管理器的菜单分配中。如果模板与原始站点模板相似,您可以在模板管理器中进行复制,然后编辑生成的副本。

于 2013-07-29T06:26:13.927 回答
0

在组件的基本文件中(components/com_yourname/yourname.php位于

$app = JFactory::getApplication();
$menu = $app->getMenu();
$jinput = $app->input;
// check if they are on the default menu item (i.e. not your component's)
// also check if the template is set already
if ($menu->getActive() == $menu->getDefault() && $jinput->get('template') != 'comtemplate') {
    // you might be able to get away with this, I haven't tested this
    $jinput->set('template', 'comtemplate');
    // otherwise set up a redirect
    // get the current url of the page
    $url = $_SERVER['REQUEST_URI'];
    // check if '?' already exists in the url
    // if it does then there is already the start of the query string so we should
    // use '&' to tack on the new query item
    // if not then start the query string with '?'
    $url .= (strpos($url, '?')===FALSE ? '?' : '&') . 'template=comtemplate';
    // take the new url and redirect to it.
    //This should update the url in the browser for the user
    $app->redirect($url);
    // since you redirected, no sense letting anything else run here, so exit
    exit();
}

更新:我在代码中添加了更好的注释,所以希望你能看到我想要做什么。

于 2013-07-31T21:20:15.390 回答