2011-05-02 9 views
1

페이지 제목SEO (페이지 제목)

dinamically 런타임에 페이지 제목을 변경하는 방법이 있나요?

포털 수준에서 페이지 제목을 변경할 수 있다는 것을 알고 있지만이 솔루션 은 페이지의 TITLE 태그를 변경하지 않으므로 SEO 값을 제공하지 않습니다. 나는 포털 타이틀을 변화하는 방법을 본 적이 무엇을 위해

는 (이 글로벌 설정입니다) 매우 정적 :

  • 즉 bannerTitleTextResourceBundle을 조정 존재하지 않다면 테마 정책에
  • 을 bannerTitleText 변경 bannerTitleTextResourceKey를 원하는 값으로 설정하십시오.
  • 그렇지 않으면,

우리의 목표는이 페이지에서 페이지로 변경하고 관련 페이지의 키워드를 포함 할 수 있도록 페이지 수준에서 제목을 설정 할 수있는 테마 구성에서 세계적으로 제목을 설정합니다.

실제로 WCM에서 수행 할 수 있다면 가장 이상적입니다.

:

업데이트

나는 WebSphere Portal에 6.1.5의 기본 테마는 그래서 테마를 조사하고 jspInit.jspf 몇 가지 다음과 같은 새로운 방법을 가지고 확실히 충분히, 페이지 제목을 추가 한 것으로 나타났습니다



private static com.ibm.portal.state.service.PortalStateManagerServiceHome portalStateManagerServiceHome; 

// (This goes in the jspInit constructor) 
portalStateManagerServiceHome = (com.ibm.portal.state.service.PortalStateManagerServiceHome) ctx.lookup("portal:service/state/PortalStateManager"); 

