フォーラム投稿ルール

フォーラムに雑談以外でトピックを作る方は以下のテンプレートを利用してください。
---
Joomla!バージョン:
PHPバージョン:
MySQLバージョン:
サーバ情報:
URL(公開可能であれば):http://example.jp
状況:
実際に表示されるエラーログ:
---
回答者がレスがつけやすいよう心がけましょう。

フォーラム投稿について

フォーラムへの投稿に規制を行いました。

1.URIを掲載して説明等を投稿する場合はホスト名にexample.jpを使用して下さい。
2.1投稿中に掲載できる外部URIを1個に制限しています。
3.Joomla!プロジェクト関連のURIは制限ありません。
4.メールアドレスを制限しています。

他に制限を外したいドメインがありましたらこちらへ

Joomla! 日本語フォーラム
ようこそ, ゲストさん
始めに ログイン するか 登録をして下さい.    パスワードを再発行
メニューアイテムの影響範囲
(1 閲覧) 1 ゲスト
Go to bottom
トピック: メニューアイテムの影響範囲
#867
Nori
Moderator
投稿: 28
graphgraph
オフラインのユーザー このユーザーのプロフィールを見るにはここをクリックして下さい。。
Joomla!マスターズ
メニューアイテムの影響範囲 2 年, 5 月 前 評判: 0
こちらのスレッドからの移動しました

ところで、
$menu = $menus->getActive();
$menu_params = new JParameter( $menu->params );
でパラメータの値を取っていますが、
今回の用に、権限なしの記事にアクセスした場合に表示される「ログイン」ページのパラメータってどこから取ってくるんですかね?

# エイリアスをキーにActiveを決定してるのかな・・・
# エイリアス名を合わせて、ログインメニューアイテムを作っておけばそっちから取ってくる?
# でも、自動で表示される「ログイン」ページのエイリアスって何?
# つーか、自分でコードを追えと・・・
# ログインページに限らず、スタンダードセクションレイアウトのカテゴリリンクから表示されるカテゴリのページも、BLogレイアウトだったり、スタンダードだったりして、うまく制御できないんだよなぁ。
# たぶん、設定内容か、内部的なルールかがあると思うんだけど、よくわからない・・・・
# 愚痴を言う前に、自分でコー・・・


これもwikiとかには無いような気がしますが
基本はJoomla!1.0.xから変わって無いので・・・
まずメニューシステムの影響範囲を理解するには
基本設定にあるSEO 設定を全部 いいえ に設定して下さい。
するとmod_mainmenuやJoomla!が出力するURIにはURIパラメータItemidが付いてきます。
このIDがデータベース xxx_menu のPKであるIDになり管理画面ではメニューアイテム管理に出ている。アイテムIDになります。

このアイテムID(URIパラメータItemid)が同じならそのページは該当する。メニューアイテムのパラメータの影響を受けています。同時に割り当てテンプレートやモジュールの表示割り当ても

じゃぁアイテムID(URIパラメータItemid)が無いページは?
メニューアイテム管理にあるデフォルトのメニューアイテムのアイテムIDから影響を受けます。
 
アクセスIP: アクセスIP:
 
最後に編集: 2009/08/25 00:14 By Nori.
 
Twitter:http://twitter.com/nori_j
イベント&セミナー
今の所ありません。
  管理者は、ゲストユーザーの投稿を許可していません。ログインして下さい
#869
chum
Senior Boarder
投稿: 72
graphgraph
オフラインのユーザー このユーザーのプロフィールを見るにはここをクリックして下さい。。
Re:メニューアイテムの影響範囲 2 年, 5 月 前 評判: 6
Noriさん
こんにちは


じゃぁアイテムID(URIパラメータItemid)が無いページは?
メニューアイテム管理にあるデフォルトのメニューアイテムのアイテムIDから影響を受けます。


ふんふん、なるほど。
と、思って試してみました。

テスト状況
・メニューアイテムは2つ(デフォのフロントページレイアウト、セクションスタンダード)
・フロントページに記事はない
・セクション、カテゴリ、記事はそれぞれ1つ

希望する結果
・セクションスタンダートから選択したカテゴリがBlog形式で表示されること。

