自定义模块中的Magento seo友好URL

时间:2014-03-13 10:43:42

标签: php magento zend-framework

我想创建一个porfolio模块,但我需要它是seo友好的,所以url应该是这样的:

example.com/portfolio/projectid

其中portfolio - module,所以它将是索引动作 projectid - 基于字段别名

很容易创建example.com/portfolio,但如何创建控制器,或检测后面的内容? 产品中存在相同的URL层次结构,因此它是类别/产品

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

下面的代码适用于item / id。你可以根据自己的要求改变。

                    $model = Mage::getModel('items/items');

        /*Rewrite */
        $isSystem = 0; // set 0 for custom url as we have created custom for profile extension

        $_itemId = $model->getModuleItemId();//module_item_id field
        $_itemName = $model->getTitle();//title field
        $_itemName = strtolower(str_replace(" ", "", $_itemName));



        // save profile view url rewrite
        $viewIdPath = 'item/id'.'/'.$_itemId;

        $viewRequestPath = 'items/'.$_itemName;
        $viewTargetPath = 'items/index/item/id/'.$_itemId;//controller is itemsController.php, Action is itemAction() 

        $_coreUrlRewrite = Mage::getModel('core/url_rewrite');
        $_coreUrlRewrite->load($viewIdPath, 'id_path'); // check if item path already saved? If yes, $_coreUrlRewrite will contain existing data.

        $_coreUrlRewrite->setStoreId($_storeId)
        ->setIdPath($viewIdPath)
        ->setRequestPath($viewRequestPath)
        ->setTargetPath($viewTargetPath)
        ->setIsSystem($isSystem)
        ->save();
        if(isset($viewRequestPath)){
            $model->setUrl($viewRequestPath);
            $model->save();
        }

        /*Rewrite End*/

您可以找到更多信息here& here