Перейти к содержимому


Фото
* * * * * 5 голосов

TinyMCE Обновление до 4 версии

TinyMCE

Best Answer Kosjak76 , 29.01.2015 - 21:36

Итак, полностью рабочий вариант:

<script language="javascript" type="text/javascript" src="design/js/tinymce/tinymce.min.js"></script>
<script language="javascript">
tinymce.init({
    selector: "textarea.editor_large,textarea.editor_small",
    language : "ru",
    plugins: [
        "advlist autolink lists link image charmap print preview hr anchor pagebreak",
        "searchreplace wordcount visualblocks visualchars code fullscreen",
        "insertdatetime media nonbreaking save table contextmenu directionality",
        "emoticons template paste textcolor colorpicker textpattern responsivefilemanager"
   ],
   toolbar1: "undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | styleselect",
   toolbar2: "| responsivefilemanager | link unlink anchor | image media | forecolor backcolor  | print preview code ",
   image_advtab: true ,
   
   external_filemanager_path:"/{$config->subfolder}simpla/design/js/filemanager/",
   filemanager_title:"Responsive Filemanager" ,
   external_plugins: { "filemanager" : "../../../../simpla/design/js/filemanager/plugin.min.js"},
		setup : function(ed) {
		if(typeof set_meta == 'function')
		{
			ed.on('keyUp', function() {
    			set_meta();
			});
			ed.on('change', function() {
    			set_meta();
			});
		}
	}
	{literal}}{/literal});
	function myCustomGetContent( id ) {
		if( typeof tinymce != "undefined" ) {
			var editor = tinymce.get( id );
			if( editor && editor instanceof tinymce.Editor ) {
				return editor.getContent{literal}({format : 'text'}{/literal}).substr(0, 512);
			} else {
				return  jQuery('textarea[name='+id+']').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
			}
		}
		return '';
	}
</script>

tinymce_init.tpl

 

В остальных шаблонах меняем

function generate_meta_description()

{

	if(typeof(tinyMCE.get("annotation")) =='object')

	{

		description = tinyMCE.get("annotation").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);

		return description;

	}

	else

		return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);

}

На 

function generate_meta_description()

{
 

	if( typeof tinymce != "undefined" )

	{

		return myCustomGetContent( "annotation" );

	}

	else

		return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
}

Это там где есть краткое описание. Там где нет:

function generate_meta_description()

{

	if( typeof tinymce != "undefined" )

	{

		return myCustomGetContent( "body" );

	}

	else

		return $('textarea[name=body]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);

}

Проверяйте, пробуйте, пишите если что.

Перейти к посту


  • Чтобы отвечать, сперва войдите на форум
96 ответов в теме

#21 Денис

Денис
  • Пользователь
  • 41 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 29.01.2015 - 12:41

Потестировал http://www.responsivefilemanager.com/, отлично работает с последним tinymce (4.1.7)

 

файл tinymce_init.tpl

<script language="javascript" type="text/javascript" src="design/js/tinymce/tinymce.min.js"></script>
<script language="javascript">


tinymce.init({
    selector: "textarea.editor_large,textarea.editor_small",
    language : "ru",
    plugins: [
         "advlist autolink link image lists charmap print preview hr anchor pagebreak",
         "searchreplace wordcount visualblocks visualchars insertdatetime media nonbreaking",
         "table contextmenu directionality emoticons paste textcolor responsivefilemanager"
   ],
   toolbar1: "undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | styleselect",
   toolbar2: "| responsivefilemanager | link unlink anchor | image media | forecolor backcolor  | print preview code ",
   image_advtab: true ,
   
   external_filemanager_path:"/simpla/design/js/filemanager/",
   filemanager_title:"Responsive Filemanager" ,
   external_plugins: { "filemanager" : "/simpla/design/js/filemanager/plugin.min.js"}
 });


</script>
 

заливаем из скаченного архива папку "filemanager" в "/simpla/design/js", ну и папку плагина "responsivefilemanager" в "/simpla/design/js/tinymce/plugins"

 

Далее в файле /simpla/design/js/filemanager/config/config.php прописываем нужные адреса к нашей папке с загрузками

$upload_dir = '/files/uploads/';
$current_path = '../../../../files/uploads/';
$thumbs_base_path = '../../../../files/thumbs/';

 

И не забудьте создать доп. папку для превьюшек "thumbs" в папке "/files/", установив ей права 777


Изменено: Денис, 29.01.2015 - 13:20


#22 acerus

acerus
  • Пользователь
  • 207 сообщений
  • Дизайн, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Калуга

Опубликовано 29.01.2015 - 13:53

Крутец! попробую



#23 Денис

Денис
  • Пользователь
  • 41 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 29.01.2015 - 14:53

Если не нужно автозаполнение keywords и description то можно удалить определенные куски js чтобы вернулось хотя бы автозаполнение урла и заголовка

 

В файле page.tpl и post.tpl удаляем эти строки:

 

function generate_meta_keywords()
{
    name = $('input[name="header"]').val();
    return name;
}

function generate_meta_description()
{
    if(typeof(tinyMCE.get("body")) =='object')
    {
        description = tinyMCE.get("body").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
        return description;
    }
    else
        return $('textarea[name=body]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
}
 
    if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '')
        meta_keywords_touched = false;
 
    if(!meta_keywords_touched)
        $('input[name="meta_keywords"]').val(generate_meta_keywords());
 
    if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '')
        meta_description_touched = false;
 
        descr.val(generate_meta_description());
 

