Prestashop所有可翻译字段显示无产品页面

时间:2014-11-07 15:52:59

标签: field admin product prestashop-1.6

Prestashop(1.6.0.6)中的新功能,我的管理员产品页面出现问题。所有可翻译字段都显示:none(我用chrome检查代码)。

因此,当我想要创建新产品时,我不能,因为名称字段是必需的。

我认为找到.js很简单,但不是。

如果有人可以帮助我,我会很高兴。

感谢您的帮助


您好,

我做了一些搜索,看到函数hideOtherLanguage(id)隐藏并显示translatable-field元素。

function hideOtherLanguage(id)
{
    console.log(id_language);
    $('.translatable-field').hide();
    $('.lang-' + id).show();    
    var id_old_language = id_language;
    id_language = id;

    if (id_old_language != id)
        changeEmployeeLanguage();

    updateCurrentText();
}

当我将Id设置为1(默认语言)时,它可以正常工作。似乎当我加载页面时,函数被调用两次而最后一次调用,id值是未定义的。所以show()函数不起作用。

如果有人可以帮助我。谢谢。


在我的控制台中,我只看到一个错误

undefined不是一个函数。 在index.php / Line 1002下 ... $( “#product_form”)。验证({ ...

但我找到了form.tpl模板,并在评论中设置了这一行,但没有任何改变。

1 个答案:

答案 0 :(得分:0)

编辑:根据对此链接http://forge.prestashop.com/browse/PSCFV-2928的评论,这可能是由于安装文件损坏引起的 - 所以在干净安装时 - 尝试重新下载并重新安装。 ..

...否则:

我遇到了类似的问题 - 在模块管理页面中,使用PrestaShop HelperForm创建配置表单时。我将提供最可能的案例及其可能的解决方案。

HelperForm的解决方案在PS 1.6.0.14上进行了测试

一般情况下会发生 2例

首先,您必须检查您收到的HTML。
=>在开发者工具/ firebug / etc中显示源代码 - NOT ...!
=>我的意思是纯收到的(JavaScript un 触及)html。

检查您的可翻译字段是否已具有内联样式" display: none":

<小时/>

案例1 - 已经的字段具有内联样式,用于&#34; display: none&#34;

这意味着模板/ html已经以这种方式准备 - 很可能在某些TPL文件中我看到类似的代码:

<div class="translatable-field lang-{$language.id_lang}" 
{if $language.id_lang != $id_lang_default}style="display:none"{/if}>

或特别是 HelperForm 模板:

<div class="translatable-field lang-{$language.id_lang}" 
{if $language.id_lang != $defaultFormLanguage}style="display:none"{/if}>

案例1是最容易解决的,你只需找到,在哪里设置这种默认语言。

解决方案

HelperForm

查看您(或其他人)准备HelperForm对象的位置 - 例如:

$formHelper = new HelperForm();
...

某处会有类似$formHelper->default_form_language = ...;的内容 我的错误第一个解决方案是从上下文中获取默认表单语言 - 可能未设置:
<德尔> $this->context->controller->default_form_language; //THIS IS WRONG!

正确的方法是从配置中获取默认语言 - 例如:

$default_lang = new Language((int)Configuration::get('PS_LANG_DEFAULT'));
$formHelper->default_form_language = $default_lang->id;

......这特别解决了我的问题...

其他形式创作

如果HelperForm还有其他东西用于表单创建,问题仍然非常相似。

您必须找到文件中的位置(可能是tpls),以便为您的案例打印display:none - 然后找到检查变量集的位置并自己正确设置。

<小时/>

案例2 - 字段具有&#34; display: none&#34;

的内联样式

这意味着在通过JavaScript 加载HTML 后完成。有两种选择:

  1. 需要hideOtherLanguage(),但输入语言设置错误 - 这意味着不会显示任何语言并且全部隐藏。
    解决方案通常可以解决案例1 (见上文)。
    另外,在没有设置使用过的语言id变量时可能会出现编程错误...那么你必须自己设置它(用JavaScript分配)。
  2. 某些脚本会在.translatable-field上调用某种.hide() - 您必须以艰难的方式搜索它并删除/注释掉它。

    PS:当然你可以将语言设置为你想要的任何东西,将它设置为默认语言是很常见的,因为它是最容易和最清晰的设置方式。