Använda fullständiga namnet vid citering av inlägg

Events happening in the community are now at Drupal community events on www.drupal.org.
gson's picture

Några av de moduler som är installerade:

  • CCK
  • Content Profile - för att skapa profiler som noder
  • Views
  • RealName
  • Quote
  • Forum
  • Advanced Forum

I CCK har jag utökat innehållstypen Profil till att innehålla bland annat detta:

  • Förnamn (textfält)
  • Efternam (textfält)

Jag använder mig av modulen RealName för att "theme('username', ...) ska visa Förnamn + Efternamn istället för användarnamnet. Detta funkar bra för det mesta utom för modulen Quote. När man citerar ett inlägg så visas användarnamnet istället för (theme('username', ...). Det ska gå att göra om utmatningen genom att skriva över theme_quote, men jag får inte till det.

Någon som har ett tips på hur jag ska gå tillväga för att få en fungerande lösning som inte bygger på modifierad kod av modulen Quote?

Comments

Du skriver över

dixon_'s picture

Du skriver över temafunktioner genom att skapa samma funktion filen template.php som ska ligga i din temamapp. Men istället för att funktionen ska heta theme_quote() ska den nu heta mytheme_quote() där "mytheme" representerar namnet på ditt tema.

När du gjort dina modifieringar är det viktigt att du tömmer cachen så att Drupal läser in alla nya temafunktioner! Gör du inte detta kommer dina ändringar inte att ha någon effekt. Du tömmer cachen genom att navigera genom Administrera > Inställningar > Prestanda och klicka på knappen nästan längst ner där det står "Töm cache" eller något liknande.

--

It's all about simplicity - Senzilla

Tack för bra och utförlig

gson's picture

Tack för bra och utförlig hjälp, men jag lyckas ändå inte få till det.
Jag har provat att skriva över funktionen genom att anropa den i phptemplate.
I modulen Quote hittar man i funktionen längst ned:

/**
* Theme a quote with its content and author - default theme function.
*
* @param $quote_content
*   The quote's string content.
* @param $quote_author
*   The quote author's name.
*
* @return $output_quote
*   Themed quote.
*/
function theme_quote($quote_content, $quote_author) {
  $quote_output = '<div class="quote-msg">';
  if ($quote_author != '') {
    $quote_output .= '<div class="quote-author">'. t('%name wrote:', array('%name' => $quote_author)) .'</div>';
  }
  else {
    $quote_output .= '<div class="quote-author">'. t('Quote:') .'</div>';
  }
  $quote_output .= $quote_content;
  $quote_output .= '</div>';

  return $quote_output;
}

Problemet är att $quote_author anges längre upp i modulen. Närmare bestämt i funktionen:

/**
* Implementation of hook_form_alter().
/
function quote_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'comment_form' && isset($_GET['quote']) && $_GET['quote']) {
    $nid = arg(2);
    $cid = arg(3);

    if ($cid) {
      $comment = db_fetch_object(db_query('SELECT c.
, u.uid, u.name AS registered_name FROM {comments} c INNER JOIN {users} u ON c.uid = u.uid WHERE c.cid = %d AND c.status = 0', $cid));

      if ($comment->uid) {
        $author = $comment->registered_name;
// Tidigare fick jag ut förnamnet och efternamnet genom att skriva över ovanstående rad med
// theme('username', $comment) men det fungerar inte längre. Namnet skrivs ut, men funktionen skickar
// även med en länk till profilen som blir korrupt fastän jag använter ett inmatningsfilter som tillåter HTML.

      }
      else {
        $author = (!empty($comment->name)) ? $comment->name : variable_get('anonymous', 'Anonymous');
      }
      $quote = $comment->comment;
      $subject = $comment->subject;
    }
    elseif ($nid && _quote_variable_get('node_link_display')) {
      $node = node_load(array('nid' => $nid));
      if (in_array($node->type, _quote_variable_get('node_types'))) {
        $quote = $node->body;
        $author = !empty($node->name) ? $node->name : variable_get('anonymous', 'Anonymous');
      }
      else {
        return;
      }
    }
    else {
      return;
    }
    // Add quoted text and preserve existing content (signature etc.).
    $form['comment_filter']['comment']['#default_value'] = '[quote='. $author .']'. trim($quote) ."[/quote]\n". $form['comment_filter']['comment']['#default_value'];
    if (_quote_variable_get('subject_required')) {
      $form['subject']['#required'] = TRUE;
    }
  }
}

Någon som har förbarmande och kan leda mig på rätt väg?

Fallet löst

itangalo's picture

Det verkade vara någon form av bugg som gjorde att det inte fungerade som det skulle.
Se http://drupal.org/node/364871 för mer information.

//Johan Falk, NodeOne
**
Vill du lära dig mer om Drupal? Kolla in samlingen av tips och guider!
Har du en fråga om Drupal? Missa inte FAQ-sidan på forumet!
Kolla in min senaste guide: Hundra småsteg för att självlära sig Drupal 6

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: