TT
  • ->
  • ->
  • ->
  • ->
//CODE
configの名前等を変更したら///
alphal33n-wizard.cgi
config-alphaxx.cgi

インストールでつまる
wizardに切り替わらない!
Got an error: Missing configuration file. Did you forgot to move mt-config.cgi-original to mt-config.cgi?

/source/MTOS-5.2.13/tmpl/wizard/start.tmpl

alphal33n-wizard.cgi
config-alphaxx.cgi


ToDo)セキュリティ対策
//mt-configの名前を変更する。。mt-config.cgiの記載があるソース
/lib/MT.pm
/lib/MT/ConfigMgr.pm
/lib/MT/App/Wizard.pm

※ !! mt-check.cgi

/php/mt.php



元のデータ・・originalではなかった!
/MTOS-5.2.13/tmpl/wizard/mt-config.tmpl
-> config-alphaxx.tmpl に変更
/lib/MT/App/Wizard.pm に記載あり

configの初期値は、mt-config.tmplをいじらなくても
/lib/MT/Core.pm
で変更できるのでこちらで変更

AutoSaveFrequency -> 0 自動保存無効
EntriesPerRebuild -> 再構築時の記事更新単位(デフォルト40->10に変更)
ThemeStaticFileExtensions -> テーマでアップロード可能なファイルの拡張子
jpg jpeg gif png js css ico flv mp3 swf html otf ttf php htc gz eot woff woff2 svg

ImageDriver GD 画像処理のドライバ

ファイル出力時のパラメータの初期値
HTMLUmask 0022
DirUmask 0022
HTMLPerms 0604

以上、初期値を変更済

//余計な外部アクセスを消すために
標準的な実行ソースをあらかじめ変えておく。
/lib/MT/Core.pm
.cgiが12箇所
XMLRPC 16箇所
atom  13箇所
ping 28箇所
trackback 52箇所

/lib/MT.pm
.cgiが10箇所
XMLRPC 8箇所
atom 0
ping 64箇所
trackback 8箇所

絵文字対応
  • -> MTで絵文字の保存を可能にする
  • -> mysql管理 -> adminer
  • -> perlでMySQL
  • //CODE
    
      my %Charset = (
      'utf-8'     => 'utf8',
      'utf-8'     => 'utf8mb4',
      'shift_jis' => 'sjis',
      'shift-jis' => 'sjis',
      'euc-jp'    => 'ujis',
      #'iso-8859-1' => 'latin1'
      );
    
      MySQLのドライバは”mysql.pm”。
      格納場所はMTインストールフォルダ内の「/lib/MT/ObjectDriver/Driver/DBD/mysql.pmmysql.pm」
      これの「my %Charset =」に「’utf-8′ => ‘utf8mb4′,」を追加。
      ※元々ある「’utf-8’ => ‘utf8’」は削除しない
    
    
    

    インストール時に照合順を変更するのはやめて、インストール後に照合順を変更するスクリプトを作って実行した方が良さそう!

    
    hpMyadminでDBにログイン、
    以下テーブルのカラムの「照合順序」を
    「utf8_general_ci」から「utf8mb4_general_ci」に変更。
    (全体設定を変えてもいいのかもしれないが、トラブルも面倒なので対象のみ変更)
    
    mt_entry
        entry_title(タイトル)
        entry_text(本文)
        entory_text_more(本文続き)
    mt_comment
        comment_text(コメント本文)
        comment_author(コメント投稿者名)
    
    /MTOS-5.2.13/lib/MT/ObjectDriver/DDL.pm
    
    
    
    -- ブログ記事を保存するテーブルの文字コードを変更
    ALTER TABLE `mt_entry` DEFAULT CHARACTER SET utf8mb4;
    
    -- utf8で設定されているカラムの文字コードを変更
    ALTER TABLE mt_entry
        modify `entry_approver_ids` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
        modify `entry_atom_id` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
        modify `entry_basename` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
        modify `entry_class` varchar(255) CHARACTER SET utf8mb4 DEFAULT 'entry',
        modify `entry_convert_breaks` varchar(60) CHARACTER SET utf8mb4 DEFAULT NULL,
        modify `entry_excerpt` mediumtext CHARACTER SET utf8mb4,
        modify `entry_ext_datas` mediumtext CHARACTER SET utf8mb4,
        modify `entry_keywords` mediumtext CHARACTER SET utf8mb4,
        modify `entry_pinged_urls` mediumtext CHARACTER SET utf8mb4,
        modify `entry_prefs` mediumtext CHARACTER SET utf8mb4,
        modify `entry_revision_comment` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
        modify `entry_tangent_cache` mediumtext CHARACTER SET utf8mb4,
        modify `entry_text` mediumtext CHARACTER SET utf8mb4,
        modify `entry_text_more` mediumtext CHARACTER SET utf8mb4,
        modify `entry_title` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
        modify `entry_to_ping_urls` mediumtext CHARACTER SET utf8mb4;
    
    
独自項目の追加
「独自項目を追加」方法
※インストール前に記述が必要!UPDATEではデータベース追加は行われない!
Blogの例

lib\MT\Blog.pm // インストール時にデータベースに項目追加 2箇所
lib\MT\CMS\Blog.pm  // 不明⇐必要なし
lib\MT\Template\Tags\Blog.pm // 出力タグ追加

1箇所
###########################################################################
=head2 EntrySeo
Outputs the value of the seo field for the current entry in context.
=cut
sub _hdlr_entry_seo {
  my ( $ctx, $args ) = @_;
  my $e = $ctx->stash('entry')
      or return $ctx->_no_entry_error();
  my $seo = defined $e->seo ? $e->seo : '';
  return $seo;
}

