Přeskočit přímo na text


Správa prekladov node cez views

Robím teraz viacjazyčný web a chcel som do administrácie vložiť možnosť zobrazenia všetkých prekladov pre aktuálny node (v jednom riadku). Nejak sa mi k tejto téme nepodarilo nič nájsť a tak som si pomohol PHP Views Customfield a takýmto kúskom kódu:

<?php
/**
 * show all possible translations edit or create links
 * you need fields before this customfield (excluded from display)
 * - Node: nid
 * - Node translation: Translation set node ID
 */

// get all enabled languages
$languages = language_list();

$node_nid = $data->node_tnid ? $data->node_tnid : $data->nid;
$node_language = $data->node_node_language ? $data->node_node_language : $data->node_language;

// get all translations for node
$node_translations = translation_node_get_translations($node_nid);

$translate_links = array();
foreach ($languages as $language_code => $language_settings) {
  // source language without link
  if ($language_code == $node_language) {
    $translate_links[] = 'Source: ' . strtoupper($language_code);
    continue;
  }

  if (!empty($node_translations[$language_code])) {
    // edit translation for language
    $translate_links[] = l(strtoupper($language_code), 'node/' . $node_translations[$language_code]->nid . '/edit', array('attributes' => array('class' => 'edit-translation'), 'query' => array('destination' => $_GET['q'])));
  }
  else {
    // create translation for language
    $translate_links[] = l(strtoupper($language_code), 'node/add/image-gallery', array('attributes' => array('class' => 'create-translation'), 'query' => array('translation' => $node_nid, 'language' => $language_code, 'destination' => $_GET['q'])));
  }
}

print implode(' | ', $translate_links);
?>

Používam to pre obrázkovú galériu (metóda podľa Vytvoření pokročilé Fotogalerie v Drupalu – I.) pretože bola požiadavka aby sa nemuseli nahrávať tie isté obrázky viac krát – stačí preložiť (vytvoriť node s prekladom). Ak máte lepšie tipy ako spravovať preklady tak sem s nimi.

Momentálne to vyzerá takto: http://screencast.com/t/NGQ2N2Y5ZT (správa galérií) – http://screencast.com/t/OWJlODdj (view), po kliknutí na názov galérie zoznam obrázkov http://screencast.com/t/MzYzNDdiZD. Všetky prekliky sú upravené tak aby ukazovali vždy na nid (alebo teda tnid) zdroja prekladu, takže by normálne nemal užívateľ vedieť pridávať fotky do prekladovej galérie (aj keď to samozrejme ide).

Pre zobrazenie galérie (aby vždy brala zoznam obrázkov zo „source“) som si musel pridať vlastný token [tnid] http://screencast.com/t/NTQxMTRjNWQ (nechápem prečo default nie je), modul vyzerá takto:

<?php // $Id$

/**
 * @file
 * The Token API module.
 *
 * The Token module provides an API for providing tokens to other modules.
 * Tokens are small bits of text that can be placed into larger documents
 * via simple placeholders, like %site-name or [user].
 *
 * @ingroup token
 */

/**
 * Implementation of hook_token_list().
 */
function bebetv_token_token_list($type = 'all') {
  $tokens = array();
  if ($type == 'node' || $type == 'all') {
    // Node tokens here.
    $tokens['node']['tnid'] = t('Node Translation ID');
  }

  return $tokens;
}

/**
 * Implementation of hook_token_values().
 */
function bebetv_token_token_values($type, $object = NULL) {
  $values = array();
  switch ($type) {
    case 'node':
      // Node tokens here.
      $values['tnid'] = $object->tnid ? $object->tnid : $object->nid;
      break;
  }
  return $values;
}

Snáď sa niekomu takáto metóda zíde.

About the author

Autor je zamestnancom firmy Mogdesign, venuje sa tvorbe a správe WWW stránok ako aj všeličomu inému. :-D

 

Poslat nový komentář

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.
  • You can use Texy! to format and alter entered content.
  • Povolené HTML značky: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <p> <br> <b> <i> <h2> <img> <pre> <sup> <sub> <pre class="php"> <span class="php-keyword1"> <span class="php-var"> <span class="php-num"> <img class="screenshot"> <p class="beginner"> <a class="greybox"> <h3> <h4>

Více informací o možnostech formátování

Mollom CAPTCHA (play audio CAPTCHA)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated.

Drupal meet-up mobilni web 2011

Hledat

Přihlášení

Poslední komentáře