実験結果
・カテゴリはスタンダードレイアウトになる・・・失敗


と、いうわけで悲しい状況だったのでコードを見ました。

セクションスタンダードレイアウトから自動で生成されるカテゴリリンクの付け方


  1. パラメータの取得先は、すでに存在するメニューアイテムから取得

  2. メニューアイテムの決定方法は、カテゴリ表示系のメニューアイテムでカテゴリIDが一致すること

  3. 上記で一致しない場合は、セクション表示系のメニューアイテムで、セクションIDが一致すること

  4. 上記が一致しないことはない(元のメニューアイテムがセクションスタンダードだから、必ず元のメニューアイテムがヒットする)



と、いうわけで、すでにそのカテゴリを表示するメニューアイテムがあればその設定が適用され、なければ、セクションのメニューアイテムの設定が優先されます。(メニュー取得のOrderが何かは不明・・ID順か?)

つまり、すでにBlogカテゴリレイアウトのメニューアイテムが作ってあれば、セクションスタンダードからカテゴリを選択した場合はBlog形式で表示されることになります。

が、じつは、Blog形式では表示されずスタンダード形式で表示されます。(一部のパラメータは適用されますです。)

セクションスタンダードで生成されるカテゴリへのURLは

コード:


/index.php?option=com_content&view=category&id=7:no-menu-gat&layout=blog&Itemid=59&layout=default



になり、layout=blog と layout=default とが2つのレイアウト形式が指定されるため、前の layout=blog が無効になります。

このURLの生成は、/components/com_content/views/section/view.html.php の96行目で

コード:


$category->link = JRoute::_(ContentHelperRoute::getCategoryRoute($category->slug, $category->section).'&layout=default');



となっていて、問答無用で &layout=default が付くようになっています。

リポジトリーをみたところ、リビジョン10588で &layout=default が追加されたようです。(このときの修正はこの部分だけ)

変更コメントが'See Changelog'だったので、同じリビジョンにふくまれたCHANGELOG.PHPを見たのですが、それらしい項目が見当たりませんでした。
(あやしいそうなバグレポートを2、3見たのですが違うようだし、全部チェックするのは面倒くさいし)

問題の対策としては、/components/com_content/views/section/view.html.php のなかから .'&layout=default' を削除すれば良いと思いますが、コアの部分なんで気が引けます。

他にセクションスタンダードから、Blogカテゴリに直接飛ばす方法って無いんでしょうかね・・・

Blog表示の記事の中にセクション名リンクを表示し、そのリンク先のセクションスタンダードから元の記事のカテゴリを選んでもBlog形式で表示されないのはちょっとアレなんで・・・
 
アクセスIP: アクセスIP:
 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Joomla!だいすき?ちょっとスキ?
ちゅんちゅん@Joomlaでポン
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  管理者は、ゲストユーザーの投稿を許可していません。ログインして下さい
#874
Nori
Moderator
投稿: 28
graphgraph
オフラインのユーザー このユーザーのプロフィールを見るにはここをクリックして下さい。。
Joomla!マスターズ
Re:メニューアイテムの影響範囲 2 年, 5 月 前 評判: 0
こんにちは
調査ご苦労様です。

たぶんチケットは
これかな

メニューアイテムではスタンダードセクションレイアウト=>スタンダードカテゴリレイアウトとセクション Blog レイアウト=>Blogカテゴリレイアウトでと考えてるみたいです。

じゃぁアイテムID(URIパラメータItemid)が無いページは?
メニューアイテム管理にあるデフォルトのメニューアイテムのアイテムIDから影響を受けます。

これの説明が短すぎたみたいですね・・・
これを再現するなら
スタンダードセクションレイアウト=>スタンダードカテゴリレイアウト
=>スタンダード記事レイアウトへItemidが継承されます。
なのでメニューアイテムでスタンダードセクションレイアウトの子メニューアイテムにBlogカテゴリレイアウトを作るとこの問題が出ます。

