Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

PHP Fatal error: Cannot redeclare ModelCatalogProduct


 Погделиться

Рекомендованные сообещёния

Странная ошибка сила появляться... Чищу кэш через админ панель (нажимаю кнопку) и браузер выкидывает ошибку "SERVER ERROR 500". Сайт рилииет, но при ввогде логина и пароля для админ панели, не пускает и опять эи ошибка "SERVER ERROR 500". 

Тех подгдержка хостинга показывает вот икую ошибку:

PHP Fatal error: Cannot redeclare ModelCatalogProduct::getProductMainCategoryId() in /****/site/public_html/system/storage/modification/admin/model/catalog/product.php on line 711

Вот те строки в этом файле:


	public function getProductMainCategoryId($product_id) {
		$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1");

		return ($query->num_rows ? (int)$query->row['category_id'] : 0);
	}

Тех подгдержка им что-то гделает и врогде все рилииет, могу зайти в админ панель... Но после обновления кэш, опять эи ошибка...

 

Подскажите, что это может быть?

 

ocStore 2.1.0.1

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


Это модификатор какой-то хулиганит.

Предположительно модификатор всивляет функцию getProductMainCategoryId в файл 

/admin/model/catalog/product.php

Хотя эи функция им уже есть.

Или модификатор дважды пыиется всивить эту функцию, т.к. дважды находит предмет поиска

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

6 минут назад, chick сказал:

Это модификатор какой-то хулиганит.

Предположительно модификатор всивляет функцию getProductMainCategoryId в файл 

/admin/model/catalog/product.php

Хотя эи функция им уже есть.

Или модификатор дважды пыиется всивить эту функцию, т.к. дважды находит предмет поиска

Как его можно выловить? Последнее что сивил, это SeoPro с сайи http://www.opencartjazz.com/en/ocj-seopro-oc2

Он был глючный и выдавал икую ошибку... После чего я из бэкапа воссиновил сайт и базу... 

Но то ли не все воссиновил, то ли не в бабине гдело...

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


Нужно просмотреть все модификаторы.

Часть из них может храниться в директории system с расширением xml

Часть из них в базе данных.

Скачать их и посмотреть что внутри можете с помощью этого модификатора:

http://oparin.info/web/modifikator-kotoryj-skachivaet-modifikatory

Качаете все файлы ищите в них getProductMainCategoryId 

Когда находите - липотому что правите, липотому что отключаете

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

1 час назад, chick сказал:

Нужно просмотреть все модификаторы.

Часть из них может храниться в директории system с расширением xml

Часть из них в базе данных.

Скачать их и посмотреть что внутри можете с помощью этого модификатора:

http://oparin.info/web/modifikator-kotoryj-skachivaet-modifikatory

Качаете все файлы ищите в них getProductMainCategoryId 

Когда находите - липотому что правите, липотому что отключаете

А просто поиск по всем файлам сайте не прокатит?

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


1 час назад, chick сказал:

Нужно просмотреть все модификаторы.

Часть из них может храниться в директории system с расширением xml

Часть из них в базе данных.

Скачать их и посмотреть что внутри можете с помощью этого модификатора:

http://oparin.info/web/modifikator-kotoryj-skachivaet-modifikatory

Качаете все файлы ищите в них getProductMainCategoryId 

Когда находите - липотому что правите, липотому что отключаете

Короче нашел в базе sql https://monosnap.com/file/S9LETdqmdoodBL1VWtl0BMDblmFpkR

