آموزش نصب دستی بسته ها

Started by mrtarkhan, October 06, 2011, 05:03:49 AM

Previous topic - Next topic

mrtarkhan



آموزش نصب دستی بسته ها

سطح آموزش: ضعیف

توجه: این آموزش مربوط به 14 بهمن 1389 می باشد.

با سلام خدمت تمام کاربران در این تاپیک می خواهیم با همدیگه یاد بگیریم چطور یه بسته نصب میشه، و وقتی یه بسته رو نصب می کنیم چه اتفاقی می افته و در آخر امیدوارم با اطلاعاتی که در این آموزش هست بتونید بسته ها رو به صورت دستی نصب کنید.

برای این کار بنده بسته ی تبلیغات ورژن 2 اس ام اف رو برای مثال در نظر گرفتم. برای شروع توصیه می کنم شما هم دقیقا با ما پیش بیاید تا خودتون استاد بشید تو این کار انشاالله.

دانلود بسته ی تبلیغات برای ورژن 2:

http://custom.simplemachines.org/mods/index.php?mod=255

همانطور که می بینید محتویات بسته شامل فایل هایی به شرح زیره:


Ads.english.php
Ads.php
Ads.template.php
install.php
install.xml
LoadAds.php
package-info.xml
UnInstall.php


اولین کاری که می کنیم: فایل package-info.xml رو با یه ویرایشگر مثل notepad ویندوز باز می کنیم (البته تا حد الامکان از این برنامه استفاده نکنید!)
همانطور که مشاهده می کنید جندتا تگ وجود داره که فکر نکنم نیاز به توضیح داشته باشه فقط کدهای بین تگ install رو توضیح می دم:

اگر دستور فایلی با require-file شروع شده باشه یعنی اینکه اون فایل رو که اسمش در قسمت name با پسوندش اومده به مسیر مشخصی که در قسمت destination مشخص به مسیر مشخص شده می فرسته.

اگر دستوری با code شروع بشه و اسم فایلی با پسوندش درون تگ code قرار بگیره مشخص میشه که اون فایل برای نصب بسته باید اجرا بشه و فایل اصلی بسته هستش که به قالب ربطی نداره و ما هم از کنارش می گذریم. البته نه به این معنا که اصلا مهم نیست، چه بسا نیاز باشه که اون فایل رو هم تغییراتی درش بدید که البته در بیشتر موارد نیازی به این کار نیست. (سعی کنید اول بسته رو نصب کنید بعد خطاهارو به صورت دستی برطرف کنید. چون مثلا در این مورد باید کدهایی اجرا بشن)

اگر دستوری با modification شروع بشه چشمامون برق میزنه! چونکه دقیقا چیزیه که ما نیاز داریم به دستور زیر در فایل package-info.xml بسته ی تبلیغات ورژن 2RC3 نگاه کنید:


<modification>install.xml</modification>

خوب حالا میریم و فایل install.xml رو با یه ویرایشگر باز می کنیم ببینیم چی به چیه:

خطوطی که با file شروع میشن مشخص می کنند که باید کدوم فایل تغییر داده بشه برای مثال کد زیر مشخص می کنه که باید فایل index.php در پوشه ی سورس اصلاح بشه:
<file name="$boarddir/index.php">

هرچی بین این تگ و تگ پایانیش باشه برای ما مهمه و مشخص می کنه که کجای فایل باید تغییر کنه. به کد زیر دقت کنید:
<search position="before"><![CDATA[        'admin' => array('Admin.php', 'AdminMain'),]]></search>
<add><![CDATA[
        'ads' => array('Ads.php', 'Ads'),]]></add>


معنی کد بالا: یعنی توی فایل index.php دنبال عبارت 'admin' => array('Admin.php', 'AdminMain'), بگرد و قبل از آن (به مقدار position توجه کنید) کدهایی که تو تگ add مشخص شده رو اضافه کن.
توجه کنید که smf بر اساس کاراکتر کار می کنه و حتی یک فاصله ی کوچیک ممکنه باعث بشه که در زمان نصب بسته ایراد بگیره

توجه کنید که smf برای مشخص کردن یک عبارت برای جستوجو یا اضافه شدن از تگ کلیدی زیر استفاده می کنه:
<![CDATA[        ebarratii ke mikhahiiid jostojjooo konid  ]]>

بین تگهای در هر تگ file یک عبارت یا چند عبارت به فایل مربوطه اضافه یا حذف و یا ویرایش می شه و تا زمانی که به تگ پایاتی file یعنی تگ نرسیدیم باید فایلی رو که در حال ویرایشش هستیم رو باز نگه داریم! (امیدوارم منظورم رو گرفته باشید)

زمانی که به تگ پایانی file رسیدیم فایل رو که تغییر توش ایجاد کردیم رو ذخیره می کنیم و میبندیم و میریم سر وقت فایل بعدی (اگه وجود داشت) برای مثال تو این بسته که من دارم هماهنگ می کنم بعد از index.php نوبت به فایل admin.php میرسه:
<file name="$sourcedir/Admin.php">

راهنمایی ها:

در قسمت search و جلوی خصیصه ی position میشه از صفات زیر استفاده کرد:

after : یعنی بعد از متنی که جستوجو می شود عبارتی اضافه می شود.
before : یعنی قبل از متنی که جستوجو می شود عبارتی اضافه می شود.
replace : یعنی متنی که جستوجو می شود حذف و متن جدید جایگزین آن شود.
end : یعنی به آخر فایل مربوطه که در حال ویرایش آن هستید متن مورد نظر اضافه شود.
در صورتی که از موقعیت خاصی استفاده نشود تغییرات به ابتدای فایل اضافه می شوند.

آدرس ها:
smfVars =
[
    {
        'variable': '$sourcedir',
        'value': 'Sources'
    },
    {
        'variable': '$themedir',
        'value': 'Themes/default'
    },
    {
        'variable': '$themesdir',
        'value': 'Themes/default'
    },
    {
        'variable': '$languagedir',
        'value': 'Themes/default/languages'
    },
    {
        'variable': '$languagesdir',
        'value': 'Themes/default/languages'
    },
    {
        'variable': '$boarddir',
        'value': ''
    }

هر پرسش خردمند، نيمي از پاسخ را در خود دارد.((سليمان ابن گاويرول))

Advertisement: