PrestaShop,直接从 Smarty 模板使用 tinymce
PrestaShop, use tinymce directly from Smarty template
我正在制作 PrestaShop 模块。该模块将锚定到名为 "hookDisplayAdminProductsExtra".
的挂钩上
我需要使用库中的 TEXTAREA 字段 tinymce,您可以通过直接从 Smarty 而不是作为控制器创建文本区域来实现吗?也许使用 jQuery 函数或在字段中添加 class?
我在 tpl 文件中的代码是:
{foreach $row_list as $row}
<textarea id="description_1" name="description_1" class="autoload_rte" aria-hidden="true">
{$row['desc']}
</textarea>
{/foreach}
我的模块功能是:
$this->context->smarty->assign(
array(
'row_list' => $this->getField($id)
)
);
return $this->display(__FILE__, 'admin-view.tpl');
当 Prestashop 使用以下方式加载选项卡信息时,autoload_rte 为 "used":
$(document).ready(function(){
// Execute when tab Informations has finished loading
tabs_manager.onLoad('Informations', function(){
tinySetup({
editor_selector :"autoload_rte",
setup : function(ed) {
ed.on('init', function(ed)
{
if (typeof ProductMultishop.load_tinymce[ed.target.id] != 'undefined')
{
if (typeof ProductMultishop.load_tinymce[ed.target.id])
tinyMCE.get(ed.target.id).hide();
else
tinyMCE.get(ed.target.id).show();
}
});
ed.on('keydown', function(ed, e) {
tinyMCE.triggerSave();
textarea = $('#'+tinymce.activeEditor.id);
var max = textarea.parent('div').find('span.counter').data('max');
if (max != 'none')
{
count = tinyMCE.activeEditor.getBody().textContent.length;
rest = max - count;
if (rest < 0)
textarea.parent('div').find('span.counter').html('<span style="color:red;">Maximum '+ max +' characters : '+rest+'</span>');
else
textarea.parent('div').find('span.counter').html(' ');
}
});
}
});
});
});
除此之外,其他选项卡的加载时间也晚于“信息”选项卡。要解决这个问题,您需要为您想要的字段初始化 tinymce。选择另一个选择器(不确定是否需要但至少 100% 没有机会弄乱当前的选择器),例如 class mytextarea,然后使用:
<script>$(document).ready(function(){tinymce.init({mode : "textareas", editor_selector : "mytextarea", plugins: "textcolor paste code"});})</script>
这可以在您的 tpl 中。
在我的测试中,如果没有插件设置,控制台日志中就会出现错误。但是您可以根据需要调整tinymce设置。
我正在制作 PrestaShop 模块。该模块将锚定到名为 "hookDisplayAdminProductsExtra".
的挂钩上我需要使用库中的 TEXTAREA 字段 tinymce,您可以通过直接从 Smarty 而不是作为控制器创建文本区域来实现吗?也许使用 jQuery 函数或在字段中添加 class?
我在 tpl 文件中的代码是:
{foreach $row_list as $row}
<textarea id="description_1" name="description_1" class="autoload_rte" aria-hidden="true">
{$row['desc']}
</textarea>
{/foreach}
我的模块功能是:
$this->context->smarty->assign(
array(
'row_list' => $this->getField($id)
)
);
return $this->display(__FILE__, 'admin-view.tpl');
当 Prestashop 使用以下方式加载选项卡信息时,autoload_rte 为 "used":
$(document).ready(function(){
// Execute when tab Informations has finished loading
tabs_manager.onLoad('Informations', function(){
tinySetup({
editor_selector :"autoload_rte",
setup : function(ed) {
ed.on('init', function(ed)
{
if (typeof ProductMultishop.load_tinymce[ed.target.id] != 'undefined')
{
if (typeof ProductMultishop.load_tinymce[ed.target.id])
tinyMCE.get(ed.target.id).hide();
else
tinyMCE.get(ed.target.id).show();
}
});
ed.on('keydown', function(ed, e) {
tinyMCE.triggerSave();
textarea = $('#'+tinymce.activeEditor.id);
var max = textarea.parent('div').find('span.counter').data('max');
if (max != 'none')
{
count = tinyMCE.activeEditor.getBody().textContent.length;
rest = max - count;
if (rest < 0)
textarea.parent('div').find('span.counter').html('<span style="color:red;">Maximum '+ max +' characters : '+rest+'</span>');
else
textarea.parent('div').find('span.counter').html(' ');
}
});
}
});
});
});
除此之外,其他选项卡的加载时间也晚于“信息”选项卡。要解决这个问题,您需要为您想要的字段初始化 tinymce。选择另一个选择器(不确定是否需要但至少 100% 没有机会弄乱当前的选择器),例如 class mytextarea,然后使用:
<script>$(document).ready(function(){tinymce.init({mode : "textareas", editor_selector : "mytextarea", plugins: "textcolor paste code"});})</script>
这可以在您的 tpl 中。 在我的测试中,如果没有插件设置,控制台日志中就会出现错误。但是您可以根据需要调整tinymce设置。