在自定义模块中通过Wysiwyg编辑器上传的图像前端上的断开链接!

时间:2011-07-06 10:30:10

标签: php magento magento-1.4

M得到这个:

<img alt="" }}="" es_3.jpg="" wysiwyg="" src="{{media url=">

在我的表格中,我添加了此代码

$wysiwygConfig = Mage::getSingleton('cms/wysiwyg_config')->getConfig(

     array('tab_id' => 'form_section')

);

$wysiwygConfig["files_browser_window_url"] = Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/cms_wysiwyg_images/index');

$wysiwygConfig["directives_url"] = Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/cms_wysiwyg/directive');

$wysiwygConfig["directives_url_quoted"] = Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/cms_wysiwyg/directive');

$wysiwygConfig["widget_window_url"] = Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/widget/index');

$wysiwygConfig["files_browser_window_width"] = (int) Mage::getConfig()->getNode('adminhtml/cms/browser/window_width');

$wysiwygConfig["files_browser_window_height"] = (int) Mage::getConfig()->getNode('adminhtml/cms/browser/window_height');

$plugins = $wysiwygConfig->getData("plugins");

$plugins[0]["options"]["url"] = Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/system_variable/wysiwygPlugin');

$plugins[0]["options"]["onclick"]["subject"] = "MagentovariablePlugin.loadChooser('".Mage::getSingleton('adminhtml/url')->getUrl('adminhtml/system_variable/wysiwygPlugin')."', '{{html_id}}');";

$plugins = $wysiwygConfig->setData("plugins",$plugins);



  $fieldset->addField('longdescription', 'editor', array(

      'name'      => 'longdescription',

      'label'     => Mage::helper('press')->__('Description'),

      'title'     => Mage::helper('press')->__('Description'),

      'style'     => 'width:500px; height:300px;',

      'config'    => $wysiwygConfig,



    ));

我仍然不清楚上面的代码,但我从某处复制了它,但我知道它可以浏览图像文件而不是编写自定义网址。

之后我就像这样在前端打电话:

<?php echo $item["longdescription"]; ?>

我正在收到文字,但不是图片和图片我得到的是顶部提到的断开的链接。

我错过了什么吗?如果是,那么什么?

3 个答案:

答案 0 :(得分:2)

添加以下代码:

<?php $_cmsHelper = Mage::helper('cms');?>

<?php $_process = $_cmsHelper->getBlockTemplateProcessor();?>

<?php echo $_process->filter($item["longdescription"]); ?>

答案 1 :(得分:0)

看起来你可能会在某个地方打破引号,你是如何传递图像的图像/网址的?如果你看在这里:alt =“”}} =“”es_3.jpg =“”你可以看到你在某个地方的关闭括号中传递,并且正在完全跳过SRC。尝试VAR_EXPORTing $ item并告诉我你有什么。

答案 2 :(得分:0)

我今天遇到了同样的问题。事实证明Mage_Adminhtml_Cms_WysiwygController::directiveAction()尝试根据网址创建图片。此函数调用Varien_Image_Adapter_Gd2::open(),然后尝试打开该文件。 这是出错的地方:

图像适配器尝试获取有关图像的信息,如图像大小和mime类型。但是......当您的站点位于本地主机或流浪者盒或类似的东西时,服务器会尝试getimagesize('http://www.domain.com/image.jpg')而不是getimagesize('/Users/john/sites/domain.com/image.jpg')(例如)。

对此的修复是覆盖您自己模块中的directiveAction()以在抛出异常之前添加另一个catch:

public function directiveAction()
{
    $directive = $this->getRequest()->getParam('___directive');
    $directive = Mage::helper('core')->urlDecode($directive);
    $url = Mage::getModel('core/email_template_filter')->filter($directive);
    try {
        $image = Varien_Image_Adapter::factory('GD2');
        $image->open($url);
        $image->display();
    } catch (Exception $e) {
        // Try to get an absolute path:
        $path = Mage::getBaseDir().'/'.preg_replace('/http:\/\/(.*)\//Ui', '', $url);
        $image = Varien_Image_Adapter::factory('GD2');
        $image->open($path);
        $image->display();
    } catch (Exception $e) {
        $image = Varien_Image_Adapter::factory('GD2');
        $image->open(Mage::getSingleton('cms/wysiwyg_config')->getSkinImagePlaceholderUrl());
        $image->display();
    }
}

一个不错的小奖励:管理员中断开的链接现在也消失了! ; - )