<?xml version="1.0" encoding="utf-8"?>
<modification>
    <code>seopro-20150125</code>
    <name>SeoPro for Opencart v2.x</name>
    <version>1.0.2016-01-15</version>
    <author>OpencartJazz.com</author>
    <link>http://www.opencartjazz.com/opencart-module/seo/ocj-seopro-oc2</link>
    <file path="admin/controller/catalog/product.php">
        <operation>
            <search trim="true" index="0"><![CDATA[
		$data['entry_recurring'] = $this->language->get('entry_recurring');
            ]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[
		$data['entry_main_category'] = $this->language->get('entry_main_category');
            ]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[
		$this->load->model('catalog/category');
            ]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[

		$categories = $this->model_catalog_category->getAllCategories();
		$data['categories'] = $this->getAllCategories($categories);

		if (isset($this->request->post['main_category_id'])) {
			$data['main_category_id'] = $this->request->post['main_category_id'];
		} elseif (isset($product_info)) {
			$data['main_category_id'] = $this->model_catalog_product->getProductMainCategoryId($this->request->get['product_id']);
		} else {
			$data['main_category_id'] = 0;
		}
            ]]></add>
        </operation>
	<operation>
            <search regex="true" limit="1" quote="true"><![CDATA[~		$this->response->setOutput(json_encode($json));
	}
~]]></search>
            <add><![CDATA[		$this->response->setOutput(json_encode($json));
	}

	private function getAllCategories($categories, $parent_id = 0, $parent_name = '') {
		$output = array();

		if (array_key_exists($parent_id, $categories)) {
			if ($parent_name != '') {
				$parent_name .= $this->language->get('text_separator');
			}

			foreach ($categories[$parent_id] as $category) {
				$output[$category['category_id']] = array(
					'category_id' => $category['category_id'],
					'name'        => $parent_name . $category['name']
				);

				$output += $this->getAllCategories($categories, $category['category_id'], $parent_name . $category['name']);
			}
		}

		return $output;
	}
]]></add>
        </operation>
    </file>  
    <file path="admin/controller/setting/setting.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$data['entry_seo_url'] = $this->language->get('entry_seo_url');]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[		$data['entry_seo_url_type'] = $this->language->get('entry_seo_url_type');
		$data['entry_seo_url_include_path'] = $this->language->get('entry_seo_url_include_path');
		$data['entry_seo_url_postfix'] = $this->language->get('entry_seo_url_postfix');
]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$data['help_seo_url'] = $this->language->get('help_seo_url');]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[		$data['help_seo_url_include_path'] = $this->language->get('help_seo_url_include_path');
		$data['help_seo_url_postfix'] = $this->language->get('help_seo_url_postfix');
]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$data['config_seo_url'] = $this->config->get('config_seo_url');]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[		}

		if (isset($this->request->post['config_seo_url_type'])) {
			$data['config_seo_url_type'] = $this->request->post['config_seo_url_type'];
		} elseif ($this->config->get('config_seo_url_type')) {
			$data['config_seo_url_type'] = $this->config->get('config_seo_url_type');
		} else {
			$data['config_seo_url_type'] = 'seo_url';
		}

		$data['seo_types'] = array();
		$data['seo_types'][] = array('type' => 'seo_url', 'name' => $this->language->get('text_seo_url'));
		$data['seo_types'][] = array('type' => 'seo_pro', 'name' => $this->language->get('text_seo_pro'));

		if (isset($this->request->post['config_seo_url_include_path'])) {
			$data['config_seo_url_include_path'] = $this->request->post['config_seo_url_include_path'];
		} else {
			$data['config_seo_url_include_path'] = $this->config->get('config_seo_url_include_path');
		}

		if (isset($this->request->post['config_seo_url_postfix'])) {
			$data['config_seo_url_postfix'] = $this->request->post['config_seo_url_postfix'];
		} else {
			$data['config_seo_url_postfix'] = $this->config->get('config_seo_url_postfix');
]]></add>
        </operation>
    </file>

    <file path="admin/language/english/catalog/product.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$_['entry_recurring']        = 'Recurring Profile';]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['entry_main_category']    = 'Main Category:';]]></add>
        </operation>
    </file>
    <file path="admin/language/russian/catalog/product.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$_['entry_recurring']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['entry_main_category']    = 'Главная категория:';]]></add>
        </operation>
    </file>
    <file path="admin/language/ukrainian/catalog/product.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$_['entry_recurring']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['entry_main_category']    = 'Головна категорія:';]]></add>
        </operation>
    </file>
    <file path="admin/language/uk_RU/catalog/product.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$_['entry_recurring']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['entry_main_category']    = 'Головна категорія:';]]></add>
        </operation>
    </file>

    <file path="admin/language/english/setting/setting.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$_['text_smtp']                        = 'SMTP';]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['text_seo_url']                 = 'Default';
$_['text_seo_pro']                 = 'SeoPro';]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$_['entry_seo_url']                    = 'Use SEO URLs';]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['entry_seo_url_type']               = 'SEO URL type';
$_['entry_seo_url_include_path']       = 'SEO URL for product with categories';
$_['entry_seo_url_postfix']            = 'SEO URL ending';]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$_['help_seo_url']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['help_seo_url_include_path']        = 'SEO URL format: <b>/category/subcategory/product</b> (only for SeoPro)';
$_['help_seo_url_postfix']             = 'SEO URL extension, such as <b>.html</b> (only for SeoPro)';]]></add>
        </operation>
    </file>
    <file path="admin/language/russian/setting/setting.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$_['text_smtp']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['text_seo_url']                 = 'Синдартный Seo_Url';