lib\MT\Template\ContextHandlers.pm  // 出力タグ追加
1箇所
  ## Entry
  EntriesCount =>
      '$Core::MT::Template::Tags::Entry::_hdlr_entries_count',
  EntryID => '$Core::MT::Template::Tags::Entry::_hdlr_entry_id',
  EntryTitle =>
      '$Core::MT::Template::Tags::Entry::_hdlr_entry_title',
  EntryStatus =>
      '$Core::MT::Template::Tags::Entry::_hdlr_entry_status',
  EntryFlag => '$Core::MT::Template::Tags::Entry::_hdlr_entry_flag',
  EntryBody => '$Core::MT::Template::Tags::Entry::_hdlr_entry_body',
  EntryMore => '$Core::MT::Template::Tags::Entry::_hdlr_entry_more',
  EntryLinks => '$Core::MT::Template::Tags::Entry::_hdlr_entry_links',
  EntryForm => '$Core::MT::Template::Tags::Entry::_hdlr_entry_form',
  EntryOption => '$Core::MT::Template::Tags::Entry::_hdlr_entry_option',
  EntrySeo => '$Core::MT::Template::Tags::Entry::_hdlr_entry_seo',

websiteとpageはそれぞれ、blog entryを引き継いでいるが、
タグが別なので、同様の修正が必要。

項目≒タグ追加するときの名前はすでに使われているものと
重複しないようにする。
EntryではLinkが使われていた!

記事のインポート・エクスポートは、
lib\MT\ImportExport.pmの書き換えで対応できた。

-----
LINKS:
<$MTEntryLinks$>
-----
FORM:
<$MTEntryForm$>
-----
OPTION:
<$MTEntryOption$>
-----
SEO:
<$MTEntrySeo$>

バックアップ・復元は未確認


変更前)lib>MT>ArchiveType>Category.pm
//*退避した。一部動作がおかしいのでしばらく様子見。
166行目
MT::ArchiveType::archive_entries_count( $obj, ¥%params );
変更後)

return 1;
変更前)//lib>MT>Asset>Image.pm
//332行目(変更前)
  $wrap_style = 'class="mt-image-' . $param->{align} . '" ';
変更後)
  
(変更後)
  $wrap_style = '';
変更前) 362行目
  
MT::Util::encode_html( $asset->label ), $wrap_style
変更後)

MT::Util::encode_html( $asset->description ), $wrap_style
変更前) 375行目

  if ( $param->{thumb} ) {
      $text = sprintf(
          '<a href="%s"><img alt="%s" src="%s" %s %s /></a>',
          MT::Util::encode_html( $asset->url ),
          MT::Util::encode_html( $asset->label ),//削除
          MT::Util::encode_html( $thumb->url ),
          $dimensions,
          $wrap_style,
      );
  }
  else {
      $text = sprintf(
          '%s',
          MT::Util::encode_html( $asset->label ),//削除
          MT::Util::encode_html( $asset->url ),
          $dimensions, $wrap_style,
      );
  }
変更後)
  
  if ( $param->{thumb} ) {
      $text = sprintf(
          '<a href="%s"><img src="%s" alt="%s" %s %s></a>',//順番
          MT::Util::encode_html( $asset->url ),
          MT::Util::encode_html( $thumb->url ),
          MT::Util::encode_html( $asset->description ),//挿入
          $dimensions,
          $wrap_style,
      );
  }
  else {
      $text = sprintf(
          '%s',//順番
          MT::Util::encode_html( $asset->url ),
          MT::Util::encode_html( $asset->description ),//挿入
          $dimensions, $wrap_style,
      );
  }
変更前)lib>MT>ObjectDriver
   535行目(変更前)
## Set statement's ORDER clause if any.
if ( $args->{sort} || $args->{direction} ) {
  my $order = $args->{sort} || 'id';
  if ( !ref($order) ) {
      my $dir = $args->{direction}
          && $args->{direction} eq 'descend' ? 'DESC' : 'ASC';
      $stmt->order(
          {   column =>
                  $dbd->db_column_name( $tbl, $order, $alias ),
              desc => $dir,
          }
      );
  }
  else {
      my @order;
      foreach my $ord (@$order) {
          push @order,
              {
              column => $dbd->db_column_name(
                  $tbl, $ord->{column}, $alias
              ),
              desc => $ord->{desc},
              };
      }
      $stmt->order( ¥@order );
  }
}
変更後)

## Set statement's ORDER clause if any.
if ( $args->{sort} || $args->{direction} ) {
my $order = $args->{sort} || 'id';
if ( !ref($order) ) {
my $tmp_tbl = $args->{sort_class} ? $driver->table_for($args->{sort_class}) : $tbl;//この行を新規に追加
my $dir = $args->{direction}
&& $args->{direction} eq 'descend' ? 'DESC' : 'ASC';
$stmt->order(
{   column => $args->{sort_alias}//この行から変更
? $args->{sort_alias} . '.' . $dbd->db_column_name($tmp_tbl, $order)
: $dbd->db_column_name( $tbl, $order, $alias ),//この行まで変更
desc   => $dir,
}
);
}
else {
my @order;
foreach my $ord (@$order) {
my $tmp_tbl = $ord->{sort_class} ? $driver->table_for($ord->{sort_class}) : $tbl;//この行を新規に追加
push @order,
    {
column => $ord->{sort_alias}//この行から変更
? $ord->{sort_alias} . '.' . $dbd->db_column_name($tmp_tbl, $ord->{column})
: $dbd->db_column_name( $tbl, $ord->{column}, $alias ),//この行まで変更
desc   => $ord->{desc},
    };
}
$stmt->order( ¥@order );
}
}