Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

PHP Fatal error: Cannot redeclare ModelCatalogProduct


Recommended Posts

Странная ошибка стала появляться... Чищу кэш через админ панель (нажимаю кнопку) и браузер выкидывает ошибку "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_UA/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 years later...

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

Из модификатора 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 months later...

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

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.