7

我在安装 Magento 时遇到问题,在 CMS 中,当我使用 wysiwig 编辑器插入图像时,文件夹不断打开。

文件夹结构应该是:

- infortis
    - brands
    - fortis
    - ultimo

但我得到的是:

-infortis
    -infortis
        -infortis
            -infortis
                -infortis

这只是不断重复。

Magento 版本 1.8.1。任何帮助表示赞赏。

4

3 回答 3

11

我发现以下编辑使其按预期工作,并且也适用于非符号链接(开发)资源:

在与 相同的类中mentiond Mage_Cms_Helper_Wysiwyg_Images,应用这些补丁:

# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- <html>Images.php (<b>Today 4:14:50 PM</b>)</html>
+++ <html><b>Current File</b></html>
@@ -223,7 +223,7 @@
     public function getCurrentUrl()
     {
         if (!$this->_currentUrl) {
-            $path = str_replace(Mage::getConfig()->getOptions()->getMediaDir(), '', $this->getCurrentPath());
+            $path = str_replace(realpath(Mage::getConfig()->getOptions()->getMediaDir()), '', $this->getCurrentPath());
             $path = trim($path, DS);
             $this->_currentUrl = Mage::app()->getStore($this->_storeId)->getBaseUrl('media') .
                                  $this->convertPathToUrl($path) . '/';



# This patch file was generated by NetBeans IDE
# It uses platform neutral UTF-8 encoding and \n newlines.
--- <html>Images.php (<b>f47f0ff</b>)</html>
+++ <html><b>Current File</b></html>
@@ -68,7 +68,7 @@
      */
     public function getStorageRoot()
     {
-        return Mage::getConfig()->getOptions()->getMediaDir() . DS . Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY
+        return realpath(Mage::getConfig()->getOptions()->getMediaDir()) . DS . Mage_Cms_Model_Wysiwyg_Config::IMAGE_DIRECTORY
             . DS;
     }
于 2014-02-04T08:27:10.027 回答
2

发现问题在Mage_Cms_Helper_Wysiwyg_Images::convertIdToPath

核心代码如下。

public function convertIdToPath($id)
{
    $path = $this->idDecode($id);
    if (!strstr($path, $this->getStorageRoot())) {
        $path = $this->getStorageRoot() . $path;
    }
    return $path;
}

修复方法是在获取存储根目录时使用 realpath,如下所示。

public function convertIdToPath($id)
{
    $path = $this->idDecode($id);
    $realpath = $this->getStorageRoot();
    if (is_link(rtrim($realpath,'/'))) {
        $realpath = realpath($realpath);
    }
    if (!strstr($path, $realpath)) {
        $path = $realpath . $path;
    }
    return $path;
}

所以我们所做的就是重写Mage_Cms_Helper_Wysiwyg_Images并使用更新后的 converIdToPath 函数。我在一个德国网站上找到了原始解决方案,但如果说你有一个没有链接的开发系统和另一个有链接的系统,那将会中断。

于 2014-01-30T16:13:47.697 回答
0

我们最近也遇到了这个问题,我想分享更多信息以节省下一个人的时间。如果您正在运行 Magento 企业版并且有有效的支持协议,则可以使用官方补丁。只需打开支持票并直接请求补丁即可。补丁名称为“PATCH_SUPEE-2662_EE_1.13.1.0_v1”。

于 2015-05-28T22:05:46.123 回答