Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2009-04-08 17:14:34

yama
Administrator
登録日: 2005-07-07
投稿: 1,269
ウェブサイト

Re: NP_SmartBR - ブログ設定の「改行を変換する」設定を少し賢くする

http://japan.nucleuscms.org/bb/viewtopi … 3997#23997
上記プラグイン、こちらで公開します。ブログを「改行を変換する」設定で利用している場合、これを試してみてください。普通に文章を書くだけなら関係ないですが、たまにtableタグやリストタグなどを手入力で書いた時に行末に改行が挿入されるためレイアウトが崩れて不便に感じることがあるのではと思います。このプラグインをインストールすると、改行変換が必要な行のみを判別して改行を挿入するようになります。

追記 短いコードなので貼り付けておきます

<?php
class NP_SmartBR extends NucleusPlugin
{
   function getName()        { return 'NP_SmartBR'; }
   function getAuthor()      { return 'yama'; }
   function getURL()         { return 'http://kyms.jp/'; }
   function getVersion()     { return '0.12'; }
   function getDescription() { return 'SmartBR'; }
   function getEventList()   { return array('PreItem');}

   function event_PreItem(&$data)
   {
      global $manager, $blogid;
      $b = & $manager->getBlog($blogid);
      if ($b->getSetting('bconvertbreaks'))
      {
         $item = &$data['item'];
         $this->_addbreak($item->body);
         if($item->more) $this->_addbreak($item->more);
      }
   }

   function _addbreak(&$text)
   {
      $text = removeBreaks($text);
      $tmp_lines = explode("\n", $text);
      $text = '';
      $blocks  = '(?:br|table|tbody|tr|td|th|thead|tfoot|caption|colgroup|div';
      $blocks .= '|dl|dd|dt|ul|ol|li|pre|select|option|form|map|area|blockquote';
      $blocks .= '|address|math|style|input|p|h[1-6]|hr|object|param|embed)';
      foreach($tmp_lines as $tmp_line)
      {
         $tmp_line = rtrim($tmp_line);
         if    (preg_match('@<'  . $blocks . '[^>]*>$@', $tmp_line))
            $text .= $tmp_line . "\n";
         elseif(preg_match('@</' . $blocks . '>$@'     , $tmp_line))
            $text .= $tmp_line . "\n";
         else
            $text .= $tmp_line . "<br />\n";
      }
   }
}

Attachments:
zip NP_SmartBR011.zip, Size: 789 B, Downloads: 291

オフライン

Board footer