в product.tpl и category.tpl по аналогии: функции и где они вызываются

 

Хотя бы пока так для кого-то будет полезно, а там может кто допилит


Изменено: Денис, 29.01.2015 - 14:54


#24 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 824 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.01.2015 - 14:54

Денис и это ты называешь решение?
Исправить проблему путем удаления функционала?
Жесть...

#25 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 824 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 29.01.2015 - 14:59

http://www.tinymce.c...tion.getContent
http://www.tinymce.c...tion.getContent

#26 Денис

Денис
  • Пользователь
  • 41 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 29.01.2015 - 15:05

лично для меня решение, поиск на сайте от яндекса, в категориях, блоге и страницах писал и пишу их ручками, для товарах вывод по шаблону "наме, купить, цена, ...", я сеошник а не программист, тут мало кто пишет что-то бесплатно, думаю кому-то и мой пост полезен



#27 Kosjak76

Kosjak76
  • Модератор
  • 3 777 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 29.01.2015 - 21:36   Best Answer

Итак, полностью рабочий вариант:

<script language="javascript" type="text/javascript" src="design/js/tinymce/tinymce.min.js"></script>
<script language="javascript">
tinymce.init({
    selector: "textarea.editor_large,textarea.editor_small",
    language : "ru",
    plugins: [
        "advlist autolink lists link image charmap print preview hr anchor pagebreak",
        "searchreplace wordcount visualblocks visualchars code fullscreen",
        "insertdatetime media nonbreaking save table contextmenu directionality",
        "emoticons template paste textcolor colorpicker textpattern responsivefilemanager"
   ],
   toolbar1: "undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | styleselect",
   toolbar2: "| responsivefilemanager | link unlink anchor | image media | forecolor backcolor  | print preview code ",
   image_advtab: true ,
   
   external_filemanager_path:"/{$config->subfolder}simpla/design/js/filemanager/",
   filemanager_title:"Responsive Filemanager" ,
   external_plugins: { "filemanager" : "../../../../simpla/design/js/filemanager/plugin.min.js"},
		setup : function(ed) {
		if(typeof set_meta == 'function')
		{
			ed.on('keyUp', function() {
    			set_meta();
			});
			ed.on('change', function() {
    			set_meta();
			});
		}
	}
	{literal}}{/literal});
	function myCustomGetContent( id ) {
		if( typeof tinymce != "undefined" ) {
			var editor = tinymce.get( id );
			if( editor && editor instanceof tinymce.Editor ) {
				return editor.getContent{literal}({format : 'text'}{/literal}).substr(0, 512);
			} else {
				return  jQuery('textarea[name='+id+']').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
			}
		}
		return '';
	}
