簡単! Joomla!でサイトを作ろう

  • フォントサイズを増やす
  • デフォルトのフォントサイズ
  • フォントサイズを減少させる

タイトルにサイト名を表示する

 Joomla! は、標準インストールした状態で記事を作成しても、タイトルバーにサイト名を表示してくれません。ブラウザでどのサイトを閲覧しているのかを一目で分かるようにするためには、ページのタイトルだけでなく、サイト名もタイトルバーに含めた方がよいと思います。

 そのような設定は、サイトの基本設定にあるのかと思ってチェックしたのですが見当たりません。どうやら、Joomla! の PHPソースを変更するしかないようです。Joomla! のコードを調べてみることにします。

 まずはタイトルを出力しているところを探します。とりあえず、「<title>」の文字列を検索してみます。

[root@host ~]# cd /var/www/joomla
[root@host ~]# grep "<title>" `find . -name "*.php" -print`

 検索した結果、大量と言うほどではありませんが、探すのがめんどくさい程度の量がヒットしました。ファイル名だけを表示して、関連が深そうなところを絞り込んでみます。

[root@host ~]# grep -l "<title>" `find . -name "*.php" -print`
./plugins/xmlrpc/blogger.php
./templates/system/error.php
./administrator/components/com_admin/admin.admin.html.php
./xmlrpc/client.php
./libraries/bitfolge/feedcreator.php
./libraries/joomla/document/feed/renderer/rss.php
./libraries/joomla/document/feed/renderer/atom.php
./libraries/joomla/document/html/renderer/head.php

 これならばある程度までは見当がつきそうです。消去法で考えると、./plugins/... はプラグインに関連してそうなので除外、./templates/... はエラー画面みたいなので除外、./administrator/... は管理画面関連みたいなので除外、./xmlrpc/... も名前どおりに XMLRPC 関連みたいなので除外。./libraries 以下がそれっぽですが、feed を含んでいるのも通常の HTML とは違ってるみたいなので除外。ということで、残ったのは最後のファイルだけとなりました。このファイルを指定して検索してみましょう。

[root@host ~]# grep "<title>" `find . -name "head.php" -print`
                $strHtml .= $tab.''.htmlspecialchars($document->getTitle()).''.$lnEnd;

 1行だけがヒットしました。おそらくここがタイトルの文字列を指定しているところなのでしょう。では、サイト名を追加するにはどうすればいいかです。サイト名も多くの場所で使われていると思いますが、検索してみます。

[root@host ~]# grep -i sitename `find . -name "*.php" -print`

 検索結果としてかなりの部分がヒットするのですが、多くの箇所で共通して「$mainframe->getCfg('sitename')」というコードで設定から取得しているように見受けられます。先ほどのファイルを編集して、このコードを追加してみます。

[root@host ~]# vi ./libraries/joomla/document/html/renderer/head.php
 :
    function fetchHead(&$document)
    {
        global $mainframe; // ←追加
 :
        // 赤文字部分を追加
        $sitename = $mainframe->getCfg('sitename');
        $documentTitle = $document->getTitle();
        if (strcmp($sitename, $documentTitle) == 0) {
            $title = $sitename;
        } else {
            $title = $sitename.' - '.$documentTitle;
        }
        $strHtml .= $tab.'<title>'.htmlspecialchars($title).'</title>'.$lnEnd;
        // $strHtml .= $tab.'<title>'.htmlspecialchars($document->getTitle()).・・・ 元のコードをコメントアウト
 :

 最初、if ... else ... は書いてなかったのですが、トップページを表示したときに「サイト名 - サイト名」と表示されてしまったので、if文を追加しました。この変更で、各ページを表示したときに、タイトルにサイト名が表示されるようになりました。これでもまだ管理画面のタイトルが変です。

 次はこの部分を修正しましょう。まずはそのような文字列を扱っている部分を探します。二つのスペースでマイナスが挟まれた「 - 」と「sitename」の二つを含む箇所がないか、検索してみます。

[root@host ~]# rep "' - '" `find . -name "*.php" -print` | grep sitename
./administrator/includes/application.php:               $document->setTitle( htmlspecialchars_decode($this->getCfg('sitename' )). ' - ' .JText::_( 'Administration' ));
./libraries/joomla/document/html/renderer/head.php:                     $title = $sitename.' - '.$documentTitle;
./libraries/joomla/application/application.php:         $document->setTitle( $this->getCfg('sitename' ). ' - ' .JText::_( 'Administration' ));

 検索結果を見ると、管理画面で表示されているだけに、./administrator/includes/application.php が関係している可能性が高いです。このファイルを修正してみます。

[root@host ~]# vi ./administrator/includes/application.php
 :
               //$document->setTitle( htmlspecialchars_decode($this->getCfg('sitename' )). ' - ' .JText::_( 'Administration' ));
               $document->setTitle(JText::_( 'Administration' ));
 :

 この修正で、管理画面も適切にタイトルが表示されるようになりました。