Opencart-тағы OCMOD модификаторлары

 
Opencart-тағы OCMOD модификаторлары
  • 18 января 2023
  • Комментарии :0
  • Просмотров: 6816

OpenCart модификаторлары - бастапқы жүйе файлдарына қол тигізбей, функционалға не дизайнға өзгерістер енгізуге мүмкіндік беретін ерекше модуль түрі. Бұл OpenCart негізгі файлдарының тұрақтылығын сақтай отырып, платформаның мүмкіндіктерін өзгертуге не кеңейтуге жол ашады. Осы мақалада OpenCart үшін өз модификаторыңызды қалай жасауға болатыны және модификаторлардың қандай мүмкіндіктер беретіндігі сипатталады.

Алғашында модификатор тұжырымдамасы OpenCart 1.5 нұсқасында vQmod арқылы енгізілді, кейін жетілдіріліп, OCMOD болып өзгерді және OpenCart 2.1 нұсқасынан бастап стандартты функционалға айналды. Демек, OpenCart-тағы модификатор - бұл негізгі файлдарға тікелей әсер етпей, жүйеге өзгерістер енгізу құралы.

OpenCart модификаторы - XML файл түріндегі модуль, онда түпнұсқа OpenCart файлдарының кодына қандай өзгерістер енгізу керектігі туралы нұсқаулар жинағы бар: ауыстыру, қосу немесе жою. OpenCart бұл нұсқауларды бөлек қалтада (модификация кэші) бастапқы файлдардың көшірмелерін жасап, өзгерістерді сол көшірмелерге енгізу арқылы орындайды. Нәтижесінде сайт түпнұсқалардың орнына өзгертілген файлдарды қолданады.

OCMOD модификаторы стандартты мүмкіндіктерді өзгертіп не кеңейтетін дербес модуль ретінде де, қосымша php, twig, js, css және басқа файлдары бар толыққанды модульдің бөлігі ретінде де жұмыс істей алады.

Файл атаулары мен каталогтар

Модификатор файлының атауы - <file_name>.ocmod.xml үлгісіне сай болуы керек, мұнда <file_name> орнына өз атауыңызды қоясыз. Яғни файл атауы әрдайым ".ocmod.xml" деп аяқталуы тиіс, әйтпесе жүйе модификаторды “көрмейді” де, оны елемейді.
Ерекшелік: модификатор архивтегі толық модуль құрамында қолданылса - бұл жағдайда архивтегі модификатор файлының атауы install.xml болуы керек.

Модификатор файлын орналастыру - сайт түбіндегі system қалтасы. Модификатор файлын кеңейтулерді жүктеу арқылы дерекқорға да тұрақты орналастыруға болады. Алайда әзірлеу кезінде файлды system қалтасына жазып, сонда өңдеп, нәтижені тексеру ыңғайлы, ал әзірлеу аяқталғаннан кейін модификаторды модуль ретінде дерекқорға жүктейді.

Модификация кэші орналасуы - сайт түбірінің құрылымын қайталайтын /storage/modification қалтасы. Яғни, егер сіз /admin/controller/catalog/product.php файлына модификатор жасасаңыз, оның өзгертілген көшірмесі /storage/modification/admin/controller/catalog/product.php ішінде болады. Сол жерден модификаторыңыз енгізетін өзгерістерді көресіз.

Логтар орналасуы - /storage/logs қалтасы. Онда 2 негізгі лог файлы бар: ocmod.log - модификатор файлдарының қалай өңделгенін, ретін және нұсқаулардың қалай орындалғанын көрсетеді, және error.log - түрлендіру кезінде болған қателерді қамтитын лог файлы.

Модификация кэшін жаңарту

Жүйе модификатор файлдарын танып, олардың нұсқауларын қолдану үшін модификаторлар бетінде "Жаңарту" түймесін басу керек.

Кейде кэштi жаңартқаннан кейін де сайтта өзгерістер көрінбейді. Бұл әдетте сайтта қосымша кэштеу модульдері немесе жүктеуді жеделдету құралдары қолданылғандықтан болады, оларда да кэшті жаңарту қажет болуы мүмкін.

OCMOD модификаторының синтаксисі

