Ставимо нормальний редактор CKEditor - Full на opencart 2.3
За базу взяв модуль https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=29817&filter_search=CKEditor%20&filter_license=0&filter_download_id=47
=admin/controller/common/filemanager.php
1.
<operation> <search position="after" offset="1"><![CDATA[ $url .= '&thumb=' . $this->request->get['thumb']; ]]></search> <add><![CDATA[ if (isset($this->request->get['ckedialog']) ) { $url .= '&ckedialog=' . $this->request->get['ckedialog']; } ]]></add> </operation>
2.
<operation>
<search position="after" offset="3"><![CDATA[
$data['thumb'] = $this->request->get['thumb'];
]]></search>
<add><![CDATA[
if (isset($this->request->get['ckedialog'])) {
$data['ckedialog'] = $this->request->get['ckedialog'];
} else {
$data['ckedialog'] = '';
}
]]></add>
</operation>
=admin/view/template/common/filemanager.tpl
<operation error="log">
<search position="before" index="1"><![CDATA[<?php if ($target) { ?>]]></search>
<add><![CDATA[
<?php if ($ckedialog) { ?>
$('a.thumbnail').on('click', function(e) {
e.preventDefault();
dialog = CKEDITOR.dialog.getCurrent();
var targetElement = '<?php echo $ckedialog; ?>' || null;
var target = targetElement.split( ':' );
dialog.setValueOf( target[ 0 ], target[ 1 ], this.getAttribute('href') );
$('#modal-image').modal('hide');
});
<?php } ?>
]]></add>
</operation>
=admin\view\stylesheet\stylesheet.css
.cke_eval{z-index: 99999 !important}
a.cke_button {cursor: pointer!important;}
.cke_button__image {
background-color: #B0D591!important;
}
.cke_top {background: #EDEDED linear-gradient(to bottom, #ffffff, #EDEDED) repeat scroll 0 0!important;border-bottom: 1px solid #b6b6b6;box-shadow: 0 1px 0 #fff inset; padding: 6px 8px 2px;white-space: normal;}
.cke_bottom {background: #EDEDED linear-gradient(to bottom, #ffffff, #EDEDED) repeat scroll 0 0!important;border-top: 1px solid #bfbfbf;box-shadow: 0 1px 0 #fff inset;padding: 6px 8px 2px;position: relative;}
Product
1. \admin\controller\catalog\product.php
$data['header'] = $this->load->controller('common/header');
before
$this->document->addScript('view/javascript/ckeditor/ckeditor_enhanced.js');
2. admin\view\template\catalog\product_form.tpl
<script type="text/javascript" src="view/javascript/summernote/summernote.js"></script>
<link href="view/javascript/summernote/summernote.css" rel="stylesheet" />
<script type="text/javascript" src="view/javascript/summernote/opencart.js"></script>
Replace
<!-- Enhanced CKEditor -->
<script type="text/javascript">
<?php foreach ($languages as $language) { ?>
CKEDITOR.replace("input-description<?php echo $language['language_id']; ?>", {
language: "<?php echo $language['code']; ?>",
filebrowserBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserImageBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserFlashBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
skin : "moono-lisa",
codemirror: {
theme: "eclipse",
},
height: 450
});
<?php } ?>
</script>
<script type="text/javascript"><!--
CKEDITOR.on('dialogDefinition', function (event) {
var editor = event.editor;
var dialogDefinition = event.data.definition;
var dialogName = event.data.name;
var tabCount = dialogDefinition.contents.length;
for (var i = 0; i < tabCount; i++) {
var browseButton = dialogDefinition.contents[i].get('browse');
if (browseButton !== null) {
browseButton.hidden = false;
browseButton.onClick = function() {
$('#modal-image').remove();
$.ajax({
url: 'index.php?route=common/filemanager&token=<?php echo $token; ?>&ckedialog='+this.filebrowser.target,
dataType: 'html',
cache: false,
contentType: false,
processData: true,
success: function(html) {
$('body').append('<div id="modal-image" class="modal cke_eval">' + html + '</div>');
$('#modal-image').modal('show');
},
error: function(xhr, ajaxOptions, thrownError){
alert(xhr.responseText);
}
});
}
}
}
});
//--></script>
Сategory
1. \admin\controller\catalog\category.php
find=$data['header'] =
before
#### ckeditor
$this->document->addScript('view/javascript/ckeditor/ckeditor_enhanced.js');
#### ckeditor
2. admin\view\template\catalog\category_form.tpl
<script type="text/javascript" src="view/javascript/summernote/summernote.js"></script>
<link href="view/javascript/summernote/summernote.css" rel="stylesheet" />
<script type="text/javascript" src="view/javascript/summernote/opencart.js"></script>
REPLACE
<!-- CKEditor -->
<script type="text/javascript">
<?php foreach ($languages as $language) { ?>
CKEDITOR.replace("input-description<?php echo $language['language_id']; ?>", {
//language: "<?php echo $language['url']; ?>",
filebrowserBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserImageBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserFlashBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
skin : "moono-lisa",
codemirror: {
theme: "eclipse",
},
height: 250
});
<?php } ?>
</script>
<script type="text/javascript"><!--
CKEDITOR.on('dialogDefinition', function (event) {
var editor = event.editor;
var dialogDefinition = event.data.definition;
var dialogName = event.data.name;
var tabCount = dialogDefinition.contents.length;
for (var i = 0; i < tabCount; i++) {
var browseButton = dialogDefinition.contents[i].get('browse');
if (browseButton !== null) {
browseButton.hidden = false;
browseButton.onClick = function() {
$('#modal-image').remove();
$.ajax({
url: 'index.php?route=common/filemanager&token=<?php echo $token; ?>&ckedialog='+this.filebrowser.target,
dataType: 'html',
cache: false,
contentType: false,
processData: true,
success: function(html) {
$('body').append('<div id="modal-image" class="modal cke_eval">' + html + '</div>');
$('#modal-image').modal('show');
},
error: function(xhr, ajaxOptions, thrownError){
alert(xhr.responseText);
}
});
}
}
}
});
//--></script>
<!-- CKEditor -->
Information
1. \admin\controller\catalog\information.php
find=$data['header'] =
before
#### ckeditor
$this->document->addScript('view/javascript/ckeditor/ckeditor_enhanced.js');
#### ckeditor
2. admin\view\template\catalog\information_form.tpl
<script type="text/javascript" src="view/javascript/summernote/summernote.js"></script>
<link href="view/javascript/summernote/summernote.css" rel="stylesheet" />
<script type="text/javascript" src="view/javascript/summernote/opencart.js"></script>
REPLACE
<!-- CKEditor -->
<script type="text/javascript">
<?php foreach ($languages as $language) { ?>
CKEDITOR.replace("input-description<?php echo $language['language_id']; ?>", {
//language: "<?php echo $language['url']; ?>",
filebrowserBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserImageBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
filebrowserFlashBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
skin : "moono-lisa",
codemirror: {
theme: "eclipse",
},
height: 250
});
<?php } ?>
</script>
<script type="text/javascript"><!--
CKEDITOR.on('dialogDefinition', function (event) {
var editor = event.editor;
var dialogDefinition = event.data.definition;
var dialogName = event.data.name;
var tabCount = dialogDefinition.contents.length;
for (var i = 0; i < tabCount; i++) {
var browseButton = dialogDefinition.contents[i].get('browse');
if (browseButton !== null) {
browseButton.hidden = false;
browseButton.onClick = function() {
$('#modal-image').remove();
$.ajax({
url: 'index.php?route=common/filemanager&token=<?php echo $token; ?>&ckedialog='+this.filebrowser.target,
dataType: 'html',
cache: false,
contentType: false,
processData: true,
success: function(html) {
$('body').append('<div id="modal-image" class="modal cke_eval">' + html + '</div>');
$('#modal-image').modal('show');
},
error: function(xhr, ajaxOptions, thrownError){
alert(xhr.responseText);
}
});
}
}
}
});
//--></script>
<!-- CKEditor -->
Аналогічно для інших сутностей
- catalog/manufacturer
- blog/article
- blog/category
- extension/module/html
- setting/setting