簡體   English   中英

Joomla 3 MVC平台12.1自定義組件模板覆蓋

[英]Joomla 3 MVC platform 12.1 custom component template override

我正在使用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');

謝謝您的幫助

終於找到了解決方法。 我首先瀏覽了該組件以查看正在加載的內容。 事實證明,一切都是通過我的商店控制器強制執行的。 因此,我對組件進行檢查以查看要使用的控制器的方式做了些微更改。

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

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

需要注意的一件事是,我所有的視圖匹配都與我的控制器名稱完全匹配,因此我不必做任何特殊的事情就知道它會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM