Jump to content
Sign in to follow this  
voron121

Редирект на ту же страницу после редактирования товара в админке

Recommended Posts

Доброго времени суток. Господа , есть вопрос который никак не могу решить. Возможно кто то знает как реализовать. Собственно суть : в списке товаров в админке опенкарта жмем кнопку изменить - открывается страница с редактированием товара. После того как мы нажимаем кнопку сохранить нас автоматически кидает в список товаров. При этом не запоминается страница с которой мы пришли и кидает сразу на первую. То есть мы в списке товаров на 10 странице - выбрали товар  -изменили его - сохранили и нас автоматом кидает на первую страницу. Как сделать так , что бы после сохранения товара нас кидало на страницу с которой мы пришли ? 

Share this post


Link to post
Share on other sites

Это не совсем то. Мне не нужна кнопка применить - мне нужно что бы после сохранения меня не перекидывало на первыуй страницу в списке товаров а оставляло на той же странице СПИСКА ТОВАРОВ 

Share this post


Link to post
Share on other sites

Это не совсем то. Мне не нужна кнопка применить - мне нужно что бы после сохранения меня не перекидывало на первыуй страницу в списке товаров а оставляло на той же странице СПИСКА ТОВАРОВ 

Нашли ли решение задачи? Мне тоже интересно ее решение.

Share this post


Link to post
Share on other sites

Нашли ли решение задачи? Мне тоже интересно ее решение.

нет. Решил сделать по другому - ссылка для редактирования товара преобрела target="blanck" так что теперь просто  в новой вкладке открывается страница редактирования 

Share this post


Link to post
Share on other sites

нет. Решил сделать по другому - ссылка для редактирования товара преобрела target="blanck" так что теперь просто  в новой вкладке открывается страница редактирования 

Тоже не плохо, спасибо за идею!)

Share this post


Link to post
Share on other sites

нет. Решил сделать по другому - ссылка для редактирования товара преобрела target="blanck" так что теперь просто  в новой вкладке открывается страница редактирования 

Единственный вопрос, в каком файле находится шаблон?

Share this post


Link to post
Share on other sites

Единственный вопрос, в каком файле находится шаблон?

если не ошибаюсь admin/catalog/product_list.tpl 

Share this post


Link to post
Share on other sites

Нашел)

Для тех кому тоже интересно оставлю это здесь!)

 

Путь к файлу: admin/view/template/catalog

Файл product_list.tpl

найти:

              <td class="right"><?php foreach ($product['action'] as $action) { ?>
                [ <a href="<?php echo $action['href']; ?>"><?php echo $action['text']; ?></a> ]
                <?php } ?></td>

Привести к виду:

              <td class="right"><?php foreach ($product['action'] as $action) { ?>
                [ <a target="blanck" href="<?php echo $action['href']; ?>"><?php echo $action['text']; ?></a> ]
                <?php } ?></td>

дописав target="blanck"

 

Для категорий, тоже самое в файле 

category_list.tpl

Примерно 42 строка))

Share this post


Link to post
Share on other sites

На самом деле, возвращение к странице списка, на которой находится товар, при сохранении или отмене редактирования, предусмотрено по-умолчанию, просто там, видать, баг (по крайней мере в версии 1.5.5.1.2). Его можно самостоятельно исправить в файле admin/controller/catalog/product.php. Нужно найти фрагмент текста

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }
        
        $data = array(
            'filter_name'      => $filter_name, 
            'filter_category_id'      => $filter_category_id, 
            'filter_manufacturer_id'      => $filter_manufacturer_id, 
            'filter_model'      => $filter_model,
            'filter_price'      => $filter_price,
            'filter_quantity' => $filter_quantity,
            'filter_status'   => $filter_status,
            'sort'            => $sort,
            'order'           => $order,
            'start'           => ($page - 1) * $this->config->get('config_admin_limit'),
            'limit'           => $this->config->get('config_admin_limit')
        );

и после

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }

добавить

        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }

чтобы получилось так

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }
        
        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }
        
        $data = array(
            'filter_name'     => $filter_name, 
            'filter_category_id'      => $filter_category_id, 
            'filter_manufacturer_id'      => $filter_manufacturer_id, 
            'filter_model'    => $filter_model,
            'filter_price'    => $filter_price,
            'filter_quantity' => $filter_quantity,
            'filter_status'   => $filter_status,
            'sort'            => $sort,
            'order'           => $order,
            'start'           => ($page - 1) * $this->config->get('config_admin_limit'),
            'limit'           => $this->config->get('config_admin_limit')
        );