本当はメニューアイテムのパラメータで無いJoomla!内部間リンク部分は同コンポーネントのメニューアイテムがあればそのパラメータを追加、上書きするべきなのですが。(この場合はItemidが使用しているメニューアイテムの物になります

認識しているけど残してあるみたいなので
components/com_content/views/section/tmpl/default.php
このファイルをテンプレートで上書きして
コード:


<?php echo $category->link; ?>


これを
コード:


<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($category->slug, $category->section); ?>


変更すれば直ります
 
アクセスIP: アクセスIP:
 
Twitter:http://twitter.com/nori_j
イベント&セミナー
今の所ありません。
  管理者は、ゲストユーザーの投稿を許可していません。ログインして下さい
#881
chum
Senior Boarder
投稿: 72
graphgraph
オフラインのユーザー このユーザーのプロフィールを見るにはここをクリックして下さい。。
Re:メニューアイテムの影響範囲 2 年, 5 月 前 評判: 6
Noriさん
こんにちは

components/com_content/views/section/tmpl/default.php
このファイルをテンプレートで上書き


あーなるほど、そうですね。ありがとうございます。

"JRoute::_(ContentHelperRoute"は便利そうですね。
これをうまく使えば、記事内に内部リンクを生成するプラグインが出来そうですね。
いままでは、記事内に直接URLを貼っていたので、何かのタイミングでリンク切れになるんじゃないかとビクビクしていましたが、これを使えばちょっとは安心して眠れそうです。
 
アクセスIP: アクセスIP:
 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Joomla!だいすき?ちょっとスキ?
ちゅんちゅん@Joomlaでポン
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  管理者は、ゲストユーザーの投稿を許可していません。ログインして下さい
#883
ヒユナ
Fresh Boarder
投稿: 10
graphgraph
オフラインのユーザー このユーザーのプロフィールを見るにはここをクリックして下さい。。
Re:メニューアイテムの影響範囲 2 年, 5 月 前 評判: 0
ご無沙汰しております。
先日教えていただいたコードを追加してみました。

まず、そのまま追加すると、ページタイトルはアドレスが、
ページ自体には「ログイン」とのみ表示され、ソースを見てみると
コード:


<div class="componentheading">
ログイン</div>
<div width="700" align="center" style="margin-bottom:20px;">


しかありませんでした。

その後、ブラウザを再起動しログインページへアクセスすると、
HTTP 500 内部サーバーエラー
になりました。

頂いたコードの
コード:

$page_title =

部分を消すと、エラーにはならず
ページタイトルがURLの状態でページ本文が全て表示されました。

そこで、コードを以下のみ追加してみました。
コード:


<?php 
$doc = & JFactory::getDocument(); 
$page_title = 'testtest'
$doc->setTitle( $page_title ); 
?> 


すると、ページのタイトルは「testtest」と表示され、
ページ本文もちゃんと表示されたのですが、ソースに
コード:


<div class="componentheading">ログイン</div>


が残っていました。

ページのタイトルは「ログイン」のままでよいのですが、
ページ本文に「ログイン」と表示させたくない場合は別な方法があるのでしょうか?
(私の質問の書き方が分かりにくく、申し訳ないです)
よろしくお願いいたします。
 
アクセスIP: アクセスIP:
  管理者は、ゲストユーザーの投稿を許可していません。ログインして下さい
#887
chum
Senior Boarder
投稿: 72
graphgraph
オフラインのユーザー このユーザーのプロフィールを見るにはここをクリックして下さい。。
Re:メニューアイテムの影響範囲 2 年, 5 月 前 評判: 6
ヒユナさん
こんばんは

修正したソース(/templates/テンプレート名/html/com_user/login/default_login.php)の7行目あたりに

コード:

<p class="componentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
<?php echo $this->escape($this->params->get('page_title')); ?>
</p>



とあるので、これを

コード:

<p class="componentheading">秘密の合言葉を入力しなさい、ただしオープンセサミとオープンソースはちょっと違います</p>


に変えてください。

ただし、これをやると、メニューアイテムでログインページを作った場合に、パラメータの設定が反映されなくなるので注意してください。
 
アクセスIP: アクセスIP:
 
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Joomla!だいすき?ちょっとスキ?
ちゅんちゅん@Joomlaでポン
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  管理者は、ゲストユーザーの投稿を許可していません。ログインして下さい
Go to top