いつものように、良い正規表現を書くのに苦労します。
記事のタイトルの右側にあるコアによって生成されるオプションの印刷、電子メール、および PDF ボタンにボタンを追加する Joomla 用のプラグインを作成しようとしています。成功すれば、GPL の下で配布します。私が見つけた例はどれもうまくいかないようで、PHPのみのソリューションを作成したいと思います.
アイデアは、記事のタイトルに Joomla 出力の固有のパターンを使用し、1 つ以上の正規表現のボタンを使用することです。正規表現の 1 つは、クラスが「contentpaneopen」のテーブル (ページ内にいくつかあります) を探し、クラスが「contentheading」のセルを含むテーブルを見つけることで、適切なテーブルを見つけます。2 番目の正規表現は、そのテーブルにクラス "buttonheading" のセルがあるかどうかを確認できます。これらのセルの数は 0 から 3 まで可能ですが、最初の正規表現が複数の一致を返す場合は、このチェックを使用できます。これで、テーブルを同じテーブルに置き換えたいと思いますが、追加したいボタンを保持する余分なセルを使用します。これを行うには、最後の行とテーブルの終了タグを削除し、ボタン セルを挿入してからそれらの終了タグを再度追加します。
通常の Joomla 出力は次のようになります。
<table class="contentpaneopen">
<tbody>
<tr>
<td width="100%" class="contentheading">
<a class="contentpagetitle" href="url">Title Here</a>
</td>
<td width="100%" align="right" class="buttonheading">
<a rel="nofollow" onclick="etc" title="PDF" href="url"><img alt="PDF" src="/templates/neutral/images/pdf_button.png"/></a>
</td>
<td width="100%" align="right" class="buttonheading">
<a rel="nofollow" onclick="etc" title="Print" href="url"><img alt="Print" src="/templates/neutral/images/printButton.png" ></a>
</td>
</tr>
</tbody>
</table>
コードは大まかに次のようになります。
$subject = $article;
$pattern1 = '[regex1]'; //<table class="contentpaneopen">etc</table>
preg_match($pattern, $subject, $match);
$pattern2 = '[regex2]'; //</tr></tbody></table>
$replacement = [mybutton];
echo preg_replace($pattern2, $replacement, $match);
適切な正規表現がなければ、残りのコードを実行する意味がほとんどないため、誰かがそれを手伝ってくれることを願っています!