弹出窗口中的Magento产品评论表

时间:2012-11-27 22:34:27

标签: magento magento-1.6

我从产品页面中删除了“审核”表单,因为我使用的扩展程序向客户发送了一封电子邮件,其中包含指向特定网址的链接以及他们购买的产品的评论表单。

但如果我将商品卖出商店,我需要一个或多或少的隐藏页面(www.shop.com/productname/review)和评论表。

我使用的是Magento 1.6

1 个答案:

答案 0 :(得分:3)

我希望你对Magento的内部运作有点熟悉,因为这绝对不适合初学者:)。

首先,您需要从观察controller_front_init_router事件开始,如下所示:

<global>
    <events>
        <controller_front_init_routers>
            <observers>
                <controller_noroute>
                    <type>singleton</type>
                    <class>Namespace_Module_Controller_Router</class>
                    <method>initControllerRouters</method>
                </controller_noroute>
            </observers>
        </controller_front_init_routers>
    </events>
</global>

现在,如果你一直在开发,你会注意到我在这里使用控制器作为观察者有点不同寻常。对我而言,它可以清理一些东西。但是,谁知道,可能有更好的方法来做到这一点?

这是控制器。如您所见,我们已经有效地将路由器插入到路由器匹配列表的末尾(如果您查看default),就在Mage_Core_Controller_Varien_Front路由器的前面。

class Namespace_Module_Controller_Router extends Mage_Core_Controller_Varien_Router_Abstract
{
    public function initControllerRouters($observer)
    {
        /* @var $front Mage_Core_Controller_Varien_Front */
        $front = $observer->getFront();

        $front->addRouter('Namespace_Module', $this);
    }

    public function match(Zend_Controller_Request_Http $request) {
        $identifier = trim($request->getPathInfo(), '/');

        $parts = explode("/", $identifier);
        if (count($parts) > 1) {
            $productKey = $parts[0];
            $action = $parts[1];

            if (count($parts) > 2 && (count($parts)%2) == 0) {
                for ($i = 2; $i < count($parts); $i++) {
                    $request->setParam($parts[$i], $parts[$i++]);
                }
            }

            $product = Mage::getModel('catalog/product')->loadByAttribute($productKey, 'url_key');
            if ($product->getId()) {
                $request->setModuleName('your_module')
                    ->setControllerName('index')
                    ->setActionName($action);

                $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier);

                return true;
            } else {
                // Redirect to an error.
                return true;
            }
        }
        return false;

    }

}