1

そのようなSEFJoomlaサイトでURLを作成しようとしています。root/<menu-item-alias>/<view-name>/<item-alias>

MyComponentBuildRoute()の関数の戻り値に何かを追加するとroute.php、常に URL に表示されることに気付きました。

$segments[] = $view;
$segments[] = $item_alias;
return $segments;

Joomla で com_content を見てみると、その<view-name>部分はありませんがroot/<menu-item-alias>/<item-alias>、コードにはまだ次のようなものがあります

$segments[] = $view;

デフォルトと同じようにするにはどうすればよいcom_contentですか?SEFリンクから view-name 部分またはその他の部分を削除するにはどうすればよいですか?

4

2 に答える 2

2

joomla コアを編集することはお勧めしません。コアを変更せずに編集できるのであれば、それは素晴らしいことです。Artio JoomSEF を使用することをお勧めします。これは、SEF URL を編集できるコンポーネントであるため、ページごとに、www.yourdomain.tld/ の後の URL を決定できます。

ここに画像の説明を入力

完全な画像: http://www.diystash.com/sefproblem.png

これが役に立ったことを願っています

于 2013-01-25T11:04:16.523 に答える
0

BuildRoute() で:

URL に表示したい値のみを $segments に追加します。

$segments[] = $query['task'];

次に、変数を削除します。削除しないと、クエリ パラメータとして追加されたままになります。

unset($query['task']);

たとえば、レイアウト パラメータを削除したいが、その値は気にしない場合は、次のようにします。

unset($query['layout']);

ParseRoute() で:

$vars が返される配列であると仮定すると、url セグメントから必要なセグメントを割り当てるだけですが、必要なものを再作成するようにしてください。

$vars['layout']='mydefaultlayout';

このようにして、不要なものを表示せずに、コンポーネントが適切に初期化されたパラメーターを受け取るようにします。

于 2013-01-25T21:34:53.527 に答える