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

  • Sk8erPeter

    nagyúr

    válasz Siriusb #93 üzenetére

    ... és ím' Sk8erPeter ama kürt hívószanának hallatán jövé' vala, ama nemes szándéktól vezérelvén, hogy bajtársát mielőbb igyekezzék kisegíteni ama nehéz időkből. :DD

    Szóval valóban NAGYON rút az a megoldás. :P

    Most olyan megoldásokat mondok, amik elsőre eszembe jutnak (lehet még több is):

    1.) /contact elérési út helyett másik használata (pl. /contact-us), saját statikus tartalom belerakása egy adott node-ba - de gondolom Te szeretnéd inkább mégis ezt az elérési utat használni. Bár mégis ez lenne a lehető legegyszerűbb.

    2.) Contact modul kikapcsolása, saját node létrehozása a statikus tartalommal, ennek beállítása a /contact elérési útra - nem olyan jó megoldás, mert ütközés van, ha később mégis be akarod kapcsolni a Contact modult.

    3.) page-contact.tpl.php módosítása; a következő sor kikommentezése (Zen esetén):

    <?php print $content; ?>

    és ennek lecserélése a saját, statikus tartalomra, tehát így:

    <div id="content-area">
    <?php print $content; ?>
    </div>

    HELYETT

    <div id="content-area">
    <?php
    // print $content;
    ?>
    asdlkjasdlkasjdlkasjdklasjd
    </div>

    - szintén NEM túl szép megoldás.

    4.) Modulban - mindenképp hozz létre egyet, úgyis hasznát fogod még venni! :)

    Mutatok egy példát (úgy tudom, 6-ost használsz!):

    A modult kiegészítem egy általam írt függvénnyel, aminek szerintem debuggolásnál még hasznát veheted: var_export_drupal_set_message() - ez tulajdonképpen a keveréke a var_export() és drupal_set_message() függvényeknek. Így könnyen kiírathatod a változók értékeit, ott mutatja, ahol a státuszüzeneteket. Mutatok is a használatára példát: kiíratom a $form_id változó értékét. Egy-két helyen kommentként benne hagytam egyéb példákat, amiket felhasználhatsz debuggolás céljára.

    Elérési út (ide pakold a modult!!):
    sites/all/modules/modSiriusb

    Ezenbelül a két fő fájl, ami szükséges:

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

    modSiriusb.info

    ; $Id$
    name = "Siriusb - Test module"
    description = "Test Module by Siriusb"
    package = "Siriusb"
    core = "6.x"
    php = 5.2

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

    modSiriusb.module

    <?php

    // $Id$

    /**
    * @file
    * Siriusb's test module.
    */
    define('SIRIUSB_MODULE_MACHINE_NAME', 'modSiriusb');

    /**
    * Sets a Drupal message which outputs a parsable string representation of a variable
    *
    * @param mixed $var The variable of which we would like to output a parsable string representation
    * @param string $text The message to output
    * @param string $type The type of the message
    * - 'status'
    * - 'warning'
    * - 'error'
    *
    * @see http://php.net/manual/en/function.var-export.php
    * @see http://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/drupal_set_message/6
    */
    function var_export_drupal_set_message($var, $text, $type = 'status') {
    // $type: e.g. 'status'
    drupal_set_message($text . ': <pre>' . var_export($var, TRUE) . '</pre><hr />', $type);
    }

    /**
    * Implementation of hook_form_alter()
    */
    function modSiriusb_form_alter(&$form, &$form_state, $form_id) {
    // var_export_drupal_set_message(__FUNCTION__, 'function');

    // teszt célból kiírjuk a $form_id-t --> csak debug-célra, használat után ELTÜNTETNI!
    var_export_drupal_set_message($form_id, '$form_id');
    }

    /**
    * Implementation of hook_form_FORM_ID_alter()
    */
    function modSiriusb_form_contact_mail_page_alter(&$form, &$form_state){
    // var_export_drupal_set_message(__FUNCTION__, 'function');
    // var_export_drupal_set_message($form, '$form...');
    // var_export_drupal_set_message($form_state, '$form_state...');

    $form['#after_build'][] = 'modSiriusb_form_contact_mail_page_alter_after_build';
    }

    function modSiriusb_form_contact_mail_page_alter_after_build(&$form, &$form_state) {
    // eltüntetjük az eredeti formot
    unset($form);

    // új tartalmat teszünk bele a $form változóba
    $form['contact_info'] = array(
    '#value' => '<div>Ide jön a saját tartalmad!</div>',
    );
    return $form;
    }

    Az érdekesség az, hogy csak az #after_build függvényben eltüntetve működik úgy, ahogy akarjuk most (eltüntetni, majd felülbírálni a contact formot).
    A modSiriusb_form_contact_mail_page_alter() függvényben viszont plusz esetleges saját mezőket is lehet hozzáadni (meg persze a modSiriusb_form_contact_mail_page_alter_after_build() függvényben is).
    Fontos tudni, hogy az #after_build függvényekben vissza kell térni a $form változóval.

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

    Ettől függetlenül talán még mindig az tűnik a legkevésbé erőforrásigényesnek, ha saját node-ot létrehozol, és ezt beállítod pl. a /contact-us címre. A Contact modult meg addig kikapcsolhatod, amíg nincs szükséged rá.

    Remélem segítettem!

    Sk8erPeter

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