Opencart vQmod Kullanımı


vQmod nedir:

vQmod opencart kaynak dosyaları değiştirmeden dosyalar üzerinde değişiklikler yapabilmeye imkan sağlayan bir araçtır. Böylece hem değişikliklerinizi tek bi yerden görüp kontrol etmeniz kolaylaşır hem de kaynak dosyalar değişmediği için opencart versiyon güncellemesi yapmanız kolaylaşır. vqmod github üzerinden indirip kurabilirsiniz (https://github.com/vqmod/vqmod). Kurulumu oldukça basit (google da kolayca örnek video bulabilirsiniz). xml klasörü içerisine ekleyeceğiniz özelleştirmeler ile istediğiniz değişiklikleri yapmaya başlayabilirsiniz. xml klasörü içerisine dosya-ismi.xml şeklinde xml uzantılı dosyalar oluşturmalısınız*** Genelde alakalı işlemleri tek bir xml dosyasında toplamanızı öneririm.
*** xml dosyalarınız sistem tarafından dosya adına göre sırayla çalıştırılır. Dolayısı ile ilk yapılacak değişiklikler için örneğin dosya ismini a_ilk_islemler.xml yapın.
Aşağıda bir xml dosyası örneğini ekliyorum, bu şablonu kullanabilirsiniz:
<modification>
    <name>urun-duzenlemeleri</name>
    <version>v1.0</version>
    <author>Ayhan</author>
    <code>urun-duzenlemeleri</code>

    <file path="catalog/controller/product/product.php">
    <operation info="urun id bilgisini bir degiskene aktar">
        <search index="1"><![CDATA[$data['manufacturer'] = $product_info['manufacturer'];]]></search>
        <add position="before"><![CDATA[$this_product_id = $data['product_id'];]]></add>
    </operation>
    </file>
    
</modification>

vQmod parametre kullanımı:

position, index, offset gibi parametreleri iki yere de yazabilirsiniz. <search index="1" position="before"> veya <add index="1" position="before"> İki türlü de çalışacaktır. Fakat ben position ve offset parametrelerini add satırına, index parametresini ise search satırına yazmayı tercih ediyorum. info ise operation satırına yazılır ve yapılan işlemle ilgili size yardımcı olacak bir ifade yazabilirsiniz. Bu parametrelerin kullanıldığı örnekleri bu yazıda bulabilirsiniz.  

vQmod position kullanımı:

position parametresi before, after ve replace olarak üç farklı değer alır. Belirttiğiniz değişiklik aranılan ifadenin öncesine eklenecekse before, sonrasına eklenecekse after kullanın. Eğer aranılan ifadeyi değiştirmek istiyorsanız o zaman replace kullanın. 
* replace kullanımından kaçınmanızı öneririm, çünkü değiştirdiğiniz bir satırı başka bir opencart eklentisi veya başka bir vqmod xml dosyası kullanmış olabilir. Çok mecbur kalmadıkça replace yerine before ve after kullanın.
* Yine aranılan ifadeyi tam bir satır olarak yazmanız şart değil. Satırda geçen bir kısmı arayabilirsiniz. Örneğin bir satırda yazan kod şu şekilde olsun: 
$data['stock'] = $product_info['quantity'];
Burada iki türlü arama yapabilirsiniz:

<search><![CDATA[$data['stock'] = $product_info['quantity'];]]></search>
<add position="after"><![CDATA[$data['stock']++;]]></add>

<search><![CDATA[$product_info['quantity'];]]></search>
<add position="replace"><![CDATA[1 + $product_info['quantity'];]]></add>

vQmod index kullanımı:

index parametresini aradığınız ifade birden fazla yerde geçiyorsa hangi sıradaki arama sonucunu kastettiğinizi belirlemek için kullanırsınız. Eğer tek yerde geçiyorsa index kullanmanıza gerek yok. index kullanımında en çok karıştırılan konulardan birisi ilk bulunan karakteri belirlemek istiyorsanız index="1" yazmalısınız, yine sırasıyla ikinci bulunan için index="2", ...vb sırayla gidecektir. İnternette bazı kaynaklarda ilk bulunan için index="0" yazılmalı demişler fakat bu bende işe yaramadı (vQmod 2.6.4 versiyonunu kullanıyorum). 
İlk bulunan ifadeyi kasteden bir örnek kullanım aşağıdadır:
<file path="catalog/controller/product/product.php">
<operation info="urun id bilgisini bir degiskene aktar">
    <search index="1"><![CDATA[$data['manufacturer'] = $product_info['manufacturer'];]]></search>
    <add position="before"><![CDATA[$this_product_id = $data['product_id'];]]></add>
</operation>
</file>

vQmod offset kullanımı:

offset parametresini position="replace" kullandığımız zamanlarda ve aynı anda birkaç satırı birden değiştirmek istiyorsanız kullanırız. 
Çalışma mantığı şu şekildedir: aradığınız ifade ile satır bulunur, offset değerinde yazdığınız sayı kadar daha satır aşağıya doğru seçilir (yani offset="3" ise aradığınız satır + altındaki 3 satır seçilir). Boş satır bile olsa onu da saymak zorundasınız. Örnek kullanımı aşağıdadır.
Orjinal kod:
$data['button_cart'] = $this->language->get('button_cart');

$data['button_wishlist'] = $this->language->get('button_wishlist');
$data['button_compare'] = $this->language->get('button_compare');
vQmod değişiklik kodu (boş satırı da sayarsak aranılan satırdan sonra 3 satırı daha seçmeliyiz):
<operation info="birkac satiri degistir">
    <search><![CDATA[$data['button_cart'] = $this->language->get('button_cart');]]></search>
    <add position="replace" offset="3"><![CDATA[
    $data['button_cart'] = 'Go: ' . $this->language->get('button_cart');

    $data['button_wishlist'] = 'Go: ' . $this->language->get('button_wishlist');
    $data['button_compare'] = 'Go: ' . $this->language->get('button_compare');
    ]]></add>
</operation>
Değişikliğin uygulanmış hali:
$data['button_cart'] = 'Go: ' . $this->language->get('button_cart');

$data['button_wishlist'] = 'Go: ' . $this->language->get('button_wishlist');
$data['button_compare'] = 'Go: ' . $this->language->get('button_compare');
.

Yorumlar