Co zrobi? aby linki do produkt?w by?y seo friendly?

Miejsce na wszelkie dyskusje odnośnie problemów technicznych i ewentualnych pytań z rozbudowaniem systemu w plikach i skryptach Opencart, a które nie dotyczą instalacji.

Re: Co zrobić aby linki do produktów były seo friendly?

Postprzez PiterEL » 28 lut 2013, o 11:49

W których stronach informacyjnych ? Co masz na mysli ?

Nie wiem jak dodać slowo SEO do PRODUCENTÓW

Juz do konkretnych firm wiem ale jak klikne na samo producenci to dalej mam ten link nie przyjazny... A nie ma chyba edycji tego do glownego zbioru wszystkich producentów.
PiterEL
 
Posty: 151
Dołączył(a): 17 lut 2013, o 23:21

Re: Co zrobić aby linki do produktów były seo friendly?

Postprzez adikon.oc » 28 lut 2013, o 13:25

w adminie w dziale 'Katalog' masz 'Strony informacyjne' lub 'Strony edytowalne' i możesz im ustawić SEO url


co do samego linku 'producenci' to trzeba edytować plik:
catalog/controller/common/seo_url.php
i przed
Kod: Zaznacz cały
elseif (isset($this->request->get['path']))

dodać
Kod: Zaznacz cały
elseif ($this->request->get['_route_'] ==  'producenci') { $this->request->get['route'] =  'product/manufacturer';
}

następnie przed
Kod: Zaznacz cały
elseif ($key == 'path') {

dodać
Kod: Zaznacz cały
elseif ($data['route'] ==   'product/manufacturer') { $url .=  '/producenci'; }
adikon.oc
 
Posty: 603
Dołączył(a): 28 gru 2010, o 22:56

Re: Co zrobić aby linki do produktów były seo friendly?

Postprzez PiterEL » 28 lut 2013, o 20:51

Dodałem i jak wchodze na strone dostaje blad HTTP 500

Tak wyglada zawartosc pliku po modyfikacji:
Kod: Zaznacz cały
<?php
class ControllerCommonSeoUrl extends Controller {
   public function index() {
      // Add rewrite to url class
      if ($this->config->get('config_seo_url')) {
         $this->url->addRewrite($this);
      }
      
      // Decode URL
      if (isset($this->request->get['_route_'])) {
         $parts = explode('/', $this->request->get['_route_']);
         
         foreach ($parts as $part) {
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");
            
            if ($query->num_rows) {
               $url = explode('=', $query->row['query']);
               
               if ($url[0] == 'product_id') {
                  $this->request->get['product_id'] = $url[1];
               }
               
               if ($url[0] == 'category_id') {
                  if (!isset($this->request->get['path'])) {
                     $this->request->get['path'] = $url[1];
                  } else {
                     $this->request->get['path'] .= '_' . $url[1];
                  }
               }   
               
               if ($url[0] == 'manufacturer_id') {
                  $this->request->get['manufacturer_id'] = $url[1];
               }
               
               if ($url[0] == 'information_id') {
                  $this->request->get['information_id'] = $url[1];
               }   
            } else {
               $this->request->get['route'] = 'error/not_found';   
            }
         }
         
         if (isset($this->request->get['product_id'])) {
            $this->request->get['route'] = 'product/product';
            elseif ($this->request->get['_route_'] ==  'manufacturer') { $this->request->get['route'] =  'product/manufacturer';
}
         } elseif (isset($this->request->get['path'])) {
            $this->request->get['route'] = 'product/category';
         } elseif (isset($this->request->get['manufacturer_id'])) {
            $this->request->get['route'] = 'product/manufacturer/info';
         } elseif (isset($this->request->get['information_id'])) {
            $this->request->get['route'] = 'information/information';
         }
         
         if (isset($this->request->get['route'])) {
            return $this->forward($this->request->get['route']);
         }
      }
   }
   
   public function rewrite($link) {
      if ($this->config->get('config_seo_url')) {
         $url_data = parse_url(str_replace('&amp;', '&', $link));
      
         $url = '';
         
         $data = array();
         
         parse_str($url_data['query'], $data);
         
         foreach ($data as $key => $value) {
            if (isset($data['route'])) {
               if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {
                  $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'");
               
                  if ($query->num_rows) {
                     $url .= '/' . $query->row['keyword'];
                     
                     unset($data[$key]);
                  }
                  elseif ($data['route'] ==   'product/manufacturer') { $url .=  '/producenci'; }
               } elseif ($key == 'path') {
                  $categories = explode('_', $value);
                  
                  foreach ($categories as $category) {
                     $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'");
               
                     if ($query->num_rows) {
                        $url .= '/' . $query->row['keyword'];
                     }                     
                  }
                  
                  unset($data[$key]);
               }
            }
         }
      
         if ($url) {
            unset($data['route']);
         
            $query = '';
         
            if ($data) {
               foreach ($data as $key => $value) {
                  $query .= '&' . $key . '=' . $value;
               }
               
               if ($query) {
                  $query = '?' . trim($query, '&');
               }
            }

            return $url_data['scheme'] . '://' . $url_data['host'] . (isset($url_data['port']) ? ':' . $url_data['port'] : '') . str_replace('/index.php', '', $url_data['path']) . $url . $query;
         } else {
            return $link;
         }
      } else {
         return $link;
      }      
   }   
}
?>
PiterEL
 
Posty: 151
Dołączył(a): 17 lut 2013, o 23:21

Re: Co zrobić aby linki do produktów były seo friendly?

Postprzez adikon.oc » 28 lut 2013, o 23:47

Ot: Rozumiem, że nie trzeba znać openCart gdyż pracowało się na innych systemach ale ty pokazujesz brak wiedzy ze znajomości PHP a nie samego systemu openCart.

Nie czytasz uważnie tego co piszę dlatego nie podam ci gotowego rozwiązania tylko przeczytaj jeszcze raz co napisałem i zrób DOKŁADNIE to co jest w moim poście napsiane.

pozdrawiam
Adrian
adikon.oc
 
Posty: 603
Dołączył(a): 28 gru 2010, o 22:56

Re: Co zrobić aby linki do produktów były seo friendly?

Postprzez PiterEL » 28 lut 2013, o 23:55

Przyznaje sie nie znam PHP :( Dlatego tez prosze o pomoc... Udało mi sie zrobić :) Zrobiłem poprostu małe błedy ale udało sie :)

Jest tylko problem jak klikam na link do ogolnej listy prodcentow mam komunikat STrona nie znaleziona....


A powiedz mi jakbym chcial teraz do innych długich linków zrobić to samo co teraz do producentów to mam wklejac takie zawartości odpowiednio zmieniajac parametry przed tym teraz co wkleiłem dla producenci ?
PiterEL
 
Posty: 151
Dołączył(a): 17 lut 2013, o 23:21

Re: Co zrobić aby linki do produktów były seo friendly?

Postprzez adikon.oc » 1 mar 2013, o 10:38

postępujesz analogicznie jak wyżej
adikon.oc
 
Posty: 603
Dołączył(a): 28 gru 2010, o 22:56

Re: Co zrobić aby linki do produktów były seo friendly?

Postprzez PiterEL » 1 mar 2013, o 10:41

No ok ale zrobilem to i jak wchodze na producenci to mam ze strona nie znaleziona i nie ma producentow a sa dodani.
PiterEL
 
Posty: 151
Dołączył(a): 17 lut 2013, o 23:21

Poprzednia stronaNastępna strona

Powrót do Pomoc techniczna przy Opencart

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości

cron