Данное решение подходит для версии ocStore 1.5.5.1.2, для других не проверялось.

Share this post


Link to post
Share on other sites

На самом деле, возвращение к странице списка, на которой находится товар, при сохранении или отмене редактирования, предусмотрено по-умолчанию, просто там, видать, баг (по крайней мере в версии 1.5.5.1.2). Его можно самостоятельно исправить в файле admin/controller/catalog/product.php. Нужно найти фрагмент текста

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }
        
        $data = array(
            'filter_name'      => $filter_name, 
            'filter_category_id'      => $filter_category_id, 
            'filter_manufacturer_id'      => $filter_manufacturer_id, 
            'filter_model'      => $filter_model,
            'filter_price'      => $filter_price,
            'filter_quantity' => $filter_quantity,
            'filter_status'   => $filter_status,
            'sort'            => $sort,
            'order'           => $order,
            'start'           => ($page - 1) * $this->config->get('config_admin_limit'),
            'limit'           => $this->config->get('config_admin_limit')
        );

и после

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }

добавить

        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }

чтобы получилось так

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }
        
        if (isset($this->request->get['page'])) {
            $url .= '&page=' . $this->request->get['page'];
        }
        
        $data = array(
            'filter_name'     => $filter_name, 
            'filter_category_id'      => $filter_category_id, 
            'filter_manufacturer_id'      => $filter_manufacturer_id, 
            'filter_model'    => $filter_model,
            'filter_price'    => $filter_price,
            'filter_quantity' => $filter_quantity,
            'filter_status'   => $filter_status,
            'sort'            => $sort,
            'order'           => $order,
            'start'           => ($page - 1) * $this->config->get('config_admin_limit'),
            'limit'           => $this->config->get('config_admin_limit')
        );

Данное решение подходит для версии ocStore 1.5.5.1.2, для других не проверялось.

У меня OC 1.5.6 открыл файл product.php и у меня все так и есть))

Единственное, есть еще несколько строк. Вот так выглядит кусок данного кода: 

if (isset($this->request->get['order'])) {
			$url .= '&order=' . $this->request->get['order'];
		}
		
		if (isset($this->request->get['page'])) {
			$url .= '&page=' . $this->request->get['page'];
		}

  		$this->data['breadcrumbs'] = array();

   		$this->data['breadcrumbs'][] = array(
       		'text'      => $this->language->get('text_home'),
			'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
      		'separator' => false
   		);

   		$this->data['breadcrumbs'][] = array(
       		'text'      => $this->language->get('heading_title'),
			'href'      => $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL'),       		
      		'separator' => ' :: '
   		);
		
		$this->data['insert'] = $this->url->link('catalog/product/insert', 'token=' . $this->session->data['token'] . $url, 'SSL');
		$this->data['copy'] = $this->url->link('catalog/product/copy', 'token=' . $this->session->data['token'] . $url, 'SSL');	
		$this->data['delete'] = $this->url->link('catalog/product/delete', 'token=' . $this->session->data['token'] . $url, 'SSL');
    	
		$this->data['products'] = array();

		$data = array(
			'filter_name'	  => $filter_name, 
			'filter_model'	  => $filter_model,
			'filter_price'	  => $filter_price,
			'filter_quantity' => $filter_quantity,
			'filter_status'   => $filter_status,
			'sort'            => $sort,
			'order'           => $order,
			'start'           => ($page - 1) * $this->config->get('config_admin_limit'),
			'limit'           => $this->config->get('config_admin_limit')
		);

Share this post


Link to post
Share on other sites

Вы смотрите код в методе getList, а нужно в методе filter. Ищите точное вхождение

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }
        
        $data = array(
            'filter_name'      => $filter_name, 
            'filter_category_id'      => $filter_category_id, 
            'filter_manufacturer_id'      => $filter_manufacturer_id, 
            'filter_model'      => $filter_model,
            'filter_price'      => $filter_price,
            'filter_quantity' => $filter_quantity,
            'filter_status'   => $filter_status,
            'sort'            => $sort,
            'order'           => $order,
            'start'           => ($page - 1) * $this->config->get('config_admin_limit'),
            'limit'           => $this->config->get('config_admin_limit')
        );

