0

我正在使用 Joomla 3 的 MVC 12.1 平台,并且遇到了一些让模板覆盖工作的问题。

我的组件有 3 个控制器:商店、优惠券、销售。

对于这些控制器中的每一个,我将我的观点称为与此类似:

$paths = new SplPriorityQueue;
$paths->insert(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_stores/stores', 'normal');
$paths->insert(JPATH_COMPONENT . '/views/stores/tmpl', 'normal');

$view = new StoresViewsStores(new StoresModelsStore, $paths);
$view->setLayout('default');

// Render our view.
echo $view->render();

它们之间的唯一区别是分别切换视图/模型/目录。

只要我的模板中不包含任何覆盖,一切都会按预期工作。但是,一旦我包含覆盖,事情就会变得不稳定。

如果我在com_stores/stores/default.php我的模板中添加一个,我的商店会被正确覆盖,但是优惠券和销售控制器开始指向商店覆盖而不是他们自己的文件夹。

我缺少的东西是否使每个控制器都指向相同的覆盖?

仅供参考,这里是每个控制器中路径的内容。

商店:

$paths->insert(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_stores/stores', 'normal');
$paths->insert(JPATH_COMPONENT . '/views/' . $viewName . '/tmpl', 'normal');

销售量:

$paths->insert(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_stores/sales', 'normal');
$paths->insert(JPATH_COMPONENT . '/views/' . $viewName . '/tmpl', 'normal');

优惠券:

$paths->insert(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_stores/coupons', 'normal');
$paths->insert(JPATH_COMPONENT . '/views/' . $viewName . '/tmpl', 'normal');

谢谢您的帮助

4

1 回答 1

0

终于找到了解决办法。我首先通过跟踪组件来查看正在加载的内容。原来一切都是通过我的商店控制器强制执行的。因此,我对组件检查以查看要使用的控制器的方式进行了轻微更改。

$controller = $app->input->get('controller','stores');

$controller = $app->input->get('view','stores');

需要注意的一点是,我的所有视图都与我的控制器名称完全匹配,所以我不需要做任何特别的事情来知道这会起作用。

于 2013-04-19T16:49:35.310 回答