後から考えると、最善の方法は、人々が Drupal 関数を使用してすべてのリンクを作成できるようにすることです。
l
(それは文字 L です)
drupal_get_path()
base_path()
このl()
関数はベース パスの問題を処理し、URL を定義する体系的な方法を提供します。theme_image()
プラス関数のようなものを使用するl()
と、確実に勝ちます。<a>
独自のタグを記述し、 のようなテーマ関数内で使用する必要がある場合は、上記の 2 番目と 3 番目の関数を使用しますtheme_image()
。
しかし、あなたの現在の状況では:
Andy の解決策に関しては、変更を、リンクが配置されていることがわかっている特定のデータベース フィールドに限定できればより良いでしょう。
したがって、これらすべてのフィールド (たとえば、すべての本文フィールド) を選択するクエリを作成します。
$my_query = db_query("SELECT vid, body FROM {node_revisions}");
たとえば、これにより、テーブルbody
内のすべてのフィールドが取得されるnode_revisions
ため、古いリビジョンでも適切なリンクが作成されます。
次に、これらの結果を実行しstr_replace()
、それぞれに対して実行してから、変更を書き戻します。
while($node = db_fetch_object($my_query)) {
$new_body = str_replace('what you have', 'what you want', $node->body);
db_query("UPDATE {node_revisions} SET body = '%s' WHERE vid = %d", $new_body, $node->vid);
}
コードが意図したとおりに動作することを確認するために、最初に 1 つのレコードで試してみます (WHERE vid = 5
たとえば、 を追加して、1 つのリビジョンに絞り込むだけです)。さらに、より一般的な解決策 (ブロック内のテキストを置き換えるなど) を提供するために、ノードを適切にロードおよび保存するのに適しているnode_load
andを利用していません。node_save
sed
ファイルについては、「sites」フォルダー内から次のようなコマンドを実行して、古き良きコマンドをお勧めします。
find ./ -type f -exec sed -i ’s/string1/string2/’ {} \;
ここからそれをつかんだので、詳細についてはそのサイトを見てください。パスを操作する場合は、コマンド/
のバージョンでパスのをエスケープするか、別のセパレータを使用する必要があります (つまり、 の代わりに書くことができるので、 :-の代わりに書くことができます)。 )。クイックコマンドについては、Drupal ハンドブック ページも参照してください: http://drupal.org/node/128513。sed
sed
s#string1#string2#
s/string1/string2/
s#/drupalsite/img/#/img#
s/\/drupalsite\/img\//\/img/
sed
少し混乱しているので、適切な関数を事前に使用することを強制しようとしています。しかし、テーマ担当者に Drupal コンテンツを作成してもらいたいが、「PHP フィルター」入力形式へのアクセスを許可したくない場合、またはテーマ担当者が単に PHP を知らない場合、これは困難です。適切な Drupal テーマ設定は、基本的な HTML/CSS 作業を過ぎた時点で、PHP と Drupal のテーマ関連機能の知識を必要とします。