$_['text_seo_pro']                 = 'SeoPro';]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$_['entry_seo_url']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['entry_seo_url_type']               = 'Тип SEO URL';
$_['entry_seo_url_include_path']       = 'SEO URL для товаров включают категории';
$_['entry_seo_url_postfix']            = 'Окончание SEO URL';]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$_['help_seo_url']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['help_seo_url_include_path']        = 'Формат SEO URL: <b>/category/subcategory/product</b> (только для SeoPro)';
$_['help_seo_url_postfix']             = 'Окончание SEO URL, например <b>.html</b> (только для SeoPro)';]]></add>
        </operation>
    </file>
    <file path="admin/language/ukrainian/setting/setting.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$_['text_smtp']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['text_seo_url']                 = 'Звичайний Seo_Url з Опенкарт';
$_['text_seo_pro']                 = 'SeoPro';]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$_['entry_seo_url']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['entry_seo_url_type']               = 'Тип SEO URL';
$_['entry_seo_url_include_path']       = 'SEO URL для товарів согдержит категории';
$_['entry_seo_url_postfix']            = 'Фінальна частина SEO URL';]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$_['help_seo_url']]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[$_['help_seo_url_include_path']        = 'Формат SEO URL: <b>/category/subcategory/product</b> (тільки для SeoPro)';
$_['help_seo_url_postfix']             = 'Фінальна частина SEO URL, наприклад <b>.html</b> (тільки для SeoPro)';]]></add>
        </operation>
    </file>

    <file path="admin/model/catalog/category.php">
        <operation>
            <search trim="true" index="0"><![CDATA[public function getTotalCategoriesByLayoutId($layout_id)]]></search>
            <add position="after" trim="false" offset="4"><![CDATA[	public function getCategoriesByParentId($parent_id = 0) {
		$query = $this->db->query("SELECT *, (SELECT COUNT(parent_id) FROM " . DB_PREFIX . "category WHERE parent_id = c.category_id) AS children FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY c.sort_order, cd.name");

		return $query->rows;
	}

	public function getAllCategories() {
		$category_data = $this->cache->get('category.all.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'));

		if (!$category_data || !is_array($category_data)) {
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "'  AND c.status = '1' ORDER BY c.parent_id, c.sort_order, cd.name");

			$category_data = array();
			foreach ($query->rows as $row) {
				$category_data[$row['parent_id']][$row['category_id']] = $row;
			}

			$this->cache->set('category.all.' . $this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'), $category_data);
		}

		return $category_data;
	}]]></add>
        </operation>
    </file>  
    <file path="admin/model/catalog/product.php">
        <operation>
            <search trim="true" index="0"><![CDATA[if (isset($data['product_category'])]]></search>
            <add position="after" trim="false" offset="4"><![CDATA[
		if (isset($data['main_category_id']) && $data['main_category_id'] > 0) {
			$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND category_id = '" . (int)$data['main_category_id'] . "'");
			$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_category SET product_id = '" . (int)$product_id . "', category_id = '" . (int)$data['main_category_id'] . "', main_category = 1");
		} elseif (isset($data['product_category'][0])) {
			$this->db->query("UPDATE " . DB_PREFIX . "product_to_category SET main_category = 1 WHERE product_id = '" . (int)$product_id . "' AND category_id = '" . (int)$data['product_category'][0] . "'");
		}]]></add>
        </operation>
        <operation>
            <search trim="true" index="1"><![CDATA[if (isset($data['product_category']))]]></search>
            <add position="after" trim="false" offset="4"><![CDATA[
		if (isset($data['main_category_id']) && $data['main_category_id'] > 0) {
			$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND category_id = '" . (int)$data['main_category_id'] . "'");
			$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_category SET product_id = '" . (int)$product_id . "', category_id = '" . (int)$data['main_category_id'] . "', main_category = 1");
		} elseif (isset($data['product_category'])) {
			$this->db->query("UPDATE " . DB_PREFIX . "product_to_category SET main_category = 1 WHERE product_id = '" . (int)$product_id . "' AND category_id = '" . (int)$data['product_category'][0] . "'");
		}]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[return $product_layout_data;]]></search>
            <add position="after" trim="false" offset="1"><![CDATA[
	public function getProductMainCategoryId($product_id) {
		$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1");

		return ($query->num_rows ? (int)$query->row['category_id'] : 0);
	}]]></add>
        </operation>
    </file>  
    <file path="admin/model/openbay/openbay.php">
        <operation>
            <search trim="true" index="0"><![CDATA[curl_setopt($curl, CURLOPT_RETURNTRANSFER, true)]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[			// curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
			// curl_setopt($curl, CURLOPT_POSTREDIR, 7);]]></add>
        </operation>
    </file>  
    <file path="admin/view/template/catalog/product_form.tpl">
        <operation>
            <search trim="true" index="0"><![CDATA[<input type="hidden" name="manufacturer_id" value="<?php echo $manufacturer_id; ?>" />]]></search>
            <add position="after" trim="false" offset="2"><![CDATA[              <div class="form-group">
                <label class="col-sm-2 control-label" for="input-main-category-id"><?php echo $entry_main_category; ?></label>
                <div class="col-sm-10">
                  <select name="main_category_id" id="input-main-category-id" class="form-control">
                    <?php foreach ($product_categories as $category) { ?>
	                <?php if ($category['category_id'] == $main_category_id) { ?>
	                <option value="<?php echo $category['category_id']; ?>" selected="selected"><?php echo $category['name']; ?></option>
	                <?php } else { ?>
	                <option value="<?php echo $category['category_id']; ?>"><?php echo $category['name']; ?></option>
                    <?php } ?>
                    <?php } ?>
	              </select>
                </div>
              </div>]]></add>
        </operation>
    </file>  
    <file path="admin/view/template/setting/setting.tpl">
        <operation>
            <search trim="true" index="0"><![CDATA[<input type="radio" name="config_seo_url" value="0" />]]></search>
            <add position="after" trim="false" offset="5"><![CDATA[              <div class="form-group">
                <label class="col-sm-2 control-label" for="input-seo-url-type"><?php echo $entry_seo_url_type; ?></label>
                <div class="col-sm-10">
                  <select name="config_seo_url_type" id="input-seo-url-type" class="form-control">
                    <?php foreach ($seo_types as $seo_type) { ?>
	                <?php if ($seo_type['type'] == $config_seo_url_type) { ?>
	                <option value="<?php echo $seo_type['type']; ?>" selected="selected"><?php echo $seo_type['name']; ?></option>
	                <?php } else { ?>
	                <option value="<?php echo $seo_type['type']; ?>"><?php echo $seo_type['name']; ?></option>
                    <?php } ?>
                    <?php } ?>
	              </select>
                </div>
              </div>

              <div class="form-group">
                <label class="col-sm-2 control-label"><span data-toggle="tooltip" title="<?php echo $help_seo_url_include_path; ?>"><?php echo $entry_seo_url_include_path; ?></span></label>
                <div class="col-sm-10">
                  <label class="radio-inline">
                    <input type="radio" name="config_seo_url_include_path" value="1" <?php echo $config_seo_url_include_path ? 'checked="checked"' : ''; ?>/>
                    <?php echo $text_yes; ?>
                  </label>
                  <label class="radio-inline">
                    <input type="radio" name="config_seo_url_include_path" value="0" <?php echo !$config_seo_url_include_path ? 'checked="checked"' : ''; ?>/>
                    <?php echo $text_no; ?>
                  </label>
                </div>
              </div>
              <div class="form-group">
                <label class="col-sm-2 control-label" for="input-seo-url-postfix"><span data-toggle="tooltip" title="<?php echo $help_seo_url_postfix; ?>"><?php echo $entry_seo_url_postfix; ?></span></label>
                <div class="col-sm-10">
                  <input type="text" name="config_seo_url_postfix" value="<?php echo $config_seo_url_postfix; ?>" placeholder="<?php echo $entry_seo_url_postfix; ?>" id="input-seo-url-postfix" class="form-control" />
                </div>
              </div>]]></add>
        </operation>
    </file>  
    <file path="catalog/controller/common/header.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$data['name'] = $this->config->get('config_name');]]></search>
            <add position="after" trim="false" offset="0"><![CDATA[		$data['alter_lang'] = $this->getAlterLanguageLinks($this->document->getLinks());]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[return $this->load->view('default/template/common/header.tpl', $data);]]></search>
            <add position="after" trim="false" offset="2"><![CDATA[	
	protected function getAlterLanguageLinks($links) {
		$result = array();
		if ($this->config->get('config_seo_url')) {
			foreach($links as $link) {
				if($link['rel']=='canonical') {
					$url=$link['href'];
					$schema = parse_url($url,PHP_URL_SCHEME);
					$server = strtolower($schema)=='https' ? HTTPS_SERVER : HTTP_SERVER; 
					$cur_lang = substr($url, strlen($server),2);
					$query = substr($url, strlen($server)+2);
					$this->load->model('localisation/language');
					$languages = $this->model_localisation_language->getLanguages();
					$active_langs = array();
					foreach($languages as $lang) {
						if($lang['status']) {
							$active_langs[]=$lang['code'];
						} 
					}
					if(in_array($cur_lang, $active_langs)) {
						foreach($active_langs as $lang) {
							$result[$lang] = $server.$lang.($query ? $query : '');
						}
					}
				}
			}
		}
		return $result;
	}]]></add>
        </operation>
    </file>  
    <file path="catalog/controller/common/home.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$this->document->addLink(HTTP_SERVER, 'canonical');]]></search>
            <add position="replace" trim="false" offset="0"><![CDATA[$this->document->addLink($this->url->link('common/home'), 'canonical');]]></add>
        </operation>
    </file>  
    <file path="catalog/controller/common/language.php">
        <operation>
            <search trim="true" index="0"><![CDATA[$data['redirect'] = $this->url->link('common/home');]]></search>
            <add position="replace" trim="false" offset="0"><![CDATA[			$data['redirect_route'] = 'common/home';
			$data['redirect_query'] = '';
			$data['redirect_ssl']   = '';]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$data['redirect'] = $this->url->link($route, $url, $this->request->server['HTTPS']);]]></search>
            <add position="replace" trim="false" offset="0"><![CDATA[	$data['redirect_route']=$route;
			$data['redirect_query']=$url;
			$data['redirect_ssl']=$this->request->server['HTTPS'];]]></add>
        </operation>
	<operation>
            <search regex="true" limit="1" quote="true"><![CDATA[~		if (isset($this->request->post['redirect'])) {
			$this->response->redirect($this->request->post['redirect']);~]]></search>
            <add><![CDATA[		if (isset($this->request->post['redirect_route'])) {
			$url = $this->url->link($this->request->post['redirect_route'],
					isset($this->request->post['redirect_query']) ? html_entity_decode($this->request->post['redirect_query']) : '',
					isset($this->request->post['redirect_ssl']) ? $this->request->post['redirect_ssl'] : '');
			$this->response->redirect($url);]]></add>
        </operation>
    </file>  
    <file path="catalog/view/theme/default/template/common/header.tpl">
        <operation>
            <search trim="true" index="0"><![CDATA[<script src="catalog/view/javascript/jquery/jquery-2.1.1.min.js" type="text/javascript"></script>]]></search>
            <add position="before" trim="false" offset="0"><![CDATA[<?php foreach ($alter_lang as $lang=>$href) { ?>
<link href="<?php echo $href; ?>" hreflang="<?php echo $lang; ?>" rel="alternate" />
<?php } ?>]]></add>
        </operation>
    </file>  
    <file path="catalog/view/theme/default/template/common/language.tpl">
        <operation>
            <search trim="true" index="0"><![CDATA[<input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />]]></search>
            <add position="replace" trim="false" offset="0"><![CDATA[  <input type="hidden" name="redirect_route" value="<?php echo $redirect_route; ?>" />
  <input type="hidden" name="redirect_query" value="<?php echo isset($redirect_query) ? $redirect_query : ''; ?>" />
  <input type="hidden" name="redirect_ssl" value="<?php echo isset($redirect_ssl) ? $redirect_ssl : ''; ?>" />]]></add>
        </operation>
    </file>  
    <file path="catalog/controller/common/home.php">
	<operation>
            <search regex="true" limit="1" quote="true"><![CDATA[~if (isset($this->request->get['route'])) {
			$this->document->addLink($this->url->link('common/home'), 'canonical');
		}~]]></search>
            <add><![CDATA[$this->document->addLink($this->getCanonical(), 'canonical');]]></add>
        </operation>
        <operation>
            <search trim="true" index="0"><![CDATA[$this->response->setOutput($this->load->view('default/template/common/home.tpl', $data));]]></search>
            <add position="after" trim="false" offset="2"><![CDATA[	
	protected function getCanonical() {
		$url = HTTP_SERVER;
		if( $this->config->get('config_seo_url')
			&& $this->config->get('config_seo_url_type') == 'seo_pro') {
			$url = $this->url->link('common/home');
			$query = $this->db->query("SELECT value FROM " . DB_PREFIX . "setting WHERE store_id = '" . (int)$this->config->get('config_store_id') . "' AND `key` ='config_language'");
				
			$code = $this->session->data['language'];
			
			// Do not show language code for home when default language is always shown
			if( !$this->config->get('ocjazz_seopro_hide_default') 
				&& $code == $query->row['value']) 
			{
				$component = parse_url($url);
				if ($component['scheme'] == 'https') {
					$domain = $this->config->get('config_ssl');
				} else {
					$domain = $this->config->get('config_url');
				}
					
				$url = preg_replace('~('.$domain.')('.$code.'/)(.+)~i', '$1$3',$url);
			}
		}
		return $url;
	}
]]></add>
        </operation>
    </file>  
</modification>

Что тут не ик?

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


Вот ответ тех подгдержки хостинга:

 

Вам нужно отредактировать system/storage/modification/admin/model/catalog/product.php в каилоге сайи site/public_html , и закомментировать строки 711-715, приведя их к икому виду:

/* public function getProductMainCategoryId($product_id) {
$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1");

return ($query->num_rows ? (int)$query->row['category_id'] : 0);
}*/
Ссылка на комменирий
Погделиться на других сайих


Если вырезать из базы эти строки, это поможет? Ничего страшного не бугдет? Или это не решение проблемы, а костыль?

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


9 минут назад, jjoni сказал:

Если вырезать из базы эти строки, это поможет? Ничего страшного не бугдет? Или это не решение проблемы, а костыль?

Это даже на костыль с натяжкой тянет.

Самое простое решение для Вас - отклюлите тот модификатор, который Вы привели выше

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

13 минут назад, chick сказал:

Это даже на костыль с натяжкой тянет.

Самое простое решение для Вас - отклюлите тот модификатор, который Вы привели выше

Ну ик это ж SeoPro... Как без него??

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


Короче вырезал я из базы sql часть этого кода и врогде все зарилиило) Обновил кэш, но ошибка не появилась... Потом подумал и удалил этот модуль) Буду искать люгдей которые смогут помочь и вывести полный путь в хлебных крошках для подкатегорий при коротких URL)

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


  • 3 года спустя...

Решил проблему!

Из модификатора SEO Pro 230x, удалил код добавляющий повторное опрегделение функции  getProductMainCategoryId
Если точнее
из модификатора нужно убрать блок кода:

 
        <operation>
            <search><![CDATA[public function getProductRelated($product_id) {]]></search>
            <add position="before"><![CDATA[	public function getProductMainCategoryId($product_id) {
		$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1");

		return ($query->num_rows ? (int)$query->row['category_id'] : 0);
	}
]]></add>
        </operation>

 

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


В 20.03.2017 в 20:07, chick сказал:

Это модификатор какой-то хулиганит.

 

У меня это модификтор для SEO Pro 230xУбрал операцию всивки кода с повторным опрегделением getProductMainCategoryId и все нормализовалось.

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


В 20.03.2017 в 22:03, jjoni сказал:

Вот ответ тех подгдержки хостинга:

 

Вам нужно отредактировать system/storage/modification/admin/model/catalog/product.php в каилоге сайи site/public_html , и закомментировать строки 711-715, приведя их к икому виду:

/* public function getProductMainCategoryId($product_id) {
$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1");

return ($query->num_rows ? (int)$query->row['category_id'] : 0);
}*/

По поводу правки в каилоге  system/storage/modification/... - ничего глупее придумать не могли,?!
Все что в каилоге .../modification/ каждый раз при листке кеша перезаписывается...

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


  • 7 месяэтов спустя...

все просто заходите в этот файл ищите эту строку смотрите на нее смотрите выше ищите совпагдение и все что в этот строке и ниже удаляете

к примеру в строке 711 есть начало кода а икоеже есть выше вот код дубликат нужно удалить налиная со строки 711

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


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.