COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

Проблема С Модулем Современные Отзывы


dimakusch

Recommended Posts

Здравствуйте! Помогите пожалуйста, установил модуль Современные отзывы, все хорошо, вот только выскочила одна проблема. По умолчанию в модуле отображалось 50 отзывов на странице, я изменил на 5 ... Проблема в том при нажатии на след. страницу, она открывается в новом окне .

 

Как сделать чтоб при переключении страниц они отображались нормально, как в стандартных отзывах?

Вот код модуля:

 

Скрытый текст

<?xml version="1.0" encoding="UTF-8"?>
<modification>
    <id>reviews-stars</id>
    <version>2.1</version>
	<vqmver>2.4.1</vqmver>
	<author>vivivor</author>
	<file name="admin/model/catalog/review.php">
        <operation>
    		<search position="replace"><![CDATA[
			    $this->db->query("INSERT INTO " . DB_PREFIX . "review SET
			]]></search>
			<add><![CDATA[
			    $this->db->query("INSERT INTO " . DB_PREFIX . "review SET addimage = '" . $this->db->escape($data['addimage']) . "', answer = '" . $this->db->escape(strip_tags($data['answer'])) . "', good = '" . $this->db->escape(strip_tags($data['good'])) . "', bads = '" . $this->db->escape(strip_tags($data['bads'])) . "', html_status = '" . (int)$data['html_status'] . "', purchased = '" . (int)$data['purchased'] . "',
			]]></add>
		</operation>
        <operation>
        	<search position="replace"><![CDATA[
			    date_added = NOW()");
			]]></search>
			<add><![CDATA[
			    date_added = '" . $this->db->escape($data['date_added']) . "'");
			]]></add>
		</operation>
        <operation>
    		<search position="replace"><![CDATA[
				$this->db->query("UPDATE " . DB_PREFIX . "review SET
			]]></search>
			<add><![CDATA[
				$this->db->query("UPDATE " . DB_PREFIX . "review SET addimage = '" . $this->db->escape($data['addimage']) . "', answer = '" . $this->db->escape(strip_tags($data['answer'])) . "', good = '" . $this->db->escape(strip_tags($data['good'])) . "', bads = '" . $this->db->escape(strip_tags($data['bads'])) . "', html_status = '" . (int)$data['html_status'] . "', purchased = '" . (int)$data['purchased'] . "',
			]]></add>
		</operation>
        <operation>
        	<search position="replace"><![CDATA[
				date_added = NOW() WHERE review_id = '" . (int)$review_id . "'");
			]]></search>
			<add><![CDATA[
				date_added = '" . $this->db->escape($data['date_added']) . "' WHERE review_id = '" . (int)$review_id . "'");
			]]></add>
		</operation>
		<operation>
			<search position="replace" error="log"><![CDATA[
			    $sql = "SELECT r.review_id,
			]]></search>
			<add><![CDATA[
			    $sql = "SELECT r.review_id, r.purchased, html_status, r.addimage,
			]]></add>
		</operation>
	</file>
	<file name="admin/controller/catalog/review.php">
		<operation>
			<search position="after" error="log"><![CDATA[
			    getList() {
			]]></search>
			<add><![CDATA[
		$query = $this->db->query("DESC ".DB_PREFIX."review good");
        	if (!$query->num_rows) {
				$this->db->query("ALTER TABLE `" . DB_PREFIX . "review` ADD `good` text COLLATE utf8_general_ci NOT NULL AFTER text;");
			}
		$query = $this->db->query("DESC ".DB_PREFIX."review bads");
        	if (!$query->num_rows) {
				$this->db->query("ALTER TABLE `" . DB_PREFIX . "review` ADD `bads` text COLLATE utf8_general_ci NOT NULL AFTER text;");
			}
		$query = $this->db->query("DESC ".DB_PREFIX."review answer");
        	if (!$query->num_rows) {
				$this->db->query("ALTER TABLE `" . DB_PREFIX . "review` ADD `answer` text COLLATE utf8_general_ci NOT NULL AFTER text;");
			}
		$query = $this->db->query("DESC ".DB_PREFIX."review purchased");
        	if (!$query->num_rows) {
				$this->db->query("ALTER TABLE `" . DB_PREFIX . "review` ADD `purchased` tinyint(1) NOT NULL AFTER text;");
			}
        $query = $this->db->query("DESC ".DB_PREFIX."review html_status");
            if (!$query->num_rows) {
				$this->db->query("ALTER TABLE `" . DB_PREFIX . "review` ADD `html_status` tinyint(1) NOT NULL AFTER text;");
			}
		$query = $this->db->query("DESC ".DB_PREFIX."review addimage");
            if (!$query->num_rows) {
				$this->db->query("ALTER TABLE `" . DB_PREFIX . "review` ADD `addimage` text NOT NULL AFTER text;");
			}
		]]></add>
		</operation>
		<operation>
			<search position="after" error="log"><![CDATA[
			    getForm() {
			]]></search>
			<add><![CDATA[
			    $this->data['entry_texts'] = $this->language->get('entry_texts');
			    $this->data['entry_bads'] = $this->language->get('entry_bads');
                $this->data['entry_goods'] = $this->language->get('entry_goods');
			    $this->data['entry_answer'] = $this->language->get('entry_answer');
			    $this->data['entry_purchased'] = $this->language->get('entry_purchased');
			    $this->data['entry_addimage'] = $this->language->get('entry_addimage');
                $this->data['entry_html_status'] = $this->language->get('entry_html_status');
                $this->data['entry_date_added'] = $this->language->get('entry_date_added');
			]]></add>
		</operation>
        <operation>
    		<search position="after" error="log"><![CDATA[
			    $this->load->model('catalog/product');
			]]></search>
			<add><![CDATA[
		if (isset($this->request->post['good'])) {
			$this->data['good'] = $this->request->post['good'];
		} elseif (!empty($review_info)) {
			$this->data['good'] = $review_info['good'];
		} else {
			$this->data['good'] = '';
		}
			
		if (isset($this->request->post['bads'])) {
			$this->data['bads'] = $this->request->post['bads'];
		} elseif (!empty($review_info)) {
			$this->data['bads'] = $review_info['bads'];
		} else {
			$this->data['bads'] = '';
		}
		
		if (isset($this->request->post['answer'])) {
			$this->data['answer'] = $this->request->post['answer'];
		} elseif (!empty($review_info)) {
			$this->data['answer'] = $review_info['answer'];
		} else {
			$this->data['answer'] = '';
		}
		if (isset($this->request->post['purchased'])) {
			$this->data['purchased'] = $this->request->post['purchased'];
		} elseif (!empty($review_info)) {
			$this->data['purchased'] = $review_info['purchased'];
		} else {
			$this->data['purchased'] = '';
		}
        if (isset($this->request->post['date_added'])) {
    		$this->data['date_added'] = $this->request->post['date_added'];
		} elseif (!empty($review_info)) {
			$this->data['date_added'] = $review_info['date_added'];
		} else {
			$this->data['date_added'] = '';
		}
		if (isset($this->request->post['addimage'])) {
        	$this->data['addimage'] = $this->request->post['addimage'];
		} elseif (!empty($review_info)) {
			$this->data['addimage'] = $review_info['addimage'];
		} else {
			$this->data['addimage'] = '';
		}
        if (isset($this->request->post['html_status'])) {
            $this->data['html_status'] = $this->request->post['html_status'];
		} elseif (!empty($review_info)) {
			$this->data['html_status'] = $review_info['html_status'];
		} else {
			$this->data['html_status'] = '';
		}
		]]></add>
		</operation>
		<operation>
			<search position="after" error="log"><![CDATA[
			    $this->data['reviews'][] = array(
			]]></search>
			<add><![CDATA[
			    'purchased'     => $result['purchased'],
			    'addimage'      => $result['addimage'],
                'html_status'   => $result['html_status'],
			]]></add>
		</operation>
	</file>
	<file name="admin/language/russian/catalog/review.php">
		<operation>
			<search position="before" error="log"><![CDATA[
			    ?>
			]]></search>
			<add><![CDATA[
			    $_['entry_texts']		= 'Комментарий:';
			    $_['entry_goods']		= 'Достоинства:';
			    $_['entry_bads']		= 'Недостатки:';
			    $_['entry_answer']		= 'Ваш ответ:';
			    $_['entry_purchased']	= 'Куплен в этом магазине:';
			    $_['entry_addimage']	= 'Ссылка на фото:';
                $_['entry_html_status'] = 'Включить html:';
                $_['entry_date_added']  = 'Дата добавления:';
			]]></add>
		</operation>
	</file>
	<file name="admin/view/template/catalog/review_list.tpl">
		<operation>
			<search position="replace" error="log" offset="1"><![CDATA[
			    <td class="left"><?php echo $review['author']; ?></td>
			]]></search>
			<add><![CDATA[
                <td class="left">
                <?php echo $review['author']; ?>
    		    <?php if ($review['purchased'] == 1) { ?><img src="../image/man-with-cart2.png" alt="<?php echo $review['author']; ?> купил(а) этот товар в нашем магазине" title="<?php echo $review['author']; ?> купил(а) этот товар в нашем магазине" /><?php } ?>
                <?php if ($review['addimage']) { ?><img src="../image/addimage.png" alt="<?php echo $review['author']; ?> добавил(а) фотографию к отзыву" title="<?php echo $review['author']; ?> добавил(а) фотографию к отзыву" /><?php } ?>
                <?php if ($review['html_status'] == 1) { ?><img src="../image/html_status.png" alt="html включен" title="html включен" /><?php } ?>
			    </td>
			    <td class="right"><img src="../catalog/view/theme/default/image/stars-<?php echo $review['rating'] . '.png'; ?>" /></td>
			]]></add>
		</operation>
	</file>
	<file name="admin/view/template/catalog/review_form.tpl">
		<operation>
			<search position="replace" offset="54" error="log"><![CDATA[
			    <td><span class="required">*</span> <?php echo $entry_text; ?></td>
			]]></search>
			<add><![CDATA[
            <td><?php echo $entry_rating; ?></td>
        	<td>
    		 <div class="rating">
                <div class="radio-div">
                    <?php if ($rating == 1) { ?>
                    <input class="radio-star" type="radio" name="rating" value="1" checked/>
                    <?php } else { ?>
                    <input class="radio-star" type="radio" name="rating" value="1" />
                    <?php } ?>
                    <?php if ($rating == 2) { ?>
                    <input class="radio-star" type="radio" name="rating" value="2" checked/>
                    <?php } else { ?>
                    <input class="radio-star" type="radio" name="rating" value="2" />
                    <?php } ?>
                    <?php if ($rating == 3) { ?>
                    <input class="radio-star" type="radio" name="rating" value="3" checked/>
                    <?php } else { ?>
                    <input class="radio-star" type="radio" name="rating" value="3" />
                    <?php } ?>
                    <?php if ($rating == 4) { ?>
                    <input class="radio-star" type="radio" name="rating" value="4" checked/>
                    <?php } else { ?>
                    <input class="radio-star" type="radio" name="rating" value="4" />
                    <?php } ?>
                    <?php if ($rating == 5) { ?>
                    <input class="radio-star" type="radio" name="rating" value="5" checked/>
                    <?php } else { ?>
                    <input class="radio-star" type="radio" name="rating" value="5" />
                    <?php } ?>
                </div>
                <div class="star-div">
                    <?php if ($rating == 1) { ?><span class="icstars-1"></span><?php }elseif ($rating == 2) { ?><span class="icstars-2"></span><?php }elseif ($rating == 3) { ?><span class="icstars-3"></span><?php }elseif ($rating == 4) { ?><span class="icstars-4"></span><?php }elseif ($rating == 5) { ?><span class="icstars-5"></span><?php }elseif ($rating == 0) { ?><span class="icstars-0"></span><?php } ?>
                </div>
            </div>
			</td>
            </tr>
            <tr><td><?php echo $entry_goods; ?></td><td><textarea name="good" cols="60" rows="8"><?php echo $good; ?></textarea></td></tr>
			<tr><td><?php echo $entry_bads; ?></td><td><textarea name="bads" cols="60" rows="8"><?php echo $bads; ?></textarea></td></tr>
            <tr><td><span class="required">*</span> <?php echo $entry_texts; ?></td><td><textarea name="text" cols="60" rows="8"><?php echo $text; ?></textarea><?php if ($error_text) { ?><span class="error"><?php echo $error_text; ?></span><?php } ?></td></tr>
            <tr><td><?php echo $entry_answer; ?></td><td><textarea name="answer" cols="60" rows="8"><?php echo $answer; ?></textarea></td></tr>
			<tr><td><?php echo $entry_addimage; ?></td><td><input type="text" name="addimage" value="<?php echo $addimage; ?>" style="width:321px;" /> <a href="<?php echo $addimage; ?>"><img src="<?php echo $addimage; ?>" style="max-width:70px;max-height:47px;position: absolute;margin-left: 10px;margin-top: -10px;" /></td></tr>
		    <tr>
                <td><?php echo $entry_purchased; ?></td>
                <td class="switch">
			    <?php if ($purchased) { ?>
			    <input type="radio" id="radio1198" name="purchased" checked value="1" />
			    <input type="radio" id="radio1199" name="purchased" value="0" />
                <label for="radio1198" class="cb-enable selected"><span>On</span></label>
                <label for="radio1199" class="cb-disable"><span>Off</span></label>
			    <?php } else { ?>
			    <input type="radio" id="radio1198" name="purchased" value="1" />
			    <input type="radio" id="radio1199" name="purchased" checked value="0" />
                <label for="radio1198" class="cb-enable"><span>On</span></label>
                <label for="radio1199" class="cb-disable selected"><span>Off</span></label>
			    <?php } ?>
			    </td>
            </tr>
            <tr>
                <td><?php echo $entry_html_status; ?></td>
                <td class="switch">
    		    <?php if ($html_status) { ?>
			    <input type="radio" id="radio1197" name="html_status" checked value="1" />
			    <input type="radio" id="radio1196" name="html_status" value="0" />
                <label for="radio1197" class="cb-enable selected"><span>On</span></label>
                <label for="radio1196" class="cb-disable"><span>Off</span></label>
			    <?php } else { ?>
			    <input type="radio" id="radio1197" name="html_status" value="1" />
			    <input type="radio" id="radio1196" name="html_status" checked value="0" />
                <label for="radio1197" class="cb-enable"><span>On</span></label>
                <label for="radio1196" class="cb-disable selected"><span>Off</span></label>
			    <?php } ?>
			    </td>
            </tr>
            <tr>
            <td><?php echo $entry_status; ?></td>
            <td class="switch">
              <?php if ($status) { ?>
                <input type="radio" id="radio1195" name="status" checked value="1" />
    		    <input type="radio" id="radio1194" name="status" value="0" />
                <label for="radio1195" class="cb-enable selected"><span>On</span></label>
                <label for="radio1194" class="cb-disable"><span>Off</span></label>
                <?php } else { ?>
                <input type="radio" id="radio1195" name="status" value="1" />
    		    <input type="radio" id="radio1194" name="status" checked value="0" />
                <label for="radio1195" class="cb-enable"><span>On</span></label>
                <label for="radio1194" class="cb-disable selected"><span>Off</span></label>
                <?php } ?>
              </select></td>
          </tr>
            <tr><td><?php echo $entry_date_added; ?></td><td><input type="text" name="date_added" value="<?php echo $date_added; ?>" class="datetime" /></td></tr>
<script src="view/javascript/jquery/ui/jquery-ui-timepicker-addon.js"></script> 
<script>$('.datetime').datetimepicker({showSecond: true,dateFormat: 'yy-mm-dd',timeFormat: 'hh:mm:ss'});</script>
<script>jQuery('.radio-star').hover(function(){var stars = jQuery(this).val();jQuery('.star-div').html('<span class="icstars-'+ stars +'"></span><i id="settext-'+ stars +'"></i>');},function(){var start = jQuery('input:radio[name=rating]:checked').val();if(typeof  start == 'undefined' ){start = 0;}jQuery('.star-div').html('<span class="icstars-'+ start +'"></span><i id="settext-'+ start +'"></i>');});jQuery('.radio-star').click(function(){jQuery('.radio-star').each(function(){jQuery(this).attr( 'checked', false );});jQuery(this).attr( 'checked', true );jQuery(this).each(function(){if(jQuery(this).attr("checked")=="checked"){var s = jQuery(this).val();jQuery('.star-div').stop().html('<span class="icstars-'+ s +'"></span><i id="settext-'+ s +'"></i>');}});});</script>
<script>
$(document).ready( function(){
$(".cb-enable").click(function(){
        var parent = $(this).parents('.switch');
        $('.cb-disable',parent).removeClass('selected');
        $(this).addClass('selected');
        $('.checkbox',parent).attr('checked', true);
    });
    $(".cb-disable").click(function(){
        var parent = $(this).parents('.switch');
        $('.cb-enable',parent).removeClass('selected');
        $(this).addClass('selected');
        $('.checkbox',parent).attr('checked', false);
    });
});
</script>
<style>
#settext-1:before{content: "Ужасно";margin-left: 7px;}
#settext-2:before{content: "Плохо";margin-left: 7px;}
#settext-3:before{content: "Средне";margin-left: 7px;}
#settext-4:before{content: "Хорошо";margin-left: 7px;}
#settext-5:before{content: "Отлично";margin-left: 7px;}
input[type='text'], textarea{color: #333;border-radius:3px;border:1px solid #CCC;box-shadow: inset 0px 2px 8px rgba(32, 74, 96, 0.2), 0px 0px 3px white;-moz-box-shadow: inset 0px 2px 8px hsla(200, 50%, 25%, 0.2), 0px 0px 3px white;-webkit-box-shadow: inset 0px 2px 8px rgba(32, 74, 96, 0.2), 0px 0px 3px white;-webkit-transition: all 200ms;-moz-transition: all 200ms;-ms-transition: all 200ms;-o-transition: all 200ms;transition: all 200ms;padding:3px !important;margin-top:2px;margin-bottom:2px;}
input:focus, textarea:focus {box-shadow: inset 0px 2px 8px rgba(255, 255, 255, 0), 0px 0px 5px #209FDF;-moz-box-shadow: inset 0px 2px 8px hsla(0, 100%, 100%, 0), 0px 0px 5px hsl(200, 75%, 50%);-webkit-box-shadow: inset 0px 2px 8px rgba(255, 255, 255, 0), 0px 0px 5px #209FDF;background-color: #FFF;outline: none;border-color: rgba(255, 255, 255, 0);}
textarea:focus,input:focus{outline:none;}
.radio-div{width:77px;float:left;margin-left:5px;}
.radio-div input[type=radio]{position:relative;margin:0 0 0 -4px;padding:0;width:16px;height: 17px;opacity:0;z-index:2;cursor:pointer;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter: alpha(opacity=0);}
.star-div{height:17px;float:left;margin:1px 0 0 -84px;}
.star-div span{width:77px;height:17px;display:inline-block;background:url(view/image/stars.png) no-repeat;}
span.icstars-0{background-position:0 0}
span.icstars-1{background-position:0 -16px}
span.icstars-2{background-position:0 -32px}
span.icstars-3{background-position:0 -48px}
span.icstars-4{background-position:0 -64px}
span.icstars-5{background-position:0 -80px}
    .switch input[type='radio']{display: none;}
    .cb-enable, .cb-disable, .cb-enable span, .cb-disable span {background: url(view/image/switch.gif) repeat-x; display: block; float: left; }
    .cb-enable span, .cb-disable span { line-height: 30px; display: block; background-repeat: no-repeat; font-weight: bold; }
    .cb-enable span { background-position: left -90px; padding: 0 10px; }
    .cb-disable span { background-position: right -180px;padding: 0 10px; }
    .cb-disable.selected { background-position: 0 -30px; }
    .cb-disable.selected span { background-position: right -210px; color: #fff; }
    .cb-enable.selected { background-position: 0 -60px; }
    .cb-enable.selected span { background-position: left -150px; color: #fff; }
    .switch label, h2 {cursor:pointer;-moz-user-select:-moz-none;-o-user-select:none;-khtml-user-select:none;-webkit-user-select:none;}
</style>
			]]></add>
		</operation>
	</file>
	<file name="catalog/controller/product/product.php">
        <operation>
    		<search position="replace" error="log" offset="13"><![CDATA[
			    $json['error'] = $this->language->get('error_name');
			]]></search>
			<add><![CDATA[
                $json['error'] = $this->language->get('error_name');
            }
            
			$text_symbol = $this->config->get('config_review_text_symbol');
            
            if (!isset($text_symbol)) {
                if ((utf8_strlen($this->request->post['text']) < 25) || (utf8_strlen($this->request->post['text']) > 1000)) {
        		    $json['error'] = $this->language->get('error_text');
			    }
            } else {
                if ((utf8_strlen($this->request->post['text']) < $text_symbol) || (utf8_strlen($this->request->post['text']) > 1000)) {
    			    $json['error'] = sprintf($this->language->get('error_text_symbol'), $text_symbol);
			    }
            }
            
            if (empty($this->request->post['rating'])) {
                $json['error'] = $this->language->get('error_rating');
            }
            
            if ($this->config->get('config_review_captcha'))  {
        	    if (empty($this->session->data['captcha']) || ($this->session->data['captcha'] != $this->request->post['captcha'])) {
			    	$json['error'] = $this->language->get('error_captcha');
			    }
            }
			]]></add>
		</operation>
        <operation>
    		<search position="replace" error="log"><![CDATA[
			$json['success'] = $this->language->get('text_success');
			]]></search>
			<add><![CDATA[
            if ($this->config->get('config_review_email')) {
            $this->language->load('mail/new_review');

            $customer_name = html_entity_decode($this->request->post['name'], ENT_QUOTES, 'UTF-8');
            $subject = "[".$this->config->get('config_name')."] ".sprintf($this->language->get('text_subject'), $customer_name);
            $review = html_entity_decode($this->request->post['text'], ENT_QUOTES, 'UTF-8');
            $review1 = html_entity_decode($this->request->post['good'], ENT_QUOTES, 'UTF-8');
            $review2 = html_entity_decode($this->request->post['bads'], ENT_QUOTES, 'UTF-8');
            $review_id = $this->model_catalog_review->getLastReview();

            $template = new Template();

            $template->data['title']            = $subject;
            $template->data['text_from']         = sprintf($this->language->get('text_from'), html_entity_decode($customer_name, ENT_QUOTES, 'UTF-8'));
            $template->data['text_review']      = $this->language->get('text_review');
            $template->data['review']           = $review;
            $template->data['review1']           = $review1;
            $template->data['review2']           = $review2;
            $template->data['text_approve']      = $this->language->get('text_approve');
            $template->data['text_approve_link']   = $this->language->get('text_approve_link');

            $template->data['store_url']         = $this->config->get('config_url');
            $template->data['store_name']         = $this->config->get('config_name');
            $template->data['approve_url']         = HTTP_SERVER. 'admin/index.php?route=catalog/review/update&review_id='.$review_id;

            $template->data['image'] = HTTP_SERVER."image/".$this->config->get('config_logo');

            if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/mail/new_review.tpl')) {
                $html = $template->fetch($this->config->get('config_template') . '/template/mail/new_review.tpl');
            } else {
                $html = $template->fetch('default/template/mail/new_review.tpl');
            }
			

            $mail = new Mail();
            $mail->protocol = $this->config->get('config_mail_protocol');
            $mail->parameter = $this->config->get('config_mail_parameter');
            $mail->hostname = $this->config->get('config_smtp_host');
            $mail->username = $this->config->get('config_smtp_username');
            $mail->password = $this->config->get('config_smtp_password');
            $mail->port = $this->config->get('config_smtp_port');
            $mail->timeout = $this->config->get('config_smtp_timeout');

            $mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
            $mail->setHtml($html);

            $mail->setTo($this->config->get('config_email'));
            $mail->setFrom($this->config->get('config_email'));
            $mail->setSender($this->config->get('config_name'));
            $mail->send();
            }
            if (!$this->config->get('config_review_statusp'))  {
                $json['success'] = $this->language->get('text_success');
            } else {
                $json['success'] = $this->language->get('text_success_status');
            }
            ]]></add>
    	</operation>
		<operation>
			<search position="after" error="log"><![CDATA[
			$this->model_catalog_product->updateViewed($this->request->get['product_id']);
            ]]></search>
			<add><![CDATA[
		$this->load->model('catalog/review');
		
    	$this->data['text_on'] = $this->language->get('text_on');
		$this->data['text_no_reviews'] = $this->language->get('text_no_reviews');
        $this->data['entry_good'] = $this->language->get('entry_good');
    	$this->data['entry_bads'] = $this->language->get('entry_bads');
        $this->data['text_bads'] = $this->language->get('text_bads');
    	$this->data['text_good'] = $this->language->get('text_good');
		$this->data['text_answer'] = $this->language->get('text_answer');
		$this->data['text_comment'] = $this->language->get('text_comment');
		
		if (isset($this->request->get['page'])) {
			$page = $this->request->get['page'];
		} else {
			$page = 1;
		}
		
		$this->data['reviews'] = array();
		
		$review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']);
		
		$results = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id'], ($page - 1) * 5, 5);
      	
		foreach ($results as $result) {
        if ($result['html_status'] == 1) {
        	$this->data['reviews_array'][] = array(
				'product_id' => $result['product_id'],
				'review_id'  => $result['review_id'],
        		'author'     => $result['author'],
				'text'       => html_entity_decode($result['text'], ENT_QUOTES, 'UTF-8'),
                'good'       => html_entity_decode($result['good'], ENT_QUOTES, 'UTF-8'),
    		    'bads'       => html_entity_decode($result['bads'], ENT_QUOTES, 'UTF-8'),
				'answer'     => html_entity_decode($result['answer'], ENT_QUOTES, 'UTF-8'),
				'purchased'  => $result['purchased'],
				'addimage'   => $result['addimage'],
				'rating'     => (int)$result['rating'],
        		'reviews'    => sprintf($this->language->get('text_reviews'), (int)$review_total),
        		'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added']))
        	);
            } else {
            $this->data['reviews_array'][] = array(
    			'product_id' => $result['product_id'],
				'review_id'  => $result['review_id'],
        		'author'     => $result['author'],
				'text'       => $result['text'],
                'good'       => $result['good'],
    		    'bads'       => $result['bads'],
				'answer'     => $result['answer'],
				'purchased'  => $result['purchased'],
				'addimage'   => $result['addimage'],
				'rating'     => (int)$result['rating'],
        		'reviews'    => sprintf($this->language->get('text_reviews'), (int)$review_total),
        		'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added']))
        	);
            }
      	}
		
		$pagination = new Pagination();
		$pagination->total = $review_total;
		$pagination->page = $page;
		$pagination->limit = 5;
		$pagination->text = $this->language->get('text_pagination');
		$pagination->url = $this->url->link('product/product/review', 'product_id=' . $this->request->get['product_id'] . '&page={page}');
		
		$this->data['pagination'] = $pagination->render();
		
	
            ]]></add>
		</operation>
	</file>
	<file name="catalog/language/russian/product/product.php">
		<operation>
			<search position="before"><![CDATA[
			?>
			]]></search>
			<add><![CDATA[
            $_['button_continue']       = 'Оставить отзыв';
    		$_['entry_good']            = 'Достоинства:';
			$_['entry_bads']            = 'Недостатки:';
            $_['entry_review']          = 'Комментарий:';
            $_['text_answer']           = 'Администратор:';
            $_['text_success_status']   = 'Спасибо за ваш отзыв. Он появится после обновления страницы';
            $_['error_text']            = 'Текст комментария должен быть от 25 до 1000 символов!';
            $_['error_text_symbol']     = 'Текст комментария должен быть от %s до 1000 символов!';
            $_['error_name']            = 'Ваше имя должно быть от 3 до 25 символов!';
            $_['entry_captcha']         = 'Код с картинки:';
    		$_['text_on']               = ' от ';
			]]></add>
		</operation>
	</file>
	<file name="catalog/model/catalog/review.php">
        <operation>
            <search position="replace"><![CDATA[
                public function addReview($product_id, $data) {
	
            ]]></search>
            <add><![CDATA[
                public function getLastReview(){
                    $query = $this->db->query("SELECT review_id FROM ".DB_PREFIX."review WHERE customer_id = '".$this->customer->getId()."' ORDER BY `review_id` DESC LIMIT 1");
                   return $query->row['review_id'];
                }
                public function addReview($product_id, $data) {
                if (!$this->config->get('config_review_statusp'))  {
                    $review_statusp = 0;
                } else {
                    $review_statusp = 1;
                }
            ]]></add>
        </operation>
		<operation>
    		<search position="replace" error="log"><![CDATA[
			    $this->db->query("INSERT INTO " . DB_PREFIX . "review SET
			]]></search>
			<add><![CDATA[
                $this->db->query("INSERT INTO " . DB_PREFIX . "review SET addimage = '" . $this->db->escape($data['addimage']) . "', good = '" . $this->db->escape($data['good']) . "', bads = '" . $this->db->escape($data['bads']) . "', status = '" . $review_statusp . "',
            ]]></add>
		</operation>
		<operation>
			<search position="replace" error="log"><![CDATA[
			    $query = $this->db->query("SELECT r.review_id,
			]]></search>
			<add><![CDATA[
			    $query = $this->db->query("SELECT r.review_id, r.answer, r.html_status, r.purchased, r.addimage, r.good, r.bads,
			]]></add>
		</operation>
	</file>
	<file name="catalog/view/theme/default/template/product/product.tpl">
		<operation>
			<search position="replace" offset="24" error="log"><![CDATA[
			<b><?php echo $entry_name; ?></b><br />
			]]></search>
			<add><![CDATA[
			<div id="review-form">
            <b style="display:block;float:left;width:150px;padding:4px 0 4px 0;"><?php echo $entry_name; ?></b>
            <input type="text" name="name" value="" style="margin-left:40px;"/>
			<br><br>
            <div class="rating">
                <label class="entry-rating"><?php echo $entry_rating; ?></label>
                <div class="radio-div" style="margin-left:45px;">
                    <input class="radio-star" type="radio" name="rating" value="1" />
                    <input class="radio-star" type="radio" name="rating" value="2" />
                    <input class="radio-star" type="radio" name="rating" value="3" />
                    <input class="radio-star" type="radio" name="rating" value="4" />
                    <input class="radio-star" type="radio" name="rating" value="5" />
                </div>
            <div class="star-div"><span class="icstars-0"></span></div>
            </div>
            <br><br>
			<b class="entry-b displayg"><?php echo $entry_good; ?></b>
			<textarea class="displayg" name="good" cols="40" rows="6"></textarea>
			<br class="displayg">
			<b class="entry-b displayb"><?php echo $entry_bads; ?></b>
			<textarea class="displayb" name="bads" cols="40" rows="6"></textarea>
			<br class="displayb">
			<b class="entry-b"><?php echo $entry_review; ?></b>
            <textarea name="text" cols="40" rows="6"></textarea>
            <br>
            <a id="spoilerclick" class="displayf">Добавить фото</a>
            <br>
            <div id="addimgsp" class="displayf">
                <b style="display:block;float:left;width:150px;padding:4px 0 4px 0;">Ссылка на фото:</b>
                <input type="text" name="addimage" value="" style="margin-left:40px;width: 306px;"/>
            </div>
            <div class="displayc">
            <b style="display:block;float:left;width:150px;padding:4px 0 4px 0;"><?php echo $entry_captcha; ?></b>
            <input type="text" name="captcha" value="" style="margin-left:40px;vertical-align:top;width:206px;" />
            <img src="index.php?route=product/product/captcha" alt="" id="captcha" /><br>
            </div>
            <br>
<?php if (!$this->config->get('config_review_good'))  { ?>
<style>.displayg{display:none!important;}</style>
<?php } ?>
<?php if (!$this->config->get('config_review_bad'))  { ?>
<style>.displayb{display:none!important;}</style>
<?php } ?>
<?php if (!$this->config->get('config_review_addimage'))  { ?>
<style>.displayf{display:none!important;}</style>
<?php } ?>
<?php if (!$this->config->get('config_review_captcha'))  { ?>
<style>.displayc{display:none!important;}</style>
<?php } ?>
<script>jQuery('.radio-star').hover(function(){var stars = jQuery(this).val();jQuery('.star-div').html('<span class="icstars-'+ stars +'"></span><i id="settext-'+ stars +'"></i>');},function(){var start = jQuery('input:radio[name=rating]:checked').val();if(typeof  start == 'undefined' ){start = 0;}jQuery('.star-div').html('<span class="icstars-'+ start +'"></span><i id="settext-'+ start +'"></i>');});jQuery('.radio-star').click(function(){jQuery('.radio-star').each(function(){jQuery(this).attr( 'checked', false );});jQuery(this).attr( 'checked', true );jQuery(this).each(function(){if(jQuery(this).attr("checked")=="checked"){var s = jQuery(this).val();jQuery('.star-div').stop().html('<span class="icstars-'+ s +'"></span><i id="settext-'+ s +'"></i>');}});});</script>
<script>
$(document).ready(function(){
  $('.review div:first a:last').click(function(){
    var offset1 = $('#review-title').prev().offset();
    offset1 = offset1 ? offset1.top : 10000;
    $('html, body').animate({ scrollTop: offset1 }, 'slow');
    $('#review-title').siblings('#review-form').stop(false, true).slideDown(500);
    $('#review-title').html('Скрыть форму для отзыва');
  });
  $('.review div:first a:first').click(function(){
    var offset = $('.review-list').prev().offset();
    $('html, body').animate({ scrollTop: offset.top }, 'slow');
  });
  $('#addimgsp').hide();
  $('#spoilerclick').toggle(
    function(){
      $(this).siblings('#addimgsp').stop(false, true).slideDown(500);
    },
   function(){
      $(this).siblings('#addimgsp').stop(false, true).slideUp(500);
   }
 );
  $('#review-form').hide();
  $('#review-title').before('<img src="image/review-new.png" height="22px" width="22px" alt="review icon" style="float: left;margin: -2px 3px 0 0;" />');
  $('#review-title').toggle(
    function(){
      $(this).siblings('#review-form').stop(false, true).slideDown(500);
      $(this).html('Скрыть форму для отзыва');
      var offset1 = $('#review-title').prev().offset();
        offset1 = offset1 ? offset1.top : 10000;
        $('html, body').animate({ scrollTop: offset1 }, 'slow');
    },
   function(){
      $(this).siblings('#review-form').stop(false, true).slideUp(500);
      $(this).html('Написать отзыв');
   }
 );
});
</script>
<script>
$(document).ready(function(){
    $('#captcha').click(function() {$(this).attr('src', 'index.php?route=product/product/captcha&rand='+ Math.round((Math.random() * 10000 )));});
    $('#captcha').after('<img src="image/refresh.png" style="margin:0 0 4px -16px;z-index:-1;position:relative;" />');
});
</script>
<style>
#settext-1:before{content: "Ужасно";margin-left: 7px;}
#settext-2:before{content: "Плохо";margin-left: 7px;}
#settext-3:before{content: "Средне";margin-left: 7px;}
#settext-4:before{content: "Хорошо";margin-left: 7px;}
#settext-5:before{content: "Отлично";margin-left: 7px;}
#review-title{cursor:pointer;}
.review-list .author{margin:0!important;}
.review-list .text{margin-bottom: 5px;}
#tab-review .minus {padding:0 0 8px 22px;background-image:url(image/minus.png);background-repeat: no-repeat;}
#tab-review .plus {padding:0 0 8px 22px;background-image:url(image/plus.png);background-repeat: no-repeat;}
#tab-review input[type='text']{height:17px;}
#tab-review input[type='text'], textarea{color: #333;box-shadow: inset 0px 2px 8px rgba(32, 74, 96, 0.2), 0px 0px 3px white;-moz-box-shadow: inset 0px 2px 8px hsla(200, 50%, 25%, 0.2), 0px 0px 3px white;-webkit-box-shadow: inset 0px 2px 8px rgba(32, 74, 96, 0.2), 0px 0px 3px white;-webkit-transition: all 200ms;-moz-transition: all 200ms;-ms-transition: all 200ms;-o-transition: all 200ms;transition: all 200ms;padding:3px !important;margin-top:2px;margin-bottom:2px;}
#tab-review input:focus, textarea:focus {box-shadow: inset 0px 2px 8px rgba(255, 255, 255, 0), 0px 0px 5px #209FDF;-moz-box-shadow: inset 0px 2px 8px hsla(0, 100%, 100%, 0), 0px 0px 5px hsl(200, 75%, 50%);-webkit-box-shadow: inset 0px 2px 8px rgba(255, 255, 255, 0), 0px 0px 5px #209FDF;background-color: #FFF;outline: none;border-color: rgba(255, 255, 255, 0);}
#tab-review .entry-b{display:block;float:left;width:150px;padding:47px 0 53px 0;}
#tab-review textarea{height:108px;min-height:108px;min-width:306px;max-width:540px;margin-left:40px;}
#tab-review textarea:focus,input:focus{outline:none;}
#tab-review #captcha{margin-top:2px;margin-left:-4px;cursor:pointer;padding-right:18px;}
#tab-review > div .radio-div {width: 77px;float: left;margin-left: 5px;}
#tab-review > div .radio-div input[type=radio] {position:relative;margin:0 0 0 -4px;padding:0;width:16px;height: 17px;opacity:0;z-index:2;cursor:pointer;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter: alpha(opacity=0);}
#tab-review .star-div{height:17px;float:left;margin:1px 0 0 -84px;}
#tab-review .entry-rating{cursor:default;display:block;float:left;width:150px;padding:4px 0 4px 0;font-weight:bold;}
.star-div span{width:77px;height:17px;display:inline-block;background: url(image/stars.png) no-repeat;}
span.icstars-0{background-position:0 0}
span.icstars-1{background-position:0 -16px}
span.icstars-2{background-position:0 -32px}
span.icstars-3{background-position:0 -48px}
span.icstars-4{background-position:0 -64px}
span.icstars-5{background-position:0 -80px}
</style>
<style>.vot_updown2{float:right;font-size: 13px !important;} #yesvot{color: #298705;font-size: 13px;} #novot{color: red;font-size: 13px;}</style>
<script src="catalog/controller/voting/voting.js" type="text/javascript"></script>
			]]></add>
		</operation>
		<operation>
            <search position="after" error="log"><![CDATA[
        		id="button-review"
			]]></search>
			<add><![CDATA[
			</div>
			]]></add>
        </operation>
		<operation>
			<search position="after" error="log"><![CDATA[
			$('input[name=\'name\']').val('');
			]]></search>
			<add><![CDATA[				
			$('textarea[name=\'good\']').val('');
			$('textarea[name=\'bads\']').val('');
			$('input[name=\'addimage\']').val('');
			]]></add>
		</operation>
        <operation>
    		<search position="replace" offset="10" error="log"><![CDATA[
			$('#review .pagination a').live('click', function() {
			]]></search>
			<add><![CDATA[
			]]></add>
		</operation>
		<operation>
			<search position="replace" error="log"><![CDATA[
			data: 'name=' + encodeURIComponent($('input[name=\'name\']').val()) + '&text=' + encodeURIComponent($('textarea[name=\'text\']').val()) + '&rating=' + encodeURIComponent($('input[name=\'rating\']:checked').val() ? $('input[name=\'rating\']:checked').val() : '') + '&captcha=' + encodeURIComponent($('input[name=\'captcha\']').val()),
			]]></search>
			<add><![CDATA[
			data: 'name=' + encodeURIComponent($('input[name=\'name\']').val()) + '&addimage=' + encodeURIComponent($('input[name=\'addimage\']').val()) + '&good=' + encodeURIComponent($('textarea[name=\'good\']').val()) + '&bads=' + encodeURIComponent($('textarea[name=\'bads\']').val()) + '&text=' + encodeURIComponent($('textarea[name=\'text\']').val()) + '&rating=' + encodeURIComponent($('input[name=\'rating\']:checked').val() ? $('input[name=\'rating\']:checked').val() : '') + '&captcha=' + encodeURIComponent($('input[name=\'captcha\']').val()),
			]]></add>
		</operation>
        <operation>
    		<search position="replace" error="log"><![CDATA[
			<div id="review"></div>
            ]]></search>
			<add><![CDATA[
			<div id="review">
    		 <?php if ($reviews_array) { ?>
                <?php foreach ($reviews_array as $review) { ?>
                <div class="review-list">
                  <div class="author">
				  <b><?php echo $review['author']; ?></b> <?php echo $text_on; ?> <?php echo $review['date_added']; ?>
				  <?php if ($review['purchased'] == 1) { ?>
					<img src="image/man-with-cart2.png" alt="<?php echo $review['author']; ?> купил(а) этот товар в нашем магазине" title="<?php echo $review['author']; ?> купил(а) этот товар в нашем магазине" width="14px" height="11px" />
				  <?php } ?>
				  </div>
                  <div class="rating"><img src="catalog/view/theme/default/image/stars-<?php echo $review['rating'] . '.png'; ?>" alt="<?php echo $review['reviews']; ?>" /></div>
                  <br/>
    		<?php if ($review['good']) { ?>
			<br/>
			<div class="plus"><?php echo preg_replace("/\s\s+/", "<br>", $review['good']); ?></div>
			<?php } ?>
			<?php if ($review['bads']) { ?>
			<br/>
			<div class="minus"><?php echo preg_replace("/\s\s+/", "<br>", $review['bads']); ?></div>
			<?php } ?>
			<?php if ($review['text']) { ?>
			<br/>
			<div class="text"><?php echo preg_replace('/\s\s+/', "<br>", $review['text']); ?></div>
			<?php } ?>
            <?php if ($review['addimage']) { ?>
            <div class="addimage"><a href="<?php echo $review['addimage']; ?>" class="colorbox"><img src="<?php echo $review['addimage']; ?>" style="max-width:150px;max-height:100px;" /></a></div>
            <?php } ?>
            <?php if ($review['answer']) { ?>
    		<br/><div class="answer" style="margin-left: 25px; padding: 5px; background: #F7F4EA; font-style: italic;"><?php echo '<b>'.$text_answer.'</b> '.preg_replace('/\s\s+/', "<br>", $review['answer']); ?></div>
			<?php } ?>
			<div class="vot_updown2" id="vt_<?php echo $review['review_id']; ?>_<?php echo $review['product_id']; ?>_<?php echo $review['rating']; ?>"></div>
                </div>
                <?php } ?>
                <div class="pagination"><?php echo $pagination; ?></div>
                <?php } else { ?>
                <div class="content"><?php echo $text_no_reviews; ?></div>
                <?php } ?>
			</div>
            ]]></add>
		</operation>
	</file>
    <file name="system/library/captcha.php">
    <operation>
    <search position="replace" offset="1" error="log"><![CDATA[
    protected $width = 35;
    ]]></search>
    <add><![CDATA[
    protected $width = 25;
    protected $height = 100;
    ]]></add>
    </operation>
    <operation>
    <search position="replace" offset="3" error="log"><![CDATA[
    imagefilledrectangle($image, 0, 0, $width, 0, $black);
    ]]></search>
    <add><![CDATA[
    $grey = imagecolorallocate($image, 204, 204, 204);
    imagefilledrectangle($image, 0, 0, $width, 0, $grey);
    imagefilledrectangle($image, $width - 1, 0, $width - 1, $height - 1, $grey);
    imagefilledrectangle($image, 0, 0, 0, $height - 1, $grey);
    imagefilledrectangle($image, 0, $height - 1, $width, $height - 1, $grey);
    ]]></add>
    </operation>
    </file>
    <file name="admin/view/template/setting/setting.tpl">
        <operation>
         <search position="after"><![CDATA[
         <div id="tab-option">
         ]]></search>
         <add><![CDATA[
         <h2>Отзывы</h2>
          <table class="form">
            <tr>
              <td>Поле недостатков</td>
              <td><?php if ($config_review_bad) { ?>
                <input type="radio" name="config_review_bad" value="1" checked="checked" />Да
                <input type="radio" name="config_review_bad" value="0" />Нет
                <?php } else { ?>
                <input type="radio" name="config_review_bad" value="1" />Да
                <input type="radio" name="config_review_bad" value="0" checked="checked" />Нет
                <?php } ?></td>
            </tr>
            <tr>
              <td>Поле достоинств</td>
              <td><?php if ($config_review_good) { ?>
                <input type="radio" name="config_review_good" value="1" checked="checked" />Да
                <input type="radio" name="config_review_good" value="0" />Нет
                <?php } else { ?>
                <input type="radio" name="config_review_good" value="1" />Да
                <input type="radio" name="config_review_good" value="0" checked="checked" />Нет
                <?php } ?></td>
            </tr>
            <tr>
              <td>Поле фото</td>
              <td><?php if ($config_review_addimage) { ?>
                <input type="radio" name="config_review_addimage" value="1" checked="checked" />Да
                <input type="radio" name="config_review_addimage" value="0" />Нет
                <?php } else { ?>
                <input type="radio" name="config_review_addimage" value="1" />Да
                <input type="radio" name="config_review_addimage" value="0" checked="checked" />Нет
                <?php } ?></td>
            </tr>
            <tr>
              <td>Поле капчи</td>
              <td><?php if ($config_review_captcha) { ?>
                <input type="radio" name="config_review_captcha" value="1" checked="checked" />Да
                <input type="radio" name="config_review_captcha" value="0" />Нет
                <?php } else { ?>
                <input type="radio" name="config_review_captcha" value="1" />Да
                <input type="radio" name="config_review_captcha" value="0" checked="checked" />Нет
                <?php } ?></td>
            </tr>
            <tr>
              <td>Автопубликация отзывов</td>
              <td><?php if ($config_review_statusp) { ?>
                <input type="radio" name="config_review_statusp" value="1" checked="checked" />Да
                <input type="radio" name="config_review_statusp" value="0" />Нет
                <?php } else { ?>
                <input type="radio" name="config_review_statusp" value="1" />Да
                <input type="radio" name="config_review_statusp" value="0" checked="checked" />Нет
                <?php } ?></td>
            </tr>
            <tr>
              <td>Оповещение о новом отзыве по e-mail</td>
              <td><?php if ($config_review_email) { ?>
                <input type="radio" name="config_review_email" value="1" checked="checked" />Да
                <input type="radio" name="config_review_email" value="0" />Нет
                <?php } else { ?>
                <input type="radio" name="config_review_email" value="1" />Да
                <input type="radio" name="config_review_email" value="0" checked="checked" />Нет
                <?php } ?></td>
            </tr>
            <tr>
              <td>Мин длина комментария</td>
              <td>
                <?php if (empty($config_review_text_symbol)) { ?>
                <input type="text" name="config_review_text_symbol" value="25" size="3" />
                <?php } else { ?>
                <input type="text" name="config_review_text_symbol" value="<?php echo $config_review_text_symbol; ?>" size="3" />
                <?php } ?>
              </td>
            </tr>
          </table>
         ]]></add>
        </operation>
    </file>
    <file name="admin/controller/setting/setting.php">
        <operation>
        <search position="before"><![CDATA[
         if (isset($this->request->post['config_catalog_limit'])) {
         ]]></search>
         <add><![CDATA[
         if (isset($this->request->post['config_review_good'])) {
            $this->data['config_review_good'] = $this->request->post['config_review_good'];
		 } else {
			$this->data['config_review_good'] = $this->config->get('config_review_good');
		 }
         if (isset($this->request->post['config_review_bad'])) {
            $this->data['config_review_bad'] = $this->request->post['config_review_bad'];
		 } else {
			$this->data['config_review_bad'] = $this->config->get('config_review_bad');
		 }
         if (isset($this->request->post['config_review_addimage'])) {
            $this->data['config_review_addimage'] = $this->request->post['config_review_addimage'];
		 } else {
			$this->data['config_review_addimage'] = $this->config->get('config_review_addimage');
		 }
         if (isset($this->request->post['config_review_captcha'])) {
            $this->data['config_review_captcha'] = $this->request->post['config_review_captcha'];
		 } else {
			$this->data['config_review_captcha'] = $this->config->get('config_review_captcha');
		 }
         if (isset($this->request->post['config_review_statusp'])) {
            $this->data['config_review_statusp'] = $this->request->post['config_review_statusp'];
    	 } else {
			$this->data['config_review_statusp'] = $this->config->get('config_review_statusp');
		 }
         if (isset($this->request->post['config_review_email'])) {
            $this->data['config_review_email'] = $this->request->post['config_review_email'];
         } else {
			$this->data['config_review_email'] = $this->config->get('config_review_email');
		 }
         if (isset($this->request->post['config_review_text_symbol'])) {
            $this->data['config_review_text_symbol'] = $this->request->post['config_review_text_symbol'];
         } else {
    		$this->data['config_review_text_symbol'] = $this->config->get('config_review_text_symbol');
		 }
         ]]></add>
        </operation>
    </file>
 </modification>

 

 

P.S. Учимся оформлять правильно посты, прячем длинные сообщения под спойлер!

Ссылка на комментарий
Поделиться на других сайтах

21 минуты назад, admin сказал:

а автор что говорит ?

Автора, vivivor, пытался найти, но на форумах он давно не появляется. Модуль был выложен в свободный доступ, так что тех. поддержки как при покупке уже нету.

Вот и пытаюсь решить проблему, если не получится буду искать аналог.

 

P.s извините за оформление, не нашел спойлер в форме.

Ссылка на комментарий
Поделиться на других сайтах

3 часа назад, WarStyle сказал:

 

@markimax - у этого господина есть хороший модуль с отзывами, напишите ему в ЛС)

Уже общался, скорее всего остановлюсь на его модуле, вижу что с этим ничего толкового не будет, так как автор забросил модуль.

Ссылка на комментарий
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу