system.xml中的Magento上传图像未显示正确的路径

时间:2014-12-31 07:28:25

标签: magento

我在admin上创建了图片字段。我遇到了upload_dir的问题,而base_url与我设置的不一样,这里是我的代码:

<bankicon translate="label comment">
    <label>Bank Icon</label>
    <comment>Allowed file types: jpeg, gif, png.</comment>
    <frontend_type>Image</frontend_type>
    <backend_model>adminhtml/system_config_backend_image</backend_model>
    <upload_dir config="system/filesystem/media" scope_info="1">theme</upload_dir>
    <base_url type="media" scope_info="1">theme</base_url>                         
    <sort_order>5</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>0</show_in_store>
</bankicon>

当我上传时 图像保存在:media / theme / default 但预览图像坏了我检查图像链接是:media / default ==&gt;缺少主题路径。

我试过了 主题/默认

仍然无法正常工作。

我该如何解决这个问题?我想修复预览图像以获取媒体/主题/默认

请帮助。

3 个答案:

答案 0 :(得分:1)

在system.xml中添加以下内容

           <bankicon translate="label">
                <label>Bank Icon</label>
                <frontend_type>image</frontend_type>
                <backend_model>mymodule/system_config_backend_image_bankicon</backend_model>
                <base_url type="media" scope_info="1">theme/default</base_url>
                <sort_order>1</sort_order>
                <show_in_default>1</show_in_default>
                <show_in_website>1</show_in_website>
                <show_in_store>1</show_in_store>
                <comment>Allowed file types: ICO, PNG, GIF, JPEG, APNG, SVG. Not all browsers support all these formats!</comment>
            </bankicon>

如果您看到上面的后端模型,我为该名称Bankicon创建了一个新类

 class ABC_Mymodule_Model_System_Config_Backend_Image_Bankicon extends Mage_Adminhtml_Model_System_Config_Backend_Image
 {
/**
 * The tail part of directory path for uploading
 *
 */
const UPLOAD_DIR = 'theme/default';

/**
 * Token for the root part of directory path for uploading
 *
 */
const UPLOAD_ROOT = 'media';

/**
 * Return path to directory for upload file
 *
 * @return string
 * @throw Mage_Core_Exception
 */
protected function _getUploadDir()
{
    $uploadDir = $this->_appendScopeInfo(self::UPLOAD_DIR);
    $uploadRoot = $this->_getUploadRoot(self::UPLOAD_ROOT);
    $uploadDir = $uploadRoot . '/' . $uploadDir;
    return $uploadDir;
}

/**
 * Makes a decision about whether to add info about the scope.
 *
 * @return boolean
 */
protected function _addWhetherScopeInfo()
{
    return true;
}

/**
 * Getter for allowed extensions of uploaded files.
 *
 * @return array
 */
protected function _getAllowedExtensions()
{
    return array('ico', 'png', 'gif', 'jpeg', 'apng', 'svg');
}

/**
 * Get real media dir path
 *
 * @param  $token
 * @return string
 */
protected function _getUploadRoot($token) {
    return Mage::getBaseDir($token);
}

}

答案 1 :(得分:0)

嗯,我不太确定,但你可以考虑一下......

<upload_dir config="system/filesystem/media" scope_info="1">default/theme</upload_dir>
<base_url type="media" scope_info="1">default/theme</base_url>

答案 2 :(得分:0)

只需执行以下操作

<largeimage1 translate="label comment">
 <label>Large Image 1</label>
 <comment>Allowed file types: jpeg, gif, png.</comment>
 <frontend_type>image</frontend_type>
 <backend_model>adminhtml/system_config_backend_image</backend_model>
 <upload_dir config="system/filesystem/media" scope_info="1">theme</upload_dir>
 <base_url type="media" scope_info="1">theme</base_url>
 <sort_order>37</sort_order>
 <show_in_default>1</show_in_default>
 <show_in_website>1</show_in_website>
 <show_in_store>1</show_in_store>
</largeimage1>

将创建字段并输入core_config_table。  要显示你可以使用的somw:

echo Mage::getBaseUrl('media') . Mage::getStoreConfig('system_config_name/group/largeimage1');

完成。