Jump to content

Отображение цитат

Featured Replies

Posted
comment_118416

Привет!

На меня "напали" толпы  пользователей, которые захотели уплотнить шрифт в ленте сообщений.  

Понятно, что, прежде всего, в настройках редактора клац по Enter был определен как "новая строка" (а не абзац).

Далее умные люди посоветовали решение через добавление в custom.css конструкции .ipsComment_content .ipsType_richText{ line-height: 1.1; }

Эффект был достигнут.  Текст заметно уплотнился по вертикали. Вместо 2-3 сообщений на одном экране, теперь без промотки можно читать 4-5. 

К сожалению, выявился дефект :  при использовании цитат последующий набираемый текст становится вплотную к прямоугольнику цитаты.

Делать клац по Enter каждый раз после и перед цитатой неудобно. 

Вопрос , как имитировать новый абзац? Или как можно  цитату обрамить своеобразным  padding-ом снизу и сверху?  Как это реализовать в коде? 

Заранее благодарю.

 

27.jpg

28.jpg

comment_118418
33 минуты назад, sapr2017 сказал:

Или как можно  цитату обрамить своеобразным  padding-ом снизу и сверху?  Как это реализовать в коде?

в custom.css добавить код:

.ipsQuote {
    margin-bottom: 10px;
    margin-top: 10px;
}

 

  • 4 years later...
comment_173525

Тоже мучился с этим, некоторые пользователи злоупотребляли энтером)) спасибо за подсказку про custom 🙂

comment_173527
1 час назад, deeverbs сказал:

злоупотребляли энтером

по стандарту на энтер включён абзац, если включить просто перенос строки, то вполне достаточно этого и больше ничего делать не приходится. 

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

comment_173546
8 часов назад, by_ix сказал:

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

Я сделал перенос строки и текст слипся в местах где цитаты, картинки и видео.. Я добавил в custom.css и добился нужно результата, но с видео так не прокатило..

.ipsQuote {
    margin-bottom: 10px;
    margin-top: 10px;
}

.ipsImage {
    margin-bottom: 10px;
    margin-top: 10px;
}

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

adfadfv.png

sdsdcs.png

comment_173565
3 часа назад, deeverbs сказал:

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

.ipsEmbeddedVideo {
    margin: 10px 0 10px 0;
}

 

comment_173571

@ZIKURIK работает! Спасибо огромное! 🙂

Пользуясь случаем, хочу ещё спросить, когда в редактор вставляется ссылка на видео, например с YouTube, автоматом добавляется &nbsp, из-за этого пост выглядит немного не эстетично.

Можно как-то побороть это? 

IMG_20211017_174006.jpg

Edited by deeverbs

comment_173573

или можно так, вставь это в includeJS

<script type='text/javascript'>
$('#ipsLayout_contentArea').find('.ipsEmbeddedVideo').each( function () {
	if( $(this).next("p:contains('')").next().length == 0 ){
		$(this).next("p:contains('')").remove();
	}
});
</script>

удаляет nbsp если дальше нет тегов

comment_173574
15 минут назад, ZIKURIK сказал:

его удалить можно при добавлении

Я знаю, но пользователи этого не будут делать) им все равно, что там вставляется) 

1 минуту назад, ZIKURIK сказал:

или можно так, вставь это в includeJS

Это в какой папке этот скрипт? 

comment_173577
56 минут назад, ZIKURIK сказал:

в шаблонах вбей просто, он найдет

блин, там куча условий 🙂 (в самом файле в смысле) где он должен быть?))

