MODx 0.9.2までは、フレンドリーURL改良で書いたような変更を施せば、エイリアスパス(ドキュメントの階層構造をURLに含める)がOFFの状態でもエイリアスパス様のURLを生成できました。
0.9.5からはcleanDocumentIdentifierという関数が変更され、エイリアスパスOFF状態では上記エイリアスパス様のURLは受け付けなくなくなりましたが、以下のパッチを当てることで再び使用できるようになります。
--- manager/includes/document.parser.class.inc.php Tue Nov 21 02:38:04 2006 +++ manager/includes/document.parser.class.inc.php Tue Dec 19 19:03:19 2006 @@ -336,6 +336,7 @@ $q= basename($q); } else { $this->virtualDir= ''; + $q= basename($q); // mod for alias path like access without alias path option } $q= str_replace($this->config['friendly_url_prefix'], "", $q); $q= str_replace($this->config['friendly_url_suffix'], "", $q); @@ -845,8 +846,22 @@ } function makeFriendlyURL($pre, $suff, $alias) { - $dir= dirname($alias); - return ($dir != '.' ? "$dir/" : "") . $pre . basename($alias) . $suff; + /* Mod for + * write folder documents as /category/ instead of /category.html + * 20060706 by uglydog(http://nanabit.net/) + */ + $tbl = $this->getFullTableName("site_content"); + $sql = "SELECT isfolder FROM $tbl WHERE alias='".mysql_escape_string(basename($alias))."' LIMIT 1;"; + $result = $this->dbQuery($sql); + $tmp = $this->fetchRow($result); + if($tmp && $tmp['isfolder']) + $suff = '/'; + $dir = dirname($alias); + if ($alias=='index'||$alias=='index'.$suff) { + $alias = ''; + $suff = ''; + } + return ($dir!='.' ? "/$dir/":"/").$pre.basename($alias).$suff; }
なお、下半分は今までのものとほぼ同じですが、サイトトップ(エイリアスindexを想定)の場合はさらに/だけに置換します。
20061220追記:
indexの置換が上手くいかず、".html"になることがあったので修正しました。
20070314追記:
Wayfinder(1.0.1)ではこの変更が効きません。
--- assets/snippets/wayfinder/wayfinder.inc.php Tue Mar 13 23:49:05 2007 +++ assets/snippets/wayfinder/wayfinder.inc.php Tue Dec 19 19:01:07 2006 @@ -141,7 +141,10 @@ $v['link'] = $v['content']; } } else { - $v['link'] = $modx->makeUrl($v['id']); + if (!empty($v['alias'])) + $v['link'] = $modx->makeFriendlyURL($this->config['friendly_url_prefix'], $this->config['friendly_url_suffix'], $v['alias']); + else + $v['link'] = $modx->makeUrl($v['id']); } $v['level'] = $curLevel; $v['first'] = $firstItem;
このパッチを当てることで同様の動作をするようになります。

No Comments yet »
コメント RSS TrackBack URI
コメントをどうぞ