Posted by gson on May 14, 2009 at 7:06pm
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
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 hetamytheme_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 > Prestandaoch 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
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
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