Artisteer の垂直メニューブロックにサブ項目を表示するには PHP の DOM が必須

  • 2011-02-22 (火) 11:14 初版作成
    2013-12-18 (水) 16:33 最終更新

Artisteer で作成した Drupal テーマで垂直メニューを使う場合、サーバーの PHP 環境に DOM が組み込まれていないと、サブメニュー項目の表示がおかしくなる件。

エクスポートしたテーマに含まれる common_methods.php の art_menu_worker() 関数に次のようなコードがある。

if (class_exists('DOMDocument')) {
    $output = art_menu_xml_parcer($output, $show_sub_menus, $menu_class);
    /* Support Block Edit Link module */
      $output = str_replace('<!DOCTYPE root>', $empty_str, $output);
  }
  else {
    $output = preg_replace('~(<a [^>]*>)([^<]*)(</a>)~', '$1<span class="l"></span><span class="r"></span><span class="t">$2</span>$3', $output);
  }
  return $output;

DOM が組み込まれていなくても else ブロックが実行されてエラーにはならないが、メニューのサブ項目にも余計な span が追加されてレイアウトが崩れる模様。

対策は DOM をインストールすること。
CentOS の場合は次のコマンドラインを実行する。

# yum install php-xml

DOM がインストールされれば、サブ項目も含めて垂直メニューが正常に表示されるようになる。

以上、Artisteer の便利な垂直メニューの階層表示を使うには PHP に DOM が必須っぽいということでメモ。

更新履歴

  • 2013-12-18 (水) 16:33

DISQUS コメント