در مطالب قبلی کلیاتی در مورد ماژول نویسی مجنتو ارائه شد. در این مطلب سعی می‌کنیم صفحات مدیریتی برای تنظیمات مربوط به ماژول را ایجاد کنیم.

گام اول: ابتدا وابستگی‌های ماژول را تعریف می‌کنیم تا اولویت بارگذاری آنها حفظ شود.

برای این کار فایل app/etc/modules/RastaAfzar_Pasargad.xml را به صورت زیر ویرایش می‌کنیم و تگ <depends>را اضافه می‌کنیم.

<?xml version="1.0"?>
<config>
  <modules>
    <RastaAfzar_Pasargad>
      <active>true</active>
      <codePool>community</codePool>
      <depends>
        <Mage_Payment />
      </depends>
    </RastaAfzar_Pasargad>
  </modules>
</config>

گام دوم: تنظیمات پیش فرض را در فایل etc/config.xml داخل پوشه ماژول به صورت زیر تعیین می‌کنیم. برای اینکار خطوط زیر را به عنوان فرزند تگ config وارد کنید.

<default>
  <payment>
    <pasargad>
      <active>0</active>
      <model>pasargad/standard</model> <!-- model to handle logic for this payment method -->
      <order_status>pending</order_status>
      <title>Pasargad (http://magento.rastasoft.ir)</title>
      <allowspecific>0</allowspecific>
      <use_store_currency>0</use_store_currency>
    </pasargad>
  </payment>
</default>

توجه کنید که pasargad/standard زیر تگ‌های config→default→payment→pasargad→model اشاره به کلاس مدلی دارد که عملیات اتصال به درگاه بانک را پیاده سازی می‌کند. در مطلب بعدی این کلاس را پیاده سازی می‌کنیم.

برای انجام عملیات خواندن و نوشتن روی پایگاه داده نیاز به دسترسی به adapterهای core_read و core_write از مجنتو داریم. برای تعریف این دسترسی خطوط زیر را به عنوان فرزند تگ <global> تعریف می‌کنیم.

<resources>
  <pasargad_write>
    <connection>
      <use>core_write</use>
    </connection>
  </pasargad_write>
  <pasargad_read>
    <connection>
      <use>core_read</use>
    </connection>
  </pasargad_read>
</resources>

در صورتی که نیاز به ایجاد تغییر در ساختار پایگاه داده حین نصب یا ارتقای ماژول وجود داشته باشد، می‌بایست تگ <resources> را گسترش دهیم. این موضوع در مطالب آتی بیشتر مورد بحث قرار خواهد گرفت.

گام سوم: برای ایجاد فرم‌های مربوط به تنظیمات ماژول خطوط زیر را در فایل etc/system.xml داخل پوشه ماژول وارد کنید. دقت کنید مقادیر پیش فرض active، order_status و title قبلا در فایل etc/config.xml تعیین شده است. تنظیمات merchant_code، terminal_code و public_key نیز در این فایل اضافه شد.

<?xml version="1.0"?>
<config>
  <sections>
    <!-- payment tab -->
    <payment>
      <groups>
        <!-- pasargad fieldset -->
        <pasargad translate="label" module="paygate">
          <!-- will have title 'New Module' -->
          <label>Pasargad (http://magento.rastasoft.ir)</label>
          <!-- position between other payment methods -->
          <sort_order>100</sort_order>
          <!-- do not show this configuration options in store scope -->
          <show_in_default>1</show_in_default>
          <show_in_website>1</show_in_website>
          <show_in_store>1</show_in_store>
          <fields>
            <!-- is this payment method active for the website? -->
            <active translate="label">
              <!-- label for the field -->
              <label>Enabled</label>
              <!-- input type for configuration value -->
              <frontend_type>select</frontend_type>
              <!-- model to take the option values from -->
              <source_model>adminhtml/system_config_source_yesno</source_model>
              <!-- field position -->
              <sort_order>1</sort_order>
              <!-- do not show this field in store scope -->
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>1</show_in_store>
            </active>
            <order_status translate="label">
              <label>New order status</label>
              <frontend_type>select</frontend_type>
              <source_model>adminhtml/system_config_source_order_status_processing</source_model>
              <sort_order>1</sort_order>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>1</show_in_store>
            </order_status>
            <title translate="label">
              <label>Title</label>
              <frontend_type>text</frontend_type>
              <sort_order>2</sort_order>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>1</show_in_store>
            </title>
            <merchant_code translate="label">
              <label>Merchant Code</label>
              <frontend_type>text</frontend_type>
              <sort_order>3</sort_order>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>1</show_in_store>
            </merchant_code>
            <terminal_code translate="label">
              <label>Terminal Code</label>
              <frontend_type>text</frontend_type>
              <sort_order>4</sort_order>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>1</show_in_store>
            </terminal_code>
            <private_key translate="label">
              <label>Private Key</label>
              <frontend_type>textarea</frontend_type>
              <sort_order>5</sort_order>
              <show_in_default>1</show_in_default>
              <show_in_website>1</show_in_website>
              <show_in_store>1</show_in_store>
            </private_key>
          </fields>
        </pasargad>
      </groups>
    </payment>
  </sections>
</config>

مسیر تگ‌های config→sections→payment→groups تعیین کننده جایگاه فرم تنظیمات این ماژول در قسمت مدیریت مجنتو است.

برای مشاهده فرم تنظیمات تعریف شده در فایل etc/system.xml که با مقادیر پیش فرض تعریف شده در etc/config.xml پر شده است، به مسیر system - configurations - payment methods بروید.

افزودن نظر جدید