Top > MyPage
 

ZOXのサイドボックスをXOOPSのブロックで表示する

ZenCartのサイドボックスをXOOPSのブロックで表示したい

Zen Cart On XOOPSのサイドボックスや、新着情報などはXOOPSのブロックで表示できるようになっている。

その手順と、注意点を記す。

手順

XOOPSのモジュールのディレクトリにZOXのファイルをコピーして、ファイルのパーミッション等を設定して、XOOPSの管理画面よりインストールする。

(ZOXの管理画面にログインできないという問題についてはZenCartのドキュメントを参照)

ブロック表示させるには、PEARのHTML_AJAXが必要である。

ZOXのアーカイブを展開して、でてきたcommonディレクトリをXOOPSのインストールディレクトリにコピーすることでも対応可能である。

ZOXでは、

  • CSS/AJAX_none
  • LeftColumn
  • RightColumn
  • SingleColumn
  • Whats_new
  • Specials
  • Featured
  • Upcoming

の8ブロックが用意されている。

CSS/AJAX_noneは、他のブロック表示に必要なスタイルシートとjavascriptsを読み込むので、ブロックを表示する際には、必ず表示する必要がある。左ブロックの並び順0、すべてのページに表示するようにすると良い。

左サイドボックスをブロックで表示する場合

  1. XOOPSの管理者用ページで、システム管理のブロック管理を開く
  2. 「CSS/AJAX_none」、「LeftColumn」というブロックの編集画面を開き、これらのブロックが表示される画面を設定する。

    「CSS/AJAX_none」は全てのページで表示されるようにした方が良いと思われる

    ブロックの編集画面
  3. 「CSS/AJAX_none」、「LeftColumn」の「表示/非表示」設定を表示にする。

    このとき、「CSS/AJAX_none」の方が必ず上部に表示されるように設定する。

    ブロック管理画面
  4. これで、サイドボックスがXOOPSのブロックで表示されるようになるが、文字化けしている可能性が非常に高い(サイトの出力文字コードをUTF-8にしていないと化ける)。

    サイドボックスの文字化け

    [/modules/zox/]直下に、ファイル名がajaxで始まるphpファイルが7つある(左サイドボックスに対応するのはajax_left.php)。その中に

        echo mb_convert_encoding($retval,"UTF-8");
        

    という記述があるので、「UTF-8」をサイトの出力文字コードにする(デフォルトだとEUC-JP)。

    これで、文字化けの問題は解決するはず。(ZOXバージョン1.312で確認)

    参照:バージョン1.31公開時の書き込み。このあたりで文字化けについてやり取りしてる

    サイドボックス
  5. このままだと、ZOXの画面を表示したときに再度ボックスが二重に表示されるので、ZOXの方では表示しないようにする。

    ZOXの管理者画面から一般設定、レイアウト設定を開き、左側カラムの表示の設定値を「0」にすればよい。右側カラムも、同様にできる。

    ZOX、レイアウト設定、左側カラム
  6. ブロック表示するために、「CSS/AJAX_none」というブロックが必要なため、空であるのにかかわらずブロックタイトルだけが表示されてしまい、不自然である。

    このブロックを隠す方法を示す。

    使用中のテーマセットの「」においてブロックの表示方法を定義している部分がある。そこに細工を加える。

    <div class="blockTitle"><{$block.title}></div>    ブロックタイトル
    <div class="blockContent"><{$block.content}></div>    ブロックコンテンツ
    

    このような部分を次のように変更する。

    
    <div class="blockTitle"><{$block.title}></div>
    <div class="blockContent"><{$block.content}></div>
    
    <div class=><{$block.content}></div>
    
    

    使用中のテーマセットの「」に次の部分を追加する。

    
    
    

    こうすることで、ブロック名の末尾に「none」が入ったブロックは、タイトル・コンテンツ部分の余白ともに非表示となる。