node.tpl.php módosítása

szt képe

Sziasztok!

Kezdő Drupalosként módosítottam a node.tpl.php-t, mert hirtelen nem találtam más megoldást a dátumkezelésre:

<?php
switch($language){
   case "hu":
      print '<span class="date">'.format_date($node->created, 'custom', "Y. F j., l").'</span> ';
      break;
   default: //english
      print '<span class="date">'.format_date($node->created, 'custom', "D F j, Y").'</span> ';;
} // switch
?>

Tudom, hogy nem jó így, mert más nyelvekre manuálisan kell módosítani, sminkfrissítésnél újra be kell írni stb. De működik.
Szóval ez mennyire gáz? Biztos van jobb/elegánsabb/szebb/stb. megoldás.
Ti hogy csinálnátok/csináljátok?

Köszi!

Drupal verzió: 
Fórum: 
aboros képe

akkor meg hibátlan! :)

a megoldásoddal az a probléma (klasszik template butchering), hogy eltöri a drupal néhány funkcióját, például azt a képességet, hogy a beküldés dátumának kiírását a sminkbeállításoknál lehet tartalomtípusonként engedélyezni/tiltani. nagy gáz lehet később az is, ha például több node-TYPE.tpl.php is van a sminkedben, akkor ezt a megoldást mindegyikben alkalmaznod kell és "karbantartani".

a "drupalish" megoldás az lenne, ha a sminked template.php -jában a theme_node_submitted sminkfüggvényben végeznéd ezt a módosítást.
itt a dokumentáció és eredeti fgv:
http://api.drupal.org/api/function/theme_node_submitted/6

így kéne a template.php -ban:

function SMINKEDNEVE_node_submitted($node) {
  switch($language){
   case "hu":
      $translated_date = format_date($node->created, 'custom', "Y. F j., l");
      break;
   default:
      $translated_date = format_date($node->created, 'custom', "D F j, Y");
  }
  return t('Submitted by !username on @datetime',
    array(
      '!username' => theme('username', $node),
      '@datetime' => $translated_date,
    ));
}

hogy működjön, ürítened kell a smink regisztrációs tárat!

0
0

-
clear: both;

szt képe

ki is próbálom :)

0
0
szt képe

ahogy mondtad, de sajna nem történik semmi.
A sminkem bizonyos Marinelli (http://drupal.org/project/marinelli).
A http://api.drupal.org/api/function/theme_node_submitted/6 linken megadott mintakódot is kipróbáltam: szintén semmi változás.
Van egy gyanúm viszont: az eredeti smink node.tpl.php-jában van ez a kódrészlet:

<div class="metanode">
  <p><?php print t('By ') .'<span class="author">'. theme('username', $node).'</span>' . t(' - Posted on ') . '<span class="date">'.format_date($node->created, 'custom', "d F Y").'</span>'; ?></p>
</div> 

Eredetileg én is csupán ezt írtam át.
De ez nem azt jelenti, hogy már az eredeti smink is a "template butchering" méltán szidott módszerével van elkészítve? Azaz én hiába babrálom a template php-t, semmi nem fog történni?
Vagy rosszul értelmezek (újra) valamit?
0
0
aboros képe

hogy ne az eredeti legyen, hanem helyette ez:

<div class="metanode">
  <?php print $submitted; ?>
</div>

és amikor először beírod a theme_node_submitted() sminkhurkot a template.php -ba, akkor utána ürítened kell a smink regisztrációs tárat ám.

0
0

-
clear: both;

szt képe

Kedves aboros!
A kódod kitűnően megy, csak a nyelvhivatkozást kellett átírnom, szóval a végleges:

<?php
function phptemplate_node_submitted($node) {
  switch($node->language){
   case "hu":
      $translated_date = format_date($node->created, 'custom', "Y. F j., l");
      break;
   default:
      $translated_date = format_date($node->created, 'custom', "D F j, Y");
  }
  return t('Submitted: by !username on @datetime',
    array(
      '!username' => theme('username', $node),
      '@datetime' => $translated_date,
    ));
}
?>

Még1x köszi!

PS:
A smink regisztrációs tárat nekem nem kellett bántanom, anélkül is ment. Nekem itt: admin/settings/performance minden le van tiltva, azért? Vagy a smink regisztrációs tár egy más(hol beállítandó) dolog?

0
0
hosszu.kalman képe

A smink regisztrációs tár azt jelenti, hogyha létrehozol egy új fgv-t a template.php-ban, vagy módosítód az info fájlt, akkor a változások nem történnek meg addig amég azt nem üríted.

Tehát pl. ha létre akarsz hozni egy új régiót a blokkoknak az info fájlban, akkor nem fogod látni ameddig nem üríted. De ugyanez történik, ha egy új fgv-t hozol létre a template.php-ban (esetünkben a phptemplate_node_submitted() fgv-t).

Pl úgy tudod üríteni a tárat (legalábbis én úgy így szoktam), hogy bemegyek a sminkek beállítási oldalára (admin/build/themes), és nyomok egy mentést.

0
0