{{if !\IPS\Request::i()->isAjax()}}
	{{$maxImageDims = \IPS\Settings::i()->attachment_image_size ? explode( 'x', \IPS\Settings::i()->attachment_image_size ) : array( 1000, 750 );}}
	<script type='text/javascript'>
		var ipsDebug = {{if ( \IPS\IN_DEV and \IPS\DEV_DEBUG_JS ) or \IPS\DEBUG_JS}}true{{else}}false{{endif}};		
	{{if \IPS\IN_DEV}}
		var CKEDITOR_BASEPATH = '{url="applications/core/dev/ckeditor" base="none" protocol="\IPS\Http\Url::PROTOCOL_RELATIVE"}/';
	{{else}}
		var CKEDITOR_BASEPATH = '{url="applications/core/interface/ckeditor/ckeditor" base="none" protocol="\IPS\Http\Url::PROTOCOL_RELATIVE"}/';
	{{endif}}
		var ipsSettings = {
			{{if \IPS\Dispatcher::hasInstance() and \IPS\Dispatcher::i()->controllerLocation == 'admin'}}
			isAcp: true,
			{{endif}}
			{{if \IPS\COOKIE_DOMAIN !== NULL}}
			cookie_domain: "{expression="\IPS\COOKIE_DOMAIN"}",
			{{endif}}
			cookie_path: "{expression="\IPS\Request::getCookiePath()"}",
			{{if \IPS\COOKIE_PREFIX !== NULL}}
			cookie_prefix: "{expression="\IPS\COOKIE_PREFIX"}",
			{{endif}}
			{{if mb_substr( \IPS\Settings::i()->base_url, 0, 5 ) == 'https' AND \IPS\COOKIE_BYPASS_SSLONLY !== TRUE}}
			cookie_ssl: true,
			{{else}}
			cookie_ssl: false,
			{{endif}}
			upload_imgURL: "{resource="notifyIcons/upload.png" location="front"}",
			message_imgURL: "{resource="notifyIcons/message.png" location="front"}",
			notification_imgURL: "{resource="notifyIcons/notification.png" location="front"}",
			baseURL: "{expression="\IPS\Http\Url::baseUrl( \IPS\Http\Url::PROTOCOL_RELATIVE )"}",
			jsURL: "{expression="rtrim( \IPS\Http\Url::baseUrl( \IPS\Http\Url::PROTOCOL_RELATIVE ), '/' )"}/applications/core/interface/js/js.php",
			csrfKey: "{expression="\IPS\Session::i()->csrfKey"}",
			antiCache: "{expression="\IPS\Theme::i()->cssCacheBustKey()"}",
			jsAntiCache: "{expression="\IPS\Output\Javascript::javascriptCacheBustKey()"}",
			disableNotificationSounds: true,
			useCompiledFiles: {{if \IPS\IN_DEV}}false{{else}}true{{endif}},
			links_external: {{if \IPS\Settings::i()->links_external }}true{{else}}false{{endif}},
			memberID: {expression="( \IPS\Member::loggedIn()->member_id ) ? \IPS\Member::loggedIn()->member_id : 0"},
			lazyLoadEnabled: {{if \IPS\Settings::i()->lazy_load_enabled}}true{{else}}false{{endif}},
			blankImg: "{expression="\IPS\Text\Parser::blankImage()"}",
			analyticsProvider: "{expression="\IPS\Settings::i()->ipbseo_ga_provider"}",
			viewProfiles: {{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members' ) )}}true{{else}}false{{endif}},
			mapProvider: {{if \IPS\Settings::i()->googlemaps and \IPS\Settings::i()->google_maps_api_key}}'google'{{elseif \IPS\Settings::i()->mapbox and \IPS\Settings::i()->mapbox_api_key}}'mapbox'{{else}}'none'{{endif}},
			mapApiKey: {{if \IPS\Settings::i()->googlemaps and \IPS\Settings::i()->google_maps_api_key}}"{expression="\IPS\Settings::i()->google_maps_api_key"}"{{elseif \IPS\Settings::i()->mapbox and \IPS\Settings::i()->mapbox_api_key}}"{expression="\IPS\Settings::i()->mapbox_api_key"}"{{else}}''{{endif}},
			pushPublicKey: {{if \IPS\Notification::webPushEnabled()}}"{expression="\IPS\Settings::i()->vapid_public_key"}"{{else}}null{{endif}},
			relativeDates: {{if \IPS\Settings::i()->relative_dates_enable}}true{{else}}false{{endif}}
		};
		
		{{if \IPS\Settings::i()->ipbseo_ga_provider == 'custom' && \IPS\Settings::i()->ipbseo_ga_paginatecode && \IPS\Dispatcher::hasInstance() && \IPS\Dispatcher::i()->controllerLocation == 'front'}}
			ipsSettings['paginateCode'] = {setting="ipbseo_ga_paginatecode"};
		{{endif}}
		
		{{if !empty( $maxImageDims[0] ) AND !empty( $maxImageDims[1] ) AND ( \intval( $maxImageDims[0] ) !== 0 || \intval( $maxImageDims[1] ) !== 0 ) }}
			ipsSettings['maxImageDimensions'] = {
				width: {$maxImageDims[0]},
				height: {$maxImageDims[1]}
			};
		{{endif}}
		
	</script>
{{endif}}
{{if !\IPS\Request::i()->isAjax() and \IPS\Dispatcher::hasInstance() and \IPS\Dispatcher::i()->controllerLocation == 'front' and \IPS\Settings::i()->fb_pixel_enabled and \IPS\Settings::i()->fb_pixel_id}}
{{$pixelId = \IPS\Settings::i()->fb_pixel_id;}}
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
setTimeout( function() {
	fbq('init', '{$pixelId}');
	{{if $pixels = \IPS\core\Facebook\Pixel::i()->output()}}
	{$pixels|raw}
	{{endif}}
}, {expression="\intval( \IPS\Settings::i()->fb_pixel_delay * 1000 )"} );
</script>
<!-- End Facebook Pixel Code -->
{{endif}}

{{foreach array_unique( array_filter( \IPS\Output::i()->jsFiles ), SORT_STRING ) as $js}}
{{$js = \IPS\Http\Url::external( $js );}}
<script type='text/javascript' src='{{if $js->data['host'] == parse_url( \IPS\Settings::i()->base_url, PHP_URL_HOST )}}{expression="$js->setQueryString( 'v', \IPS\Output\Javascript::javascriptCacheBustKey() )"}{{else}}{expression="$js"}{{endif}}' data-ips></script>
{{endforeach}}
{{foreach array_unique( \IPS\Output::i()->jsFilesAsync, SORT_STRING ) as $js}}
<script type="text/javascript" src="{expression="\IPS\Http\Url::external( $js )->setQueryString( 'v', \IPS\Output\Javascript::javascriptCacheBustKey() )"}" async></script>
{{endforeach}}
{{if !\IPS\Request::i()->isAjax() and ( \count( \IPS\Output::i()->jsVars ) || \IPS\Output::i()->headJs)}}
	<script type='text/javascript'>
		{{foreach \IPS\Output::i()->jsVars as $k => $v}}
			ips.setSetting( '{$k}', {{if ! \is_array( $v )}}jQuery.parseJSON('{expression="json_encode( $v, JSON_HEX_APOS )" raw="true"}'){{else}}{expression="json_encode( $v, JSON_HEX_APOS )" raw="true"}{{endif}} );
		{{endforeach}}
		{expression="\IPS\Output::i()->headJs" raw="true"}
	</script>
{{endif}}
{{if \count( \IPS\Output::i()->jsonLd )}}
{{foreach \IPS\Output::i()->jsonLd as $object}}
<script type='application/ld+json'>
{expression="json_encode( $object, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS )" raw="true"}	
</script>
{{endforeach}}
{{endif}}

 

Edited by deeverbs

comment_173578
4 минуты назад, deeverbs сказал:

блин, там куча условий 🙂 (в самом файле в смысле) где он должен быть?))

