gpt4 book ai didi

php - 在 Magento 中生成自定义 url

转载 作者:可可西里 更新时间:2023-10-31 22:40:51 28 4
gpt4 key购买 nike

我目前正在尝试使用 magento 生成自定义 url/路由,目前我已经在本地模块的 config.xml 中设置了默认路由。

<frontend>
<routers>
<portfolios>
<use>standard</use>
<args>
<module>Custom_Portfolios</module>
<frontName>portfolios</frontName>
</args>
</portfolios>
</routers>
<default>
<router>portfolios</router>
</default>
</frontend>

这目前适用于/portfolios/index/action/custom-string 的 url 路径,这是 magento 默认路由。我想要实现的是拥有/portfolios/custom-string.html 我曾尝试使用 mod_rewrite 规则但没有成功,我发现了一些与使用 .html 的自定义后缀相关的引用资料,我已将其添加到相同的 config.xml 文件。

<default><portfolios><seo><portfolios_url_suffix>.html</portfolios_url_suffix></seo></portfolios></default>

我查看了与路由相关的 alan storm 文档,发现它仅与默认路由路径相关,或者信息有点过时。

您是否知道在 magento 中控制路由的最佳方法以及可能易于遵循且相关的教程?如果是这样,请分享 :D 很多

最佳答案

下面的代码未经测试,但应该可以工作

如果您不想为每个投资组合项目定义自定义重写,只需按照以下步骤操作:

  1. 编写从 Mage_Core_Controller_Varien_Router_Standard 扩展的自定义路由器类并实现 match 方法:

    public function match(Zend_Controller_Request_Http $request)
    {
    $path = explode('/', trim($request->getPathInfo(), '/'));
    // If path doesn't match your module requirements
    if (count($path) > 2 && $path[0] != 'portfolios') {
    return false;
    }
    // Define initial values for controller initialization
    $module = $path[0];
    $realModule = 'Custom_Portfolios';
    $controller = 'index';
    $action = 'action';
    $controllerClassName = $this->_validateControllerClassName(
    $realModule,
    $controller
    );
    // If controller was not found
    if (!$controllerClassName) {
    return false;
    }
    // Instantiate controller class
    $controllerInstance = Mage::getControllerInstance(
    $controllerClassName,
    $request,
    $this->getFront()->getResponse()
    );
    // If action is not found
    if (!$controllerInstance->hasAction($action)) {
    return false; //
    }
    // Set request data
    $request->setModuleName($module);
    $request->setControllerName($controller);
    $request->setActionName($action);
    $request->setControllerModule($realModule);
    // Set your custom request parameter
    $request->setParam('url_path', $path[1]);
    // dispatch action
    $request->setDispatched(true);
    $controllerInstance->dispatch($action);
    // Indicate that our route was dispatched
    return true;
    }
  2. 在 config.xml 中定义您的自定义路由器:

    <stores>
    <default>
    <web>
    <routers>
    <your_custom>
    <area>frontend</area>
    <class>Custom_Portfolios_Controller_Router_Custom</class>
    </your_custom>
    </routers>
    </web>
    </default>
    </stores>
  3. 享受您在 Magento 中的自定义路由:)

关于php - 在 Magento 中生成自定义 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4154521/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com