1

Drupal6でFivestarモジュールを使用しています... http: //drupal.org/project/fivestar

そして、私はテキストを変更したいと思います:

から: Average: *****

これに: Rate this Article: *****

文字列オーバーライドを使用するモジュールをハックしたくないので、template.phpファイルでhook_form_alter関数または同様のものを使用したいと考えています。

HTMLは次のようになります。

<form action="/fall-foliage"  accept-charset="UTF-8" method="post" id="fivestar-form-node-232" class="fivestar-widget"><div>
<div class="fivestar-form-vote-232 clear-block"><input type="hidden" name="content_type" id="edit-content-type" value="node"  />
<input type="hidden" name="content_id" id="edit-content-id" value="232"  /><div class="fivestar-form-item  fivestar-average-stars fivestar-labels-hover">
<div class="form-item" id="edit-vote-wrapper">
<label for="edit-vote">Average: </label>
...etc...

fivestar.moduleのコードは次のようになります。

function theme_fivestar_summary($user_rating, $average_rating, $votes, $stars = 5, $feedback = TRUE) {
  $output = '';
  $div_class = '';
  if (isset($user_rating)) {
    $div_class = isset($votes) ? 'user-count' : 'user';
    $user_stars = round(($user_rating * $stars) / 100, 1);
    $output .= '<span class="user-rating">'. t('Your rating: <span>!stars</span>', array('!stars' => $user_rating ? $user_stars : t('None'))) .'</span>';
  }
  if (isset($user_rating) && isset($average_rating)) {
    $output .= ' ';
  }
  if (isset($average_rating)) {
    $div_class = isset($votes) ? 'average-count' : 'average';
    $average_stars = round(($average_rating * $stars) / 100, 1);
    $output .= '<span class="average-rating">'. t('Average: <span>!stars</span>', array('!stars' => $average_stars)) .'</span>';
  }
4

1 に答える 1

0

fivestar.moduleファイルで「average」ではなく「average」を検索し、賢明な方法で変更できますが、コアモジュールファイルを変更することはお勧めしません(モジュールを更新するたびに、変更は元に戻ります)。

カスタムモジュールを作成し、hook_form_alterを実装してください

例:function YourModuleName _form_alter(&$ form、$ form_state、$ form_id)

$ formを印刷し、「平均」を検索します

$ form [xyz] [xyz]='Average'を$form[xyz] [xyz] ='RatethisArticle'に変更します

フォームでない場合は、hook_nodeapiを使用します

于 2012-10-11T16:18:47.903 に答える