Yii Framework Forum: Gestione dei miei contenuti multilingua ... - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Gestione dei miei contenuti multilingua ... Rate Topic: -----

#1 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 04 March 2011 - 04:46 AM

Premetto che sto utlizzando la classe CDbSourceMessage per gestire i miei contenuti multilinuga. Premetto anche che la voglio usare in un modo leggermente differente: nel codice scriverò Yii::t('categoria','messaggio'); ma messaggio sarà un "identificatore" nel senso che nella tanbella Message avrò ANCHE il messaggio in italiano. Per essere più precisi avrò TUTTE le tradizioni. Questo perchè devo gestire grossi quantitativi di testo e perchè voglio abilitarmi a gestire totalmente il contenuto della pagina.

Per chi non usa o non ricorda come funziona CDbMessageSource

Quote

Ci sono due tabelle: MessageSource che fa riferimento ai testi che noi scriviamo nel codice (appunto i messaggi del source) e Message che contiene le traduzioni. Usare Yii::t() mi sembrava decisamente scomodo per testi di intere pagine web. Da qui l'idea di inserire comunque in Message ANCHE le traduzioni in italiano.


Un'altra premessa va fatta per quanto riguarda Jquery: utilizzo un widget che, vi ricordo, ad ogni nodo prevede un array del tipo:
array(
    'text' => 'testo che appare',
    'chilndren' => array(
         array(
            array('text' => 'nodo figlio'),
            array('text' => 'nodo figlio'),
            array('text' => 'nodo figlio'),
            array('text' => 'nodo figlio'),
         )
    ),
);


Detto questo, ho iniziato ad arricchire il mio model in questo modo: un metodo per caricare tutte le categorie, uno per contare il numero di messaggi, uno per restituire tutti i testi di una categoria, uno che restituisse l'intero albero.


  public static function findAllCategory() {
    return SourceMessage::model()->findAll(array(
        'select' => 'distinct(category)',
    ));
  }

  public static function countHowManyCategory($category) {
    $arrayCounter = SourceMessage::model()->findAll(array(
          'select' => 'count(category) category',
          'condition' => 'category=:category',
          'params' => array(
              ':category' => $category,
          )
      ));
    foreach ($arrayCounter as $item)
      return $item['category'];
  }

  public static function findAllTextsInACategory($category) {
    $message = SourceMessage::model()->findAll(array(
          'select' => 'message,id',
          'condition' => 'category=:category',
          'params' => array(
              ':category' => $category,
          )
      ));
    $messages = array();
    foreach ($message as $item)
      $messages[] = array(
          'text' => $item['message'],
          'children' => array(
              array('text' => 'it'),
              array('text' => 'en'),
          )
      );
    return $messages;
  }

  public static function contentTree() {
    $arrCategories = array();
    foreach (SourceMessage::findAllCategory() as $item) {
      $arrCategories[] = array(
          'text' => $item['category'] . ' ' . SourceMessage::countHowManyCategory($item['category']),
          'children' => SourceMessage::findAllTextsInACategory($item['category']),
      );
    }
    return $arrCategories;
  }



Ho fatto bene? Vi sembra una buona soluzione? Seguirò con l'uso di TinyMCE che ho già incluso nel mio progetto. L'idea è quella di avere tutti i contenuti raggiungibili da una struttura ad albero da un lato, e l'editor tinymce dall'altro.

Attached File(s)


0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users