</script>

tinymce_init.tpl

 

В остальных шаблонах меняем

function generate_meta_description()

{

	if(typeof(tinyMCE.get("annotation")) =='object')

	{

		description = tinyMCE.get("annotation").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);

		return description;

	}

	else

		return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);

}

На 

function generate_meta_description()

{
 

	if( typeof tinymce != "undefined" )

	{

		return myCustomGetContent( "annotation" );

	}

	else

		return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
}

Это там где есть краткое описание. Там где нет:

function generate_meta_description()

{

	if( typeof tinymce != "undefined" )

	{

		return myCustomGetContent( "body" );

	}

	else

		return $('textarea[name=body]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);

}

Проверяйте, пробуйте, пишите если что.



#28 Kosjak76

Kosjak76
  • Модератор
  • 3 777 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 29.01.2015 - 21:45

Далее в файле /simpla/design/js/filemanager/config/config.php прописываем нужные адреса к нашей папке с загрузками

require_once('../../../../api/Simpla.php');
$simpla = new Simpla();
$base_url =
	// Get HTTP/HTTPS
	((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && !in_array(strtolower($_SERVER['HTTPS']),array('off','no'))) ? 'https' : 'http').
	'://'.
	// Get domain portion
	$_SERVER['HTTP_HOST']; // DON'T TOUCH (base url (only domain) of site (without final /)).
$upload_dir = '/'.$simpla->config->subfolder.'files/uploads/';
$current_path = '../../../../files/uploads/';
$thumbs_base_path = '../../../../files/thumbs/';

Вот с такими настройками у меня работает нормально на локалке. На хосте не пробовал.



#29 acerus

acerus
  • Пользователь
  • 207 сообщений
  • Дизайн, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Калуга

Опубликовано 30.01.2015 - 18:46

А в остальных шаблонах - это в каких, можно уточнить? Автозаполнения у меня вот тоже пропало ((

 

Кстати косяк с последним кодом, который "Итак, полностью рабочий вариант:" - если его вставить перестает работать загрузчик почему-то http://take.ms/OXAQZ



#30 Kosjak76

Kosjak76
  • Модератор
  • 3 777 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 30.01.2015 - 18:48

Пробуйте вариант выше, на локалке работает с таким, на сервере надо проверять.



#31 acerus

acerus
  • Пользователь
  • 207 сообщений
  • Дизайн, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Калуга

Опубликовано 30.01.2015 - 18:52

Работает с кодом Дениса (правда не идеально - новые только что загруженные фотки не отображаются как миниаютюры), а с вашим вот как на скрине http://take.ms/OXAQZ



#32 acerus

acerus
  • Пользователь
  • 207 сообщений
  • Дизайн, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Калуга

Опубликовано 30.01.2015 - 19:02

А как все-таки правильно вернуть автозаполнение заголовков и прочего?



#33 Kosjak76

Kosjak76
  • Модератор
  • 3 777 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 30.01.2015 - 19:07

У меня все работает, в шаблонах функции меняли?



#34 acerus

acerus
  • Пользователь
  • 207 сообщений
  • Дизайн, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Калуга

Опубликовано 30.01.2015 - 22:36

Вот с этим может слабо у меня, а в каких именно шаблонах нужно поменять?

 

кстати камень в огород разрабам tinymce - в 4 версии зачем-то убрали разграничение по отступам у картинок, теперь можно задать только слева/справа или сверху/снизу. ((( Раньше было лучше - индивидуальная настройка



#35 Rash

Rash
  • Пользователь
  • 450 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Russian Federation

Опубликовано 08.02.2015 - 22:59

У меня все работает, в шаблонах функции меняли?

 

Спасибо все работает!  :) Правда пришлось убрать из tinymce_init.tpl:

external_filemanager_path:"/{$config->subfolder}simpla/design/js/filemanager/",

{$config->subfolder}

Тоже самое из файла:

 /simpla/design/js/filemanager/config/config.php

Иначе было как у Acerus: "Не удается преобразовать dns-адрес сервера"

 

P.S Автозаполнение работает.


Изменено: Rash, 08.02.2015 - 23:01


#36 Алексей Склейнов

Алексей Склейнов
  • Пользователь
  • 150 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Минск

Опубликовано 12.02.2015 - 22:24

Пробуйте вариант выше, на локалке работает с таким, на сервере надо проверять.

 

<script language="javascript" type="text/javascript" src="design/js/tinymce/tinymce.min.js"></script>
{literal}
<script language="javascript">
tinymce.init({
    selector: "textarea.editor_large,textarea.editor_small",
    language : "ru",
    plugins: [
        "advlist autolink lists link image charmap print preview hr anchor pagebreak",
        "searchreplace wordcount visualblocks visualchars code fullscreen",
        "insertdatetime media nonbreaking save table contextmenu directionality",
        "emoticons template paste textcolor colorpicker textpattern responsivefilemanager"
   ],
   toolbar1: "undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | styleselect",
   toolbar2: "| responsivefilemanager | link unlink anchor | image media | forecolor backcolor  | print preview code ",
   image_advtab: true ,
   
   external_filemanager_path:"/simpla/design/js/filemanager/",
   filemanager_title:"Файловый менеждер" ,
   external_plugins: { "filemanager" : "/simpla/design/js/filemanager/plugin.min.js"},
        setup : function(ed) {
        if(typeof set_meta == 'function')
        {
            ed.on('keyUp', function() {
                set_meta();
            });
            ed.on('change', function() {
                set_meta();
            });
        }
    }
    {literal}}{/literal});
    function myCustomGetContent( id ) {
        if( typeof tinymce != "undefined" ) {
            var editor = tinymce.get( id );
            if( editor && editor instanceof tinymce.Editor ) {
                return editor.getContent{literal}({format : 'text'}{/literal}).substr(0, 512);
            } else {
                return  jQuery('textarea[name='+id+']').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);
            }
        }
        return '';
    }
</script>
{/literal}
 

вот в таком виде на сервере пашет... 



#37 Алексей Склейнов

Алексей Склейнов
  • Пользователь
  • 150 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Минск

Опубликовано 13.02.2015 - 00:33

но что то в брендах нет автозаполнения... и ошибки нет...

 

<textarea name="description" class="editor_large">{$brand->description|escape}</textarea>

 

description прописал, где то не привязывается к

 

<textarea name="meta_description" class="simpla_inp" />{$brand->meta_description|escape}</textarea>



#38 Blashemy

Blashemy
  • Пользователь
  • 75 сообщений

Опубликовано 10.04.2015 - 15:56

Друзья, работает этот вариант? Ничего другого не слетает? Подстановка описания и т.д., т.к. в последних постах непонятные сообщения пугают про не работающую автоподстановку описание и т.д. 



#39 Rash

Rash
  • Пользователь
  • 450 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Russian Federation

Опубликовано 10.04.2015 - 16:13

Друзья, работает этот вариант? Ничего другого не слетает? Подстановка описания и т.д., т.к. в последних постах непонятные сообщения пугают про не работающую автоподстановку описание и т.д. 

 

Ставил как описывал Kosjak76, автозаполнение работает причем везде, а именно в брендах, в статьях, при создании новой страницы или товара.



#40 larenso

larenso
  • Пользователь
  • 61 сообщений
  • Дизайн, Программирование, Верстка, SEO
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 27.04.2015 - 17:41

Там где нет описание -пишем

function generate_meta_description()

{

	if( typeof tinymce != "undefined" )

	{

		return myCustomGetContent( "description" );

	}

	else

		return $('textarea[name=description]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\&nbsp;)/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512);

}


Изменено: larenso, 27.04.2015 - 17:44






Также с меткой «TinyMCE»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых