2012-11-28 4 views
11

아시다시피 당신이 URL 키를 공유하는 제품이있는 경우, 해당 URL 키가 추가 숫자가됩니다젠토 - URL 키/제품 URL에 제거 번호

http://www.site.com/main-category/sub-category/product-name-을 6260

가 어떻게의 소스를 찾을 수 있습니까 .html 중에서 그 6260 (내 URL을 추가 #의 하나입니다)? 나는 제품 id, sku를 시도했다, 나는 그것의 근원을 찾을 수 없다. 내가 물어 보는 이유는 특정 제품 목록 페이지에 URL을 표시하기 전에 찾을 수 있으면 문자열 대체 기능을 만들어서 URL에서 삭제하기 때문입니다.

감사합니다.

+0

관리 영역의 URL 다시 쓰기를 보았습니까? [this] (http://stackoverflow.com/questions/5019584/magento-puts-1-in-my-urls-can-i-remove-programatically)에서 게시물을, 그리고 내가 본 것을 보았습니다. URL Rewrites 및 색인 생성 문제와 관련이 있습니다. – CCBlackburn

+0

내 관심사는 * 수천 개의 구성 가능한 제품 (URL 키가 중복되는 원인)이있는 사이트를 제어하고 있으며 아무도이 문제를 처리하지 못했습니다. 한 번에이 문제를 해결하는 관리자 섹션이 있는지 확실하지 않습니다. 내 관심사는 당신이 참조하는 게시물과는 달리, 자릿수가있는 URL은 동적이며 찾을 수있는 실제 패턴이 없다는 것입니다. 그래서 동적으로 추가 된 숫자의 출처가 무엇인지 알아내는 역동적 인 방법이 있는지 궁금합니다. 그것이 내 관심사이다. 분명히 그것을 제어하는 ​​기능이 있습니다 ... 감사합니다. – Joel

+0

단순한 제품과 다른 구성 가능한 제품의 URL 키가 있습니까? 그렇지 않다면, 이것도 문제가 될 것입니다 – CCBlackburn

답변

21

코드가있는 위치에 도달하기 전에 고통의 세계로 들어서게됩니다.

  1. 는 그 숫자가 생성되는 방법에 대한 더 간단한 규칙이 없습니다. 상점 ID가있는 경우가 있습니다. 단순한 제품 ID 인 경우가 있습니다. 그건 경우가있다 어느

  2. , 그것은 젠토의 사람이 읽을 수있는/SEO 친화적 인 URL이 있습니다 때문에, 궁극적으로이

  3. 변경 사용자 정의 기능을 포함하지-에서 스크래치 젠토 사이트에 대한 흔한 일이 있었다해도 사람들이 옆으로 임의의 텍스트를 운명의

경고를 삽입하기위한 core_url_rewrite 테이블에, 그것은 가능합니다, 당신이 찾고있는 모델 Mage::getSingleton('catalog/url')입니다. 여기에는 Magento Catalog 및 제품 재 작성을위한 대부분의 논리가 포함됩니다. 이 모든 메소드는 요청 경로를 getUnusedPath 메소드로 전달하여 종료합니다.

#File: app/code/core/Mage/Catalog/Model/Url.php 
public function getUnusedPath($storeId, $requestPath, $idPath) 
{ 
    //... 
} 

이 방법에는 URL 끝에 고유 번호를 생성하는 논리가 포함되어 있습니다. 이것을 완전히 추적하는 것은 Stack Overflow 게시물의 범위를 벗어나지 만 특히이 행은 계몽/낙담입니다. 특히

$lastRequestPath = $this->getResource() 
    ->getLastUsedRewriteRequestIncrement($match[1], $match[4], $storeId); 
if ($lastRequestPath) { 
    $match[3] = $lastRequestPath; 
} 
return $match[1] 
    . (isset($match[3]) ? ($match[3]+1) : '1') 
    . $match[4]; 

, 그것은 분명하지의 경우

$match[3] = $lastRequestPath; 
//... 
. (isset($match[3]) ? ($match[3]+1) : '1') 
//... 

이 두 줄, 마 젠토 자동으로 URL에 1를 추가 한 다음 그것을 계속 증가하는 경우가있다. 이렇게하면 URL이 생성 될 때 시스템 상태에 따라 URL이 생성되므로 간단한 규칙은 없습니다. 이 파일에 대한 관심의

다른 라인은

if (strpos($idPath, 'product') !== false) { 
    $suffix = $this->getProductUrlSuffix($storeId); 
} else { 
    $suffix = $this->getCategoryUrlSuffix($storeId); 
}  

뿐만 아니라 URL의 끝에 사용되는이 $suffix

을, 그래서 그 방법은 조사 가치가있다.

URL에서 숫자를 제거하는 것이 전부라면 정규 표현식 또는 explode/implode 문자열 깜박임을 사용하는 것이 좋습니다.

+1

Magento 롤은 중복 된 이름을 가진 제품에 항상 새로운 값을 생성하는 1.7의 버그가있는 것으로 나타났습니다. 마지막 인덱스가 변경된 이후로 변경된 사항이 있는지 여부에 관계없이 –

+0

@Cags 어떤 버그가 있었습니까? –

+0

죄송합니다. 우연히 게시물을 누르십시오. 버스를 타면서 전화를 걸기가 어렵습니다. 자세한 내용으로 업데이트하십시오. –

2

나는 이것이 왜 작동하는지 거의 알지 못합니다.하지만 이것은 저에게 효과적이었습니다. 아마도 URL이 고유하지 않기 때문일 수 있습니다. Magento ver. 1.7.0.2는 URL 키와 이름이 이전 제품과 다른 경우에도 갑자기 새 제품 이름에 접미사로 숫자를 추가하기 시작했습니다. 직감적으로 나는 System -> Configuration -> Catalog -> Search Engine Optimizations -> Product URL Suffix으로 갔고 기본값 인 .html-prod.html으로 변경했습니다. 너가 원하는 접미사로 바꿀 수있을 것 같아. 그런 다음 웹 사이트 색인을 다시 만들고 캐시를 새로 고침하고 프레스토! 모든 숫자는 제품 URL에서 사라졌습니다. 제품 URL의 형식은 모두 custom-product-name-prod.html입니다. 정식 태그도 custom-product-name-prod.html이므로 두 배로 행복합니다.

다른 사람들에게는 효과가 있는지 모르겠지만 실제로는 좋을 것 같습니다. 중복 URL이있는 이전 제품과 신제품이 있었고이 절차를 수행하기 전에 기존 제품을 비활성화했음을 유의하십시오. 따라서 동일한 URL 키가있는 두 개의 제품이 있고 둘 다 사용하도록 설정된 경우이 방법이 효과가 없을 수 있습니다.