Frontierのweb authoring機能でrelative URLを実現しているscriptは、
system.verbs.builtins.html.data.standardMacros.glossaryPatcher
ですが、まともに動いた試しがありません。中身をよくよく見てみると、どう見てもまともに動くようには思えません。 そこで、思い切って自分で作ってみました。
自分は、Frontier 5.0.2b20を使っています。Frontier 5.0.1なら、きっと、多分、Maybe、perhaps、動いたら良いなとは思いますが、さてどうでしょうか。。。Ftontier 4.2.3ではきっと動かないでしょう。
file "workspace.glossaryPatcher"を Double Clickすると、私が改造したglossaryPatcherはroot.workspaceに取り合えずinstallされます。勇気のある方は、system.verbs.builtins.html.data.standardMacros.glossaryPatcherと差し替えてください。
glossaryPatcherに対応した、glossaryのentryは以下のような形式です。
[ [#glossPatch linkText|path to linked page|] ]
ここで、
具体的には、
[ [#glossPatch C&T Changer|scriptfactory/ScriptGallery/C&TChanger/C&TChanger.html|] ]
という感じになります。 これはすなわちC&T ChangerというTextにlinkが張られて、scriptfactoryというtableの1階層上に#ftpsiteを自分は置いており(具体的には、website.public_html)、website.public_html.scriptfactory.ScriptGallery.C&TChanger.C&TChangerというobject database上のpageから生成されたhtml fileにlinkを張りたいんだよ!!という事になります。
Ftontier5では、pageのrenderingに伴うglossaryへのentryはtableの形式ですが、rendering中に上のように焼き直されるみたいです。
では、本題に入ります。ここからどうやってrelative URLを生成するか。
いま、publishしたいpageが、scriptfactory.scriptGrabyard.indexだとしましょう。
originalでは、一度、#ftpsiteまで登って、そこからまた下っていくようなrelative URLが生成されます。 こんな感じになります。
../../../scriptfactory/ScriptGallery/C&TChanger/C&TChanger.html
頭が悪すぎますね。いまほしいrelative URLは
../ScriptGallery/C&TChanger/C&TChanger.html
です。Originalのscriptが何故#ftpsiteまでの階層を数えているのか自分には良く解りませんが、まったく違ったapprochを取ります。
いま、publishしたいpageの#ftpsiteからのpathとlinkを張りたいpageの#ftpsiteからのpathがわかっているので、"/"をstring.nthFieldの区切り文字として一致している部分を頭から削って行きます。上記の例で行くと、
publishしたいpageのURLは scriptGrabyard/index.html
linkしたいpageのURLは ScriptGallery/C&TChanger/C&TChanger.html
迄、削れます。 そしてここからpublishしたいURLの階層を調べて、今の場合は1階層なので、../を1つlinkしたいURLの頭につけます。 すなわち
.../ScriptGallery/C&TChanger/C&TChanger.html
として、relative URLのでき上がりです。
Tetsuro Kurita scriptfactory@mac.com |
This page was last built on 1999.9.5; 4:25:24 AM with Frontier 5. At the moment I am using Macintosh to work on this website. Thanks for checking it out! |