Posted 21 декабря, 20167 yr comment_118416 Привет! На меня "напали" толпы пользователей, которые захотели уплотнить шрифт в ленте сообщений. Понятно, что, прежде всего, в настройках редактора клац по Enter был определен как "новая строка" (а не абзац). Далее умные люди посоветовали решение через добавление в custom.css конструкции .ipsComment_content .ipsType_richText{ line-height: 1.1; } Эффект был достигнут. Текст заметно уплотнился по вертикали. Вместо 2-3 сообщений на одном экране, теперь без промотки можно читать 4-5. К сожалению, выявился дефект : при использовании цитат последующий набираемый текст становится вплотную к прямоугольнику цитаты. Делать клац по Enter каждый раз после и перед цитатой неудобно. Вопрос , как имитировать новый абзац? Или как можно цитату обрамить своеобразным padding-ом снизу и сверху? Как это реализовать в коде? Заранее благодарю.
21 декабря, 20167 yr comment_118418 33 минуты назад, sapr2017 сказал: Или как можно цитату обрамить своеобразным padding-ом снизу и сверху? Как это реализовать в коде? в custom.css добавить код: .ipsQuote { margin-bottom: 10px; margin-top: 10px; }
21 декабря, 20167 yr Author comment_118441 1 час назад, Redneck сказал: .ipsQuote { margin-bottom: 10px; margin-top: 10px; } Работает. Спасибо большое.
17 октября, 20213 yr comment_173525 Тоже мучился с этим, некоторые пользователи злоупотребляли энтером)) спасибо за подсказку про custom 🙂
17 октября, 20213 yr comment_173527 1 час назад, deeverbs сказал: злоупотребляли энтером по стандарту на энтер включён абзац, если включить просто перенос строки, то вполне достаточно этого и больше ничего делать не приходится. да и на скринах, судя по всему, какой-то газетный форум из нулевых. такое тоже читать не особо приятно, когда весь текст слипается.
17 октября, 20213 yr comment_173546 8 часов назад, by_ix сказал: да и на скринах, судя по всему, какой-то газетный форум из нулевых. такое тоже читать не особо приятно, когда весь текст слипается. Я сделал перенос строки и текст слипся в местах где цитаты, картинки и видео.. Я добавил в custom.css и добился нужно результата, но с видео так не прокатило.. .ipsQuote { margin-bottom: 10px; margin-top: 10px; } .ipsImage { margin-bottom: 10px; margin-top: 10px; } Подскажите, пожалуйста, как сделать подобные отступы, на видео...
17 октября, 20213 yr comment_173565 3 часа назад, deeverbs сказал: Подскажите, пожалуйста, как сделать подобные отступы, на видео... .ipsEmbeddedVideo { margin: 10px 0 10px 0; }
17 октября, 20213 yr comment_173571 @ZIKURIK работает! Спасибо огромное! 🙂 Пользуясь случаем, хочу ещё спросить, когда в редактор вставляется ссылка на видео, например с YouTube, автоматом добавляется  , из-за этого пост выглядит немного не эстетично. Можно как-то побороть это? Edited 17 октября, 20213 yr by deeverbs
17 октября, 20213 yr comment_173572 1 час назад, deeverbs сказал: автоматом добавляется   его удалить можно при добавлении
17 октября, 20213 yr 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 если дальше нет тегов
17 октября, 20213 yr comment_173574 15 минут назад, ZIKURIK сказал: его удалить можно при добавлении Я знаю, но пользователи этого не будут делать) им все равно, что там вставляется) 1 минуту назад, ZIKURIK сказал: или можно так, вставь это в includeJS Это в какой папке этот скрипт?
17 октября, 20213 yr comment_173575 2 минуты назад, deeverbs сказал: Это в какой папке этот скрипт? в шаблонах вбей просто, он найдет
17 октября, 20213 yr 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 17 октября, 20213 yr by deeverbs
17 октября, 20213 yr comment_173578 4 минуты назад, deeverbs сказал: блин, там куча условий 🙂 (в самом файле в смысле) где он должен быть?)) в самый конец вставь после {{endif}}
17 октября, 20213 yr comment_173581 20 минут назад, ZIKURIK сказал: в самый конец вставь после {{endif}} не работает.. 😔
17 октября, 20213 yr comment_173582 5 минут назад, deeverbs сказал: не работает.. 😔 он удалять должен в постах которые уже отправлены
17 октября, 20213 yr comment_173585 3 минуты назад, ZIKURIK сказал: он удалять должен в постах которые уже отправлены блин, сорри.. 🙂 перезагрузил страницу, и всё ок стало) Интересно скрипт работает, По факту его нет в публикации, но если начать редактировать он почему-то там висит?) Как это работает?))
17 октября, 20213 yr comment_173587 3 минуты назад, deeverbs сказал: Интересно скрипт работает, По факту его нет в публикации, но если начать редактировать он почему-то там висит?) Как это работает?)) Я посчитал что в редакторе он все же нужен, мало ли захочется ввести текст или еще что под видео. Скрипт циклом проверяет все сообщения на странице и удаляет этот nbsp если дальше нету других тегов.
17 октября, 20213 yr comment_173588 1 минуту назад, ZIKURIK сказал: Я посчитал что в редакторе он все же нужен, мало ли захочется ввести текст или еще что под видео. Скрипт циклом проверяет все сообщения на странице и удаляет этот nbsp если дальше нету других тегов. Круто! Спасибо огромное!!! 🙂
18 октября, 20213 yr comment_173603 А эта тема только для ютуба? Меня больше всего бесит пустые абзацы в конце поста, даже появилась дебильная ОКР-на привычка редактировать сообщения за пользователями) Edited 18 октября, 20213 yr by betastarz
18 октября, 20213 yr comment_173604 1 час назад, betastarz сказал: А эта тема только для ютуба? Меня больше всего бесит пустые абзацы в конце поста, даже появилась дебильная ОКР-на привычка редактировать сообщения за пользователями) Да, в скрипте есть функция find('.ipsEmbeddedVideo') Наверно было бы хорошо сделать универсальную?) Edited 18 октября, 20213 yr by deeverbs
18 октября, 20213 yr 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(/ /g, ''); }); } }); </script>
18 октября, 20213 yr 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(/ /g, ''); }); } }); </script> Огонь! всё работает! Спасибо!
19 октября, 20213 yr comment_173619 ZIKURIK У меня почему-то не работает, я же туда вставил куда надо?
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.