protected com.ibm.portal.state.service.PortalStateManagerService getStateManagerService(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws Exception { 
    final com.ibm.portal.state.service.PortalStateManagerService psms = portalStateManagerServiceHome.getPortalStateManagerService((javax.servlet.http.HttpServletRequest) request, (javax.servlet.http.HttpServletResponse) response); 
    return psms; 
} 
protected boolean isStaticPage(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws com.ibm.portal.ModelException { 
    final com.ibm.portal.model.NavigationSelectionModelProvider nsmProvider = navigationSelectionModelHome.getNavigationSelectionModelProvider(); 
    final com.ibm.portal.navigation.NavigationSelectionModel nsm = nsmProvider.getNavigationSelectionModel(request, response); 
    final com.ibm.portal.navigation.NavigationNode currentNavNode = (com.ibm.portal.navigation.NavigationNode) nsm.getSelectedNode(); 
    final com.ibm.portal.content.ContentNode currentContentNode = currentNavNode.getContentNode(); 

    return currentContentNode.getContentNodeType().equals(com.ibm.portal.content.ContentNodeType.STATICPAGE); 
} 

protected com.ibm.portal.navigation.NavigationNode getSelectedNode(final javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws com.ibm.portal.ModelException { 
    com.ibm.portal.model.NavigationSelectionModelProvider nsmProvider = navigationSelectionModelHome.getNavigationSelectionModelProvider(); 
    com.ibm.portal.navigation.NavigationSelectionModel nsm = nsmProvider.getNavigationSelectionModel(request, response); 
    return (com.ibm.portal.navigation.NavigationNode) nsm.getSelectedNode(); 
} 

protected String getSelectedNodeTitle(final javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws com.ibm.portal.ModelException { 
    final String title; 
    if (localizedContextHome != null) { 
     com.ibm.portal.model.LocalizedContext context = localizedContextHome.getLocalizedContext((javax.servlet.http.HttpServletRequest) request); 
     title = context.getTitle(getSelectedNode(request, response)); 
    } else { 
     title = ""; 
    } 

    return title; 
} 

추가 한 후 6.1.5 테마에서 head_title.jspf를 복사 할 수있었습니다.


<c:set var="selectedNodeTitle" value="<%=getSelectedNodeTitle(request, response)%>" /> 
<title><c:out value="${siteTitle} - ${selectedNodeTitle}"/></title> 

이제 남은 것은 WCM에서 가져 오는 방법을 찾는 것입니다.

+1

추가 할 항목이 더 있으면 질문을 편집하십시오. 이것은 Q/A 사이트이지 포럼이 아닙니다. – dandan78

답변

0

이 목표를 달성하는 더 좋은 방법을 제공하는 새로운 기능이 있음을 언급하기 위해이 질문을 업데이트하고 싶습니다.

새로운 웹 컨텐트 뷰어 (286)는 JSR 286의 새로운 기능인 2 단계 렌더링을 사용하여 doHeaders라는 새로운 이벤트를 만듭니다. doHeaders 이벤트 아래에서 제목과 같은 머리에 요소를 추가하기 위해 응답을 수정할 수 있습니다.

이제 웹 컨텐츠 뷰어는 페이지 표시 제목 : 콘텐츠에서 선택을 수행 할 수 설정을 제공합니다.

이제는 개발자가 정교한 요소/링크, 메타 태그 등 웹 콘텐츠의 다른 요소를 설정할 수있게되었습니다. 그러나 새로운 웹 콘텐츠 폴더 기능을 사용하면 테마 수준.

모든 SEO 용 Lotus Web Content Management 개발자 들께 행운을 빈다.

2

누락 된 WCM 부분은 구현 한 이후로 다룰 예정입니다. 필요한 정보는 제공 할 수 있지만 준비된 코드는 제공 할 수 없습니다. 그것은 단지 스트림에서 읽고 다른 사람에게 글을 쓰는 것입니다. 그래서 당신은 아이디어를 이해할 수 있어야합니다. Portal 6.1을 사용하는 가장 합리적인 방법은이 요구 사항에 맞게 Servlet Filter을 개발하는 것입니다. 원하는 작업은 다음과 같습니다.

  1. html 헤더에 삽입 할 올바른 정보를 출력하는 WCM 구성 요소를 만듭니다. 가장 일반적으로 인스턴스 네비게이터 구성 요소가 현재 경로/제목을 인쇄하는 것을 의미합니다.
  2. 프레젠테이션 템플릿에 이러한 구성 요소를 추가하십시오. html 주석 태그 <!---->을 사용하고 나중에 생성 된 html에서 구문 분석 할 수있는 스키마를 원한다면 어떻게해야할까요?
  3. html/xhtml 인 경우 ServletResponse에서 전체 페이지를 읽는 서블릿 필터를 작성하십시오 (MIME 유형 사용). 그렇게하는 동안 주석을 멀리 분석하십시오. 이제 html 헤더 섹션에 올바른 태그가있는 새 페이지를 다시 작성하십시오.
  4. 이번에는 새로운 응답 페이지를 다시 삽입하여 SEO에 올바른 html 헤더가 있어야합니다.

불행히도 이것은 당신이 취해야 할 방법입니다. WCM 렌더링 포틀릿의 응용 프로그램 컨텍스트에서 원하는 것을 가져 와서 HTML 헤더에 넣을 수있는 숨겨진/개인용 API조차 없습니다. 또한 서블릿 필터를 wps 응용 프로그램에 추가해야합니다. 여기서 일반적으로 발생하는 문제는 web.xml을 편집 한 후에 다시 배포해야한다는 것입니다.

서블릿 필터의 성능에 미치는 영향은 무시할 수 있습니다 (합계가 2 %에 불과함).이 접근법은 간단하게 작동합니다. 제 경험상 SEO 목적으로는 매우 잘 작동하며, WCM에서 이러한 방식으로 실질적으로 모든 정보를 얻을 수 있습니다.

+1

이 모든 것은 매우 유망한 소리입니다. 시도해 볼게. – sonar

관련 문제