OCMOD модификатор файлы жалпы сипаттамалық бөлік пен файлдарды өзгерту нұсқауларын қамтуы тиіс. Синтаксисті әкімші тақырыбында "Test" сөзін қосатын қарапайым мысалдан бастаймын: 

 <!--?xml version="1.0" encoding="utf-8"?--> <modification>   <name>Test</name>                <!-- Модификатор атауы -->   <code>Test</code>                <!-- Модификатордың бірегей коды -->   <version>1.0</version>           <!-- Нұсқа -->   <author>Test</author>            <!-- Автор --><link />http://www.test.ru  <!-- Әзірлеуші сайты -->   <file path="admin/view/template/common/header.twig">  <!-- Қай файл өзгертіледі -->   <operation>     <search>                           <!-- Файлдан код табу -->       <!--[CDATA[         <div class="container-fluid"-->       ]]&gt;     </search>     <add position="after">             <!-- Өзгерісті қосу (табылған кодтан кейін) -->       <!--[CDATA[         <p-->Test<p>&nbsp;</p>       ]]&gt;     </add>   </operation> </file>   </modification> 

 

Сонымен, бұл модификатор мысалы header.twig файлын өзгертеді. Ол "<div class="container-fluid">" жолын табады да, одан кейін "<p>Test</p>" кодын қосады.

Бір xml файлында <file> секцияларының қалаған саны болуы мүмкін, сондықтан бір модификатормен көптеген файлдарды өзгерте аламыз.

Енді әр тегті және оның мүмкіндіктерін толығырақ қарастырайық.

File

Қай файлда не файлдарда өзгеріс енгізу керектігін көрсетеді. Міндетті path атрибуты өзгертілетін файлға жолды қамтиды. Бір не бірнеше файлды көрсетуі мүмкін. Бірнеше файлды көрсету үшін "|" таңбасы қолданылады. Мысалы, action.php және loader.php файлдарына өзгеріс енгізу

 <file path="system/engine/action.php|system/engine/loader.php">

Кодты қысқарту үшін жақшаларды пайдаланып, бірнеше мәнді үтір арқылы көрсетуге болады:

 <file path="system/engine/{action,loader}.php">

Сонымен қатар "*" және "?" таңбаларын "маска" бойынша жол көрсету үшін қолдануға болады. Бұл үлгі файлдарын өзгертуге жиі пайдалы.

 <file path="catalog/view/theme/*/template/product/product.twig">

OpenCart-та қандай тақырыптар орнатылғанын алдын ала білмейтіндіктен, "theme" сөзінен кейін "*" қойдық, сонда барлық тақырыптардағы product.twig файлдары өзгереді.

Operation

Өзгеріс енгізу секциясының басталуын көрсетеді. File секциялары ішінде бірнеше <operation> болуы мүмкін. Яғни, бір файлда бірден бірнеше өзгеріс жасай аламыз. Operation тегі міндетті емес error атрибутына ие болуы мүмкін, оның мәндері мыналар:

  • skip - қате болған жағдайда ағымдағы <operation> секциясын өткізіп, келесісіне өту
  • log (әдепкі) - қате болған жағдайда бүкіл <file> секциясын өткізіп, келесі <file> секциясына өту
  • abort - қате болған жағдайда xml файлындағы барлық модификацияларды тоқтату

Мысалы, header.twig ішінен "navbar-rightnav" мәтінін табу, ал ол болмаса, өткізіп, келесі операцияда "navbar-right" мәтінін табу:

 <file path="admin/view/template/common/header.twig">   <operation error="skip">     <search><![CDATA[ navbar-rightnav ]]></search>     <add position="after"><![CDATA[        <li>Test1</li>     ]]></add>   </operation>   <operation error="skip">     <search><![CDATA[ navbar-right ]]></search>     <add position="after"><![CDATA[        <li>Test2</li>     ]]></add>   </operation> </file> 

Егер error="skip" атрибутын көрсетпесеңіз, "navbar-rightnav" іздеуіндегі алғашқы қате бүкіл <file> секциясын үзіп, оны елемей қояр еді.

Search

Ағымдағы операцияда қай мәтінді табу керектігін көрсетеді. Төмендегі қолдану ережелері бар:

  • Search тегін бір Operation секциясының ішінде тек 1 рет қолдануға болады.
  • Іздеу бір жолды не жолдың бір бөлігін ғана қамтиды (бір уақытта бірнеше жолды іздеуге болмайды).
  • Табылатын мәтін <![CDATA[ және ]]> арасына орналастырылуы тиіс.
  • Іздейтін мәтіннің алдындағы және соңындағы бос орындар мен жол ауыстырулар еленбейді (сол себепті мәтінді CDATA-дан кейін бірден не келесі жолға жазуға болады), егер trim="false" атрибуты көрсетілмесе.
  • Өзгерістер файлдағы барлық сәйкестіктерге қолданылады, егер index атрибуты көрсетілмесе.

