Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Siriusb

    veterán

    válasz Sk8erPeter #194 üzenetére

    Nos, nézzük a listát, ahol látható, hogy a node title eredetileg a "második" értékkel bír:
    [link]

    Node:
    [link]

    Miután alkalmazom a pathauto modult: Automatically generate the title and hide the title field, eltűnik az általam megadott title, helyére a generált érték kerül AutoNodeTitle-kettes:
    [link]

    Tehát, nem tudom megőrizni a manuálisan megadott title-t, amit ÉN láthatnék a content list - ben, de amit nem látnának a látogatók, hiszen számukra egy külön előállított title lenne (mindenhol, minden HTML elemben, hiszen a teljességre törekszünk).

  • Sk8erPeter

    nagyúr

    válasz Sk8erPeter #194 üzenetére

    Alábbiakban leírom, hogyan változtattam meg a Language switcher block linkjeinek "title" attribútumát.
    Két fontos info:
    - az én theme-em neve zenTest (Zen theme subtheme-je), ezt az elnevezést fogom használni a továbbiakban, ez cserélendő a saját theme-etek nevére
    - korábban megváltoztattam a node címét egy modullal, a hook_node_view() implementálásáért felelős függvényben.

    1.) Először megnéztem a language switcher block-ot Theme Developerrel (must-have): [link]. Ahogy a képen látható, a title attribútum tényleg nem változott a nyelvi linkeknél, pedig a címet már megváltoztattam korábban a modullal, ahogy fentebb említettem (látszik is a "Test field's value" rész a címben, az azután lévő "original:" után lévő rész az eredeti cím!!).
    Ha a nyelvi link fölé viszem az egeret, még mindig a régi cím jelenik meg: [link].
    2.) Megnéztem a "Candidate function names"-nél felajánlott nevet: "links__locale_block" - tehát kell nekem majd egy theme_links__locale_block() függvény.
    3.) Megkerestem a theme_links() függvényt a hivatalos Drupal-oldalon. Ezt úgy, ahogy van, bemásoltam a template.php fájlomba, majd a függvény nevét theme_links-ről átneveztem zenTest_links-re, mert nálam zenTest az aktív theme neve.
    4.) Létrehoztam a zenTest_links__locale_block függvényt (úgy tűnik, nem is kell a sima theme_links__locale_block!), majd beletettem ezt:

    /**
    * @see zenTest_links()
    *
    * @param array $variables
    * @return string
    */
    function zenTest_links__locale_block($variables) {
    $node = menu_get_object();
    if ($node->nid) {
    if ($node->type == 'test_multilingual_type') {
    $myTestFieldValue = $node->field_title_for_test['und'][0]['value'];
    foreach ($variables['links'] as $langcode => $langLinksArray) {
    $variables['links'][$langcode]['attributes']['title'] = t('!myTestFieldValue (original: !originalTitle)', array(
    '!myTestFieldValue' => $myTestFieldValue,
    '!originalTitle' => $langLinksArray['attributes']['title'],
    )
    );
    }
    }
    }

    return zenTest_links($variables);
    }

    5.) Létrehoztam a zenTest_theme() függvényt:

    /**
    * Implements hook_theme()
    *
    * @return array
    */
    function zenTest_theme() {
    return array(
    'links__locale_block' => array(
    'variables' => array('links' => NULL, 'attributes' => array('class' => array('links')), 'heading' => array()),
    ),
    );
    }

    6.) Empty cache (enélkül nem megy!), majd próba.

    A változtatás után: [link].

    A komplett kód tehát:
    http://pastebin.com/iLJcmX3K

Új hozzászólás Aktív témák