Hirdetés

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

  • Sk8erPeter

    nagyúr

    válasz Siriusb #203 üzenetére

    "Egyébként én mindent cache-t ki szoktam kapcsolni, amíg turkálok, így is néha kell egy plusz ctrl+f5, hogy frissüljön a böngésző."
    A Drupal attól még bizonyos dolgokat cache-elhet, bár ha Zennél úgy állítottad be, hogy minden oldalfrissítésnél frissítse a theme registry-t, akkor okés, bár eléggé lassítja az oldalbetöltést, tehát nem biztos, hogy mindig érdemes ezt bekapcsolva hagyni, csak legfeljebb akkor, ha tényleg folyamatosan olyan dolgokat pakolsz a template.php-be vagy hasonló helyre, aminél a módosítások után amúgy is üríteni kéne a cache-t.
    Bár ha SSD-n van a webszervered, akkor nagy eséllyel majdnem "mindegy", hogy be van-e kapcsolva, vagy sem. :D

    "Ezt a függvényt nem teljesen értem. Igazából azt furcsállom, hogy nincs bemenet."
    Igen, a bemeneteket lustaságból hagytam le, mert jelen esetben úgysincs szükségem a hook_theme() leírásában látható ($existing, $type, $theme, $path) változókra, egyébként ennek a függvénynek úgyis csak a KIMENETE számít: visszaadsz egy tömböt a modulod/theme-ed által deklarált theme implementation(ök)ről.
    Tehát a bemenet csak segítségül szolgálhat, hasznos lehet bizonyos esetekben, de egyébként nincs rá feltétlenül szükség. A bizonyos eseteknél arra gondolok, hogy mondjuk a már meglévő implementációkból szeretnél kiszedni valami adatot ($existing tömb), esetleg az elérési utat fel akarod használni template fájlhoz ($path string), vagy hasonló. (pl. ha egy template-fájlnak adod át a theme bizonyos változóit [ilyenekre kell gondolni template fájloknál, mint a block.tpl.php és hasonlók]).

    Ha már block, csak hogy megértsd, ehhez hasonló jellegű végül is a hook_block_info() is, ott sincs elvárt BEMENET, csupán elvárt KIMENET! Itt előre szólsz a Drupalnak, hogy a modulod milyen blokkokat fog definiálni. Aztán a hook_block_view() megfelelő implementációját is elő fogja venni a Drupal, és szintén elvár egy kimenetet, de itt viszont már fontos a bemenet is, vagyis a $delta változó, ami megmondja, hogy épp melyik blokkot is szeretné renderelni az általad megadottak alapján a Drupal.

    =========================================

    Abból, hogy "a megfelelő helyre megy", számomra nem sok derül ki. :P
    Ettől függetlenül értem, mire gondolsz.
    Tulajdonképpen abból a szempontból jogos, amit mondasz, hogy bár magában az AKTÍV theme-ben definiálod a theme megfelelő implementációját, és ott is implementálod (ez elég kemény magyar mondat volt...), végül is az engedélyezett modulok még úgy emlékszem (most, hogy mondod), végezhetnek rajta módosítást egy megfelelő preprocess függvénnyel.

    Jelen esetben én csak magára a theme-re koncentráltam, az ott végzett módosításokra, mert nagyon ragaszkodtál hozzá, hogy mindent a template.php-ből végezz el.
    TEHÁT A TE HIBÁD AZ EGÉSZ!!! :DD :DDD

    Na jó, akkor most megmutatom a legjobb változatot, ahol MODULBAN implementálom a hook_theme-et, ott hozom létre a megfelelő theme_ kezdetű fájlt is, majd ezt abban a theme-ben bírálod felül, amelyikben csak akarod:

    /**
    * Implements hook_theme()
    */
    function myModule_theme($existing, $type, $theme, $path) {
    return array(
    'links__locale_block' => array(
    'variables' => array('links' => NULL, 'attributes' => array('class' => array('links')), 'heading' => array()),
    ),
    );
    }

    /**
    * @see theme_links()
    *
    * @param array $variables
    * @return string
    */
    function theme_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 theme('links', $variables);
    }

    Így már biztos, hogy a Drupal-konvenciók szerint fog működni a dolog. :)
    Persze ha nagyon akarod, mindezt a template.php fájlban is megcsinálhatod, de ideje leszakadni kicsit a template.php-ről, és modult fejleszteni. :D

    Ha a fentit szeretnéd felülbírálni egy theme-ben, akkor a theme_ előtagot helyettesítsd a sajátThemeNeve_ előtaggal, pl. ha a subtheme-ed neve zenTest, akkor:

    function zenTest_links__locale_block($variables){
    // ... a fentit kimásolod, aztán a megfelelő módosításokat elvégzed!!
    }

    [ Szerkesztve ]

    Sk8erPeter

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