в самый конец вставь после {{endif}}

comment_173581
20 минут назад, ZIKURIK сказал:

в самый конец вставь после {{endif}}

не работает.. 😔

Screenshot 2021-10-17 at 20-34-23 О текущем положении дел.png

comment_173585
3 минуты назад, ZIKURIK сказал:

он удалять должен в постах которые уже отправлены

блин, сорри.. 🙂 перезагрузил страницу, и всё ок стало)

Интересно скрипт работает, По факту его нет в публикации, но если начать редактировать он почему-то там висит?) Как это работает?))

comment_173587
3 минуты назад, deeverbs сказал:

Интересно скрипт работает, По факту его нет в публикации, но если начать редактировать он почему-то там висит?) Как это работает?))

Я посчитал что в редакторе он все же нужен, мало ли захочется ввести текст или еще что под видео. Скрипт циклом проверяет все сообщения на странице и удаляет этот nbsp если дальше нету других тегов.

comment_173588
1 минуту назад, ZIKURIK сказал:

Я посчитал что в редакторе он все же нужен, мало ли захочется ввести текст или еще что под видео. Скрипт циклом проверяет все сообщения на странице и удаляет этот nbsp если дальше нету других тегов.

Круто! Спасибо огромное!!! 🙂

comment_173603

А эта тема только для ютуба? Меня больше всего бесит пустые абзацы в конце поста, даже появилась дебильная ОКР-на привычка редактировать сообщения за пользователями)

Edited by betastarz

comment_173604
1 час назад, betastarz сказал:

А эта тема только для ютуба? Меня больше всего бесит пустые абзацы в конце поста, даже появилась дебильная ОКР-на привычка редактировать сообщения за пользователями)

Да, в скрипте есть функция

find('.ipsEmbeddedVideo')

Наверно было бы хорошо сделать универсальную?)

Edited by deeverbs

comment_173610
3 часа назад, betastarz сказал:

А эта тема только для ютуба? Меня больше всего бесит пустые абзацы в конце поста, даже появилась дебильная ОКР-на привычка редактировать сообщения за пользователями)

 

<script type='text/javascript'>
$('#ipsLayout_contentArea').find('div[data-role="commentContent"]').find('p:last').each( function () {
	if( $(this).next().length == 0 ){
		$(this).html(function (i, html) {
			return html.replace(/&nbsp;/g, '');
		});
	}
});
</script>

 

comment_173611
38 минут назад, ZIKURIK сказал:

 

<script type='text/javascript'>
$('#ipsLayout_contentArea').find('div[data-role="commentContent"]').find('p:last').each( function () {
	if( $(this).next().length == 0 ){
		$(this).html(function (i, html) {
			return html.replace(/&nbsp;/g, '');
		});
	}
});
</script>

 

Огонь! всё работает! Спасибо!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.