質問箱/5155

カテゴリその他
サマリAutoAliasと「ページ数が増えすぎてAutolinkが使えない人用パッチ」を併用した状態で、AutoLinkをAutoAliasに優先させたい
バージョン1.5.0
投稿者xito?
状態質問
投稿日2014-11-06 (木) 08:19:59

質問

PukiWiki 1.5.0 に対して、質問箱/4436を参考に、AutoAliasを導入しました。

また「PukiWikiでページが増え過ぎてAutoLinkが使えない人用パッチ」を導入しました。
(上記パッチのURLを貼りたいのですが、なぜかエラーになってしまい、貼れません。お手数ですが検索をお願いします)

それぞれの機能自体は問題なく動いているのですが、AutoAliasがAutoLinkに優先されてしまいます。

(例)「テレビジョン」というページがあり、AutoAliasで「テレビ」を「テレビジョン」にリンクするよう設定した場合、本文中に「テレビジョン」と表記すると、「テレビジョン」全体ではなく「テレビ」部分にのみリンクが貼られる。

「ページ数〜パッチ」を適用しない状態ですと、質問箱/4542のように、lib/make_link.php を編集することで希望通りの動作となりますが、パッチを適用した状態で希望通りの動作とする方法が分かりません。

どのあたりに手を加えれば良いのか、教えていただけると助かります。よろしくお願いいたします。

回答

  • 自作スキンでMonobook for PukiWiki を公開されている方のパッチですかね?http://pukibook.sourceforge.jp/?More_scalable_AutoLink -- 2014-11-06 (木) 14:36:25
  • はい、そうです。なお 1.4.7 でも同じ動作でした。 -- xito? 2014-11-06 (木) 16:05:35
  • パッチを眺めたかんじだとAutoLinkだけ$this->autoconv と外出ししてる気がするので
    $string = preg_replace_callback('/' . $this->pattern . '/x',
    	array(& $this, 'replace'), $string);
    
    if (isset($this->autoconv)) {
    	$string = $this->autoconv->tokenize($string);
    }
    の部分を
    if (isset($this->autoconv)) {
    	$string = $this->autoconv->tokenize($string);
    }
    
    $string = preg_replace_callback('/' . $this->pattern . '/x',
    	array(& $this, 'replace'), $string);
    というように、分割する処理順を入れ替えるぐらいしか思いつかなかった・・・・・(もっといい方法プリーズ)
    これだとプラグイン書式やURLと被るページ名が存在している場合、あれこれ全滅しそう(AutoLinksとAutoLinks(alphabet)が1番目に来て、3番目にInline plugins、以下略となってしまうので) -- 2014-11-06 (木) 18:01:31
    • 優先対象や除外対象を設定だと、それはそれでややこしい事になりそうだしな・・・・・(質問箱/4554
  • 回答ありがとうございます。が、思い通りの動作にならないようで…。難しいものですね。 -- xito? 2014-11-07 (金) 19:15:48
  • そのパッチでのAutoLinkのようにAutoAlias用のパターンを外出しできれば、AutoAliasを最後に持っていく事も可能なのかな? -- 2015-01-12 (月) 22:37:18


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-01-12 (月) 22:37:18
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.175 sec.

OSDN