Share this post


Link to post
Share on other sites

 

Вы смотрите код в методе getList, а нужно в методе filter. Ищите точное вхождение

        if (isset($this->request->get['order'])) {
            $url .= '&order=' . $this->request->get['order'];
        }
        
        $data = array(
            'filter_name'      => $filter_name, 
            'filter_category_id'      => $filter_category_id, 
            'filter_manufacturer_id'      => $filter_manufacturer_id, 
            'filter_model'      => $filter_model,
            'filter_price'      => $filter_price,
            'filter_quantity' => $filter_quantity,
            'filter_status'   => $filter_status,
            'sort'            => $sort,
            'order'           => $order,
            'start'           => ($page - 1) * $this->config->get('config_admin_limit'),
            'limit'           => $this->config->get('config_admin_limit')
        );

У меня в данном файле присутствую всего две строчки $data = array(

Первая строчка описана мной выше, вторая:

if (isset($this->request->get['limit'])) {
				$limit = $this->request->get['limit'];	
			} else {
				$limit = 20;	
			}			
						
			$data = array(
				'filter_name'  => $filter_name,
				'filter_model' => $filter_model,
				'start'        => 0,
				'limit'        => $limit
			);

Share this post


Link to post
Share on other sites

Это связанно с тем, что у вас другая версия. Только что скачал OpenCart версии 1.5.6, там нету метода filter в контроллере ControllerCatalogProduct. Значит, предложенное мною решение вам не подходит.

Share this post


Link to post
Share on other sites

Это связанно с тем, что у вас другая версия. Только что скачал OpenCart версии 1.5.6, там нету метода filter в контроллере ControllerCatalogProduct. Значит, предложенное мною решение вам не подходит.

Очень жаль((

Share this post


Link to post
Share on other sites

самый простой вариант, не требующий затрат и вмешательство в код - открывать окно редактирования товара в новой вкладке по ПКМ ;)

Share this post


Link to post
Share on other sites

в методе filter()

		if (isset($this->request->get['page'])) {
			$url_with_page =  '&page=' . $this->request->get['page'];
		} else {
			$url_with_page =  $url;
		}

		foreach ($results as $result) {
			$action = array();
			
			$action[] = array(
				'text' => $this->language->get('text_edit'),
				'href' => $this->url->link('catalog/product/update', 'token=' . $this->session->data['token'] . '&product_id=' . $result['product_id'] . $url_with_page, 'SSL')
			);

Share this post


Link to post
Share on other sites

 

в методе filter()

		if (isset($this->request->get['page'])) {
			$url_with_page =  '&page=' . $this->request->get['page'];
		} else {
			$url_with_page =  $url;
		}

		foreach ($results as $result) {
			$action = array();
			
			$action[] = array(
				'text' => $this->language->get('text_edit'),
				'href' => $this->url->link('catalog/product/update', 'token=' . $this->session->data['token'] . '&product_id=' . $result['product_id'] . $url_with_page, 'SSL')
			);

Не смог найти метод filter() 

Share this post


Link to post
Share on other sites

Супер! Спасибо всем огромное!


Для моего ocStore 1.5.5.1 подошло решение подправить метод filter(). Теперь все работает четко!


Share this post


Link to post
Share on other sites

Рано обрадовался, сначала вроде работало. Сейчас проверяю, такой глюк, перехожу на страницу например 5, и все, на другие переходить вообще не получается, после обновления страницы опять же получается перейти только на одну любую страницу и все. Если захожу в товар и сохраняюсь, возвращаюсь на туже, но перейти могу только один раз.... 

В чем может быть дело....?

Share this post


Link to post
Share on other sites

Возможно кто-то нашел решение задачи? поделитесь))

Share this post


Link to post
Share on other sites

Рано обрадовался, сначала вроде работало. Сейчас проверяю, такой глюк, перехожу на страницу например 5, и все, на другие переходить вообще не получается, после обновления страницы опять же получается перейти только на одну любую страницу и все. Если захожу в товар и сохраняюсь, возвращаюсь на туже, но перейти могу только один раз.... 

В чем может быть дело....?

РЕШЕНИЕ ЕСТЬ ?

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.