Всем привет! Есть здесь специалисты по OpenCart?

Помогите, пожалуйста, переделать модуль со старой версии на новую. Модуль позволяет добавлять описания для дополнительных изображений товара.

Устанавливался в прежней версии через VQMod, нужно адаптировать это дело для opencart 2.1.0.2, чтобы устанавливался через OCMOD.

Содержание файла XML:

Развернуть текст

<modification>
<id>desc_ext_images 1.5.1</id>
<version>0.1</version>
<vqmver>2.1.6</vqmver>
<author>waterfall and rmonax</author>

<file name="admin/controller/catalog/product.php">
<operation>
<search position="after" error="log"><![CDATA[$this->data['entry_sort_order'] = $this->language->get('entry_sort_order');]]></search>
<add><![CDATA[$this->data['entry_image_desc'] = $this->language->get('entry_image_desc');
]]></add>
</operation>
<operation>
<search position="after" error="log"><![CDATA['thumb' => $this->model_tool_image->resize($image, 100, 100),]]></search>
<add><![CDATA[ 'image_desc' => $product_image['image_desc'],
]]></add>
</operation>
</file>
<file name="admin/language/*/catalog/product.php">
<operation>
<search position="after" error="skip"><![CDATA[<?php]]></search>
<add><![CDATA[$_['entry_image_desc'] = 'Image Desc:';
]]></add>
</operation>
</file>
<file name="admin/model/catalog/product.php">
<operation>
<search position="replace" error="log"><![CDATA[ $this->db->query("INSERT INTO " . DB_PREFIX . "product_image SET product_id = '" . (int)$product_id . "', image = '" . $this->db->escape(html_entity_decode($product_image['image'], ENT_QUOTES, 'UTF-8')) . "', sort_order = '" . (int)$product_image['sort_order'] . "'");]]></search>
<add><![CDATA[

$img_desc_l = "";
if (is_array($product_image['image_desc']))
{
foreach ($product_image['image_desc'] as $pr_img_l => $pr_img_desc)
$img_desc_l = $img_desc_l . '\r' . $pr_img_l . '\n' . $pr_img_desc;
}
else
$img_desc_l = $product_image['image_desc'];

$this->db->query("INSERT INTO " . DB_PREFIX . "product_image SET product_id = '" . (int)$product_id . "', image = '" . $this->db->escape(html_entity_decode($product_image['image'], ENT_QUOTES, 'UTF-8')) . "', sort_order = '" . (int)$product_image['sort_order'] . "', image_desc = '" . $this->db->escape($img_desc_l) . "'");
]]></add>
</operation>
<operation>
<search position="replace" error="log"><![CDATA[ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "'");]]></search>
<add><![CDATA[ $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_image WHERE product_id = '" . (int)$product_id . "' ORDER BY sort_order ");
]]></add>
</operation>
</file>
<file name="admin/view/template/catalog/product_form.tpl">
<operation>
<search position="replace" error="log"><![CDATA[ <td colspan="2"></td>]]></search>
<add><![CDATA[ <td colspan="3"></td>
]]></add>
</operation>
<operation>
<search position="after" error="log"><![CDATA[ <td class="right"><?php echo $entry_sort_order; ?></td>]]></search>
<add><![CDATA[ <td class="right"><?php echo $entry_image_desc; ?></td>
]]></add>
</operation>
<operation>
<search position="before" error="log"><![CDATA[ <td class="left"><a onclick="$('#image-row<?php echo $image_row; ?>').remove();" class="button"><?php echo $button_remove; ?></a></td>]]></search>
<add><![CDATA[ <td class="right">

<?php $img_arrs = explode('\r', $product_image['image_desc']); ?>
<?php foreach ($languages as $language) { ?>
<?php
$img_d = "";
foreach ($img_arrs as $img_ar) {
$img_arrs2 = explode('\n', $img_ar);
if(isset($img_arrs2[0]) && isset($img_arrs2[1]))
{
if ($img_arrs2[0] == $language['language_id']) $img_d = $img_arrs2[1];
}

}
?>
<img src="view/image/flags/<?php echo $language['image']; ?>" /> <?php echo $language['name']; ?>
<input type="text" name="product_image[<?php echo $image_row; ?>][image_desc][<?php echo $language['language_id']; ?>]" value="<?php echo $img_d; ?>" size="60"><br>
<?php } ?>


</td>
]]></add>
</operation>
<operation>
<search position="after" error="log"><![CDATA[ html += ' <td class="right"><input type="text" name="product_image[' + image_row + '][sort_order]" value="" size="2" /></td>';]]></search>
<add><![CDATA[ html += ' <td class="right">';

<?php foreach ($languages as $language) { ?>
html += ' <img src="view/image/flags/<?php echo $language['image']; ?>" /> <?php echo $language['name']; ?>';
html += ' <input type="text" name="product_image[' + image_row + '][image_desc][<?php echo $language['language_id']; ?>]" value="" size="60"><br>';
<?php } ?>

html += ' </td>';
]]></add>
</operation>
</file>
<file name="catalog/controller/product/product.php">
<operation>
<search position="before" error="log"><![CDATA[$this->data['images'][] = array( ]]></search>
<add><![CDATA[
if ($result['image']=='') $result['image'] = 'no_image.jpg';


$img_arrs = explode('\r', $result['image_desc']);

$img_d = "";

foreach ($img_arrs as $img_ar) {
$img_arrs2 = explode('\n', $img_ar);
if(isset($img_arrs2[0]) && isset($img_arrs2[1]))
{
if ($img_arrs2[0] == $this->config->get('config_language_id')) $img_d = $img_arrs2[1];
}
}

if ($img_d == "") $img_d = "&nbsp;";

]]></add>
</operation>

<operation>
<search position="after" error="log"><![CDATA['thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))]]></search>
<add><![CDATA[, 'image_desc' => $img_d]]></add>
</operation>

</file>
<file name="catalog/view/theme/*/template/product/product.tpl">
<operation>
<search position="replace" error="log"><![CDATA[ <a href="<?php echo $image['popup']; ?>" title="<?php echo $heading_title; ?>" class="colorbox"><img src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a>]]></search>
<add><![CDATA[
<a href="<?php echo $image['popup']; ?>" title="<?php echo $image['image_desc']; ?>" class="colorbox"><img src="<?php echo $image['thumb']; ?>" title="<?php echo $image['image_desc']; ?>" alt="<?php echo $image['image_desc']; ?>" /><br><center><?php echo $image['image_desc']; ?></center></a>
]]></add>
</operation>
</file>
</modification>
[свернуть]


---------- Сообщение добавлено 18:52 ---------- Предыдущее 18:44 ----------

Попробовал всё это дело самостоятельно выполнить... начал по-пунктам:

1.

Развернуть текст

<file name="admin/controller/catalog/product.php">
<operation>
<search position="after" error="log"><![CDATA[$this->data['entry_sort_order'] = $this->language->get('entry_sort_order');]]></search>
<add><![CDATA[$this->data['entry_image_desc'] = $this->language->get('entry_image_desc');
]]></add>
</operation>
<operation>
<search position="after" error="log"><![CDATA['thumb' => $this->model_tool_image->resize($image, 100, 100),]]></search>
<add><![CDATA[ 'image_desc' => $product_image['image_desc'],
]]></add>
</operation>
</file>
[свернуть]


Т.е. в файле admin/controller/catalog/product.php найти строчку

$this->data['entry_sort_order'] = $this->language->get('entry_sort_order');

и вставить перед ней такую строчку:

$this->data['entry_image_desc'] = $this->language->get('entry_image_desc');

Здесь всё ОК.

Далее... далее немного всё по-другому идёт. Сможет кто-нибудь помочь? Шаблон default. Рублей 200-300 за помощь.