Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将分层导航和工具栏置于Magento之外_Php_Html_Magento - Fatal编程技术网

Php 将分层导航和工具栏置于Magento之外

Php 将分层导航和工具栏置于Magento之外,php,html,magento,Php,Html,Magento,我试图从magento之外的php获取类别链接的分层导航 我可以创建所有类别的html,但问题是分层链接是使用frontcontroller的参数创建的(与工具栏链接的方式相同) 如果我选择了一个过滤器,那么分层链接的创建就不会考虑它,而且分层链接也没有类别url 我试图在我的php浏览器上重新创建magento中类别页面的frontcontroller,但我没有成功。。。即使我重新创建$\u服务器,但控制器似乎找不到路由器 在php中,如果我使用mage::run,它会正确地执行calcule

我试图从magento之外的php获取类别链接的分层导航

我可以创建所有类别的html,但问题是分层链接是使用frontcontroller的参数创建的(与工具栏链接的方式相同)

如果我选择了一个过滤器,那么分层链接的创建就不会考虑它,而且分层链接也没有类别url

我试图在我的php浏览器上重新创建magento中类别页面的frontcontroller,但我没有成功。。。即使我重新创建$\u服务器,但控制器似乎找不到路由器

在php中,如果我使用mage::run,它会正确地执行calcule操作,但是mage::run会做出响应,而我不需要,因为我只需要分层导航的xml输出

如果我使用mage::app,我可以得到类别html,但是控制器的计算不正确,尽管它是相同的$\u服务器[request\u uri],并且没有正确的链接。前控制器没有动作

在frontcontroller请求中,我看到了两个区别:在magento中dispathed为true,但在php中为no,在magento中de request_uri被重写为catalog/category/view/id/7?color=99,而在php中不是hombre.html?color=99

我遗漏了什么,我需要初始化前控制器吗?o重新初始化


或者有一种不同的方式从magento外部获得分层导航???

我发现了问题和解决方案

在启动magento时,它调用重写URL,目的是在路由URL上获得转换后的友好URL

html?color=99在catalog/category/view/id/7?color=99上转换

因此,第一个是调用
Mage::getModel('core/url_rewrite')->rewrite()
在此之前,frontendcontroller被初始化,在其所有路由器中执行函数匹配,以尝试查找控制器和操作

$frCont = Mage::app()->getFrontController();
foreach ($frCont->getRouters() as $router) {
   if ($router->match($frCont->getRequest())) {
       break;
   }
}
通过这两个步骤,我初始化了frontcontroller,就像我访问url“hombre.html?color=99”一样,但事实上我在我的服务文件夹中的另一个php上

但是match函数在初始化frontcontroller并获取路由器、操作和路由后,默认情况下会分派操作,因此它会生成所有html输出,并且无法处理布局。。。因此,我创建了Mage_Core_Controller_Varien_Router_标准类的本地副本,并更新了功能匹配:

public function match(Zend_Controller_Request_Http $request){

.

.

.

    $controllerInstance->dispatch($action);

    return true;

}
为了这个

public function match(Zend_Controller_Request_Http $request, $dispatchAction = true){

.

.

.

   if($dispatchAction==true){
       $controllerInstance->dispatch($action);
    }

   return true;

}
因此,在我的php服务中,我有以下代码:

   Mage::getModel('core/url_rewrite')->rewrite();
   $frCont = Mage::app()->getFrontController();
   foreach ($frCont->getRouters() as $router) {
     if ($router->match($frCont->getRequest(),false)) {
       break;
     }
   }
我初始化了frontcontroller,并分配了操作、路由器、参数等,就像我从目录URL访问,但没有调度操作一样,然后我可以用布局对象写入我想要的对象

希望它能帮助任何人