<![CDATA[ және ]]> арнайы тегтері xml файлдарында кез келген таңбалық деректерді беру үшін қолданылады, яғни олардың арасында кез келген мәтін, соның ішінде жақшалар, кіші/үлкен белгілері, сондай-ақ php, html коды бола алады.

Нақтырақ орынға өзгеріс енгізу үшін Search тегінде мына атрибуттарды қолдануға болады:

  • index - өзгерісті қай рет табылған мәтінде жасау керектігін көрсетеді. Егер ізделген мәтін файлда бірнеше рет кездессе, index рет нөмірін көрсетуге мүмкіндік береді (0 - алғашқы табылым, 1 - екіншісі, т.б.). Сондай-ақ бірнеше нөмірді үтір арқылы көрсетуге болады.
  • trim - ізделетін мәтіннің алдындағы және соңындағы бос орындар мен жол ауыстыруларды елемеу (true) не елемеу емес (false) керектігін көрсетеді.
  • regex - true болса, ізделетін мәтін тұрақты өрнек ретінде қарастырылады.

Мысал: "TEST" мәзір тармағын қосу.

 <file path="admin/controller/common/column_left.php">   <operation>     <search index="0" trim="true"><![CDATA[       $data['menus'][] = array(     ]]></search>     <add position="before"><![CDATA[       $data['menus'][] = array(         'id'       => 'menu-test',         'icon'     => 'fa-play',         'name'     => 'TEST',         'href'     => '#'       );     ]]></add>   </operation> </file>

Бұл мысалда "$data['menus'][] = array(" алғашқы кездесуін тауып, оның алдына өз кодымызды қосамыз.

Add

Тег табылған мәтіннің алдына/соңына қосылатын немесе соның орнына қойылатын мәтінді қамтиды.

Search тегі сияқты, бұл тег те <![CDATA[ және ]]> аралығында жазылған қосылатын/ауыстырылатын кодты қамтуы тиіс.

Add тегінде мына атрибуттарды қолдануға болады:

  • position - мына мәндерді қабылдайды:
    • replace (әдепкі) - табылған мәтінді ауыстыру
    • before - табылған мәтіннің алдына қосу
    • after - табылған мәтіннің соңына қосу
  • offset - табылған мәтінге қатысты көрсетілген жол санына ығыстыруды білдіреді. Егер position="before" болса, ығысу табылған мәтіннен жоғарыға, ал position="after" не position="replace" болса, төмен қарай жасалады.
  • trim - табылатын мәтіннің алдындағы және соңындағы бос орындар мен жол ауыстыруларды елемеу (true) не елемеу емес (false) керектігін көрсетеді.

Мысал: Әкімшілік панельдегі тауарлар тізімінде "Test" сөзін қосу.

 <file path="admin/view/template/catalog/product_list.twig">   <operation>     <search index="1" trim="true"><![CDATA[       panel-body     ]]></search>     <add position="after" offset="1" trim="true"><![CDATA[       <p>Test</p>     ]]></add>   </operation> </file>

"panel-body" мәтінінің екінші кездесуін табамыз (біріншісі - тауарлардың оң жағындағы сүзгі, екіншісі - тауарлар тізімі) және табылған мәтіннен бір жол төмен "<p>Test</p>" кодын қосамыз.

Назар аударыңыз: position="before" және position="after" кодты "panel-body" табылған жолдың ортасына емес, келесі (немесе алдыңғы) жолға қосады. Егер жол ортасына қосу керек болса, position="replace" пайдаланып, табылған мәтінді қайталап, өз кодыңызды қосыңыз.

Мысал: Футердегі OpenCart нұсқасының алдына мәтін қосу

 <file path="admin/view/template/common/footer.twig">   <operation>     <search><![CDATA[       {{ text_version }}     ]]></search>     <add position="replace" trim="true"><![CDATA[       <p>Test</p>{{ text_version }}     ]]></add>   </operation> </file>

OpenCart-та OCMOD модификаторын жасап, сіз жүйенің дерлік барлық бөлігін өзгертіп, мүмкіндіктерін кеңейте аласыз, бұл ретте түпнұсқа файлдарға әсер етпейсіз және бәрін бастапқы қалпына қайтару үшін модификатор файлын жойсаңыз жеткілікті (немесе ол дерекқорға жүктелген болса, оны өшіріңіз).

 


Рекомендуем посмотреть
Рекомендуем прочитать
 
 


Ещё никто не оставил комментариев к записи.