あちあち情報局

趣味や日曜プログラムなどを書いています

ユーザ用ツール

サイト用ツール


dokuwiki:tpl-edit

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
dokuwiki:tpl-edit [2018/11/25 07:45] – [使い方] 管理者dokuwiki:tpl-edit [2018/12/20 07:54] (現在) – [ソースコード] 管理者
行 1: 行 1:
 +====== 📝DokuWikiテンプレート編集用PHP ======
 +DokuwikiにはWeb側からテンプレートを編集できる機能が無いので、編集機能をPHPで作って見ました。
 +----
 +<html>
 +<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
 +<!-- respon_0 -->
 +<ins class="adsbygoogle"
 +     style="display:block"
 +     data-ad-client="ca-pub-9251612436023685"
 +     data-ad-slot="1409739163"
 +     data-ad-format="auto"></ins>
 +<script>
 +(adsbygoogle = window.adsbygoogle || []).push({});
 +</script>
 +</html>
 +
 +===== 使い方 =====
 +DokuWikiのサイト設定の「PHP埋め込み」と「HTML埋め込み」を有効にして、下記のソースコードをDokuWikiのページに張り付けるだけです。(編集するテンプレートにより一部が書き換えが必要:下記参照)
 +
 +貼り付けたページを表示するとテンプレートの内容がフォームに表示されるので編集して保存ボタンを押すとテンプレートが更新されます。
 +
 +更新してもキャッシュが有効になっていると即座に反映されません、管理のサイト設定を保存するとキャッシュがクリアされます。(それが面倒なら文中の「touch ('./conf/local.php');」のファイルパスを確認してコメント化を解除してください。キャッシュのタイムスタンプを更新してキャッシュをクリアします)
 +
 +DokuWikiのテンプレートは複数に分かれているためソースコード中の「編集するファイル名」の部分を編集したいテンプレートのファイル名に書き直して下さい。
 +
 +^標準テンプレートメイン^
 +|./lib/tpl/dokuwiki/main.php|
 +^標準テンプレートメディア^
 +|./lib/tpl/dokuwiki/mediamanager.php|
 +^標準テンプレート画像詳細^
 +|./lib/tpl/dokuwiki/detail.php|
 +^標準テンプレートヘッダ部^
 +|./lib/tpl/dokuwiki/tpl_header.php|
 +^標準テンプレートフッター部^
 +|./lib/tpl/dokuwiki/tpl_footer.php|
 +
 +**使用上の注意**
 +  * 同時に複数のユーザー(プロセス)からの編集には対応していません。同時に保存するとテンプレートファイル破損する可能性があります。
 +  * 外部ユーザーがアクセスできるページに張り付けると誰でもテンプレートを書き換えれてしまいセキュリティー上危険ですので管理者専用のページにてご利用ください。
 +  * テンプレート記述を間違えるとDokuWikiが正しく表示されなくなるので事前にバックアップを行って下さい。
 +  * Google Chromeを使用してると、保存ボタンを押した後「このページは動作していません」と表示されますがデータは保存されています。ブラウザの戻るで戻り再表示して下さい。
 +  * ご利用は自己責任で。無保証。
 +
 +===== ソースコード =====
 +<code php>
 +~~NOCACHE~~
 +<html>
 +<style>
 +.textareaset{width:100%;height:300px}
 +</style>
 +</html>
 +<php>
 +//編集するファイル名
 +$fileName="./lib/tpl/dokuwiki/main.php";
 +
 +//ファイルを開く
 +$fileText=file_get_contents($fileName);
 +
 +//保存分岐
 +if($_POST['save']){
 +  if (md5($fileText)===$_POST['save']){
 +    //保存処理
 +    $fileText=$_POST['data'];
 +    file_put_contents($fileName,$fileText);
 +    //※キャッシュファイルのタイムスタンプを更新
 +    //touch ('./conf/local.php');
 +    echo '<p>保存成功</p>';
 +  }else{
 +    //保存失敗
 +    echo '<p>保存失敗</p>';
 +  }
 +}
 +
 +//PHPのURL
 +$url= (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
 +//無害化
 +$url=urlencode($url);
 +$fileText=htmlspecialchars($fileText, ENT_QUOTES);
 +
 +//編集フォームの表示
 +echo '<form action="'.$url.'" method="post">';
 +echo '<input type="hidden" name="save" value="'.md5($fileText).'">';
 +echo '<textarea class="textareaset" name="data">'.$fileText.'</textarea>';
 +echo '<input type="submit" value="保存">';
 +echo '</form>';
 +</php>
 +</code>
 +
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki