2012-02-17 4 views
0

Magento에서 프로그래밍 방식으로 CMS 홈 페이지를 설정하는 PHP 솔루션을 찾고 있습니다. 내가 찾고있는 것은 System-> Configuration-> Web-> CMS 홈 페이지의 드롭 다운에서 페이지 제목을 선택하는 수동 방법을 사용할 때 얻을 수있는 것입니다.프로그래밍 방식으로 Magento의 현재 홈 CMS/페이지를

페이지 제목 집합 중 하나를 선택하는 방법을 이미 알고 있거나 저장소의 모든 CMS 페이지에 대한 URL 키 집합에서 선택할 수 있습니다. 페이지 제목이나 URL 키를 알고있는 경우 현재 CMS 홈 페이지를 변경하는 데 필요한 PHP Mage 방법은 무엇입니까?

나는 이미 새로운 CMS 페이지를 만드는 코드를 이미 알아 냈습니다. 나는 그것을 끝낼 때 그것을 선택할 수 있고 그것을 적극적으로 홈 페이지로 만들고 싶다.

편집 :

$groups['default']['fields']['cms_home_page']['value'] = 'city-grips-handle-bar-covers'; 

    Mage::getModel('adminhtml/config_data') 
     ->setSection('web') 
     ->setWebsite('Main Website') 
     ->setStore('My Store Name') // Hid Actual Store name here 
     ->setGroups($groups) 
     ->save(); 

편집 : 스크린 샷을 주셔서 감사합니다

2012년 2월 18일 성공없이 다음을 시도했다. 나는 그 권리가 없었습니다. 저장소를 선택할 때 내 URL은 .../index.php/admin/system_config/edit/section/일반/웹 사이트/기본/store/default/

나는 웹 사이트 = 기본 저장소 = 기본값을 의미합니다

website store http://reefworkshop.com/posts/website_store_url.png

나는에 코드를 변경 :

$groups['default']['fields']['cms_home_page']['value'] = 'city-grips-handle-bar-covers'; 

    Mage::getModel('adminhtml/config_data') 
     ->setSection('web') 
     ->setWebsite('base') 
     ->setStore('default') 
     ->setGroups($groups) 
     ->save(); 

하지만 여전히 CMS 홈 페이지 선택의 변화를 보여주는 아니에요. 프런트 엔드를 새로 고침하고 전환하지 않습니다. 나는 운이없는 캐시 지우기도 시도했다. 어떤 아이디어? 그냥 참고로 나는 젠토 CE 1.5.1.0

편집을 실행 해요 :

는 여기에 실행 파일 내용을합니다. ( OK 그래서 나는 해결책을 발견 작동하는지 :

CMS 1 
CMS 2 
CMS 3 

편집 : 나는 설치 :

<html> 
    <head> 
    </head> 
    <body> 
     <?php  
     require_once('app/Mage.php'); //Path to Magento 
     umask(0); 
     Mage::app(); // Change default to whatever store you want to run 

     print('CMS 1<br>'); 
     $groups['default']['fields']['cms_home_page']['value'] = 'city-grips-handle-bar-covers'; 

     print('CMS 2<br>'); 
     Mage::getModel('adminhtml/config_data') 
      ->setSection('web') 
      ->setWebsite('base') // Code is the field name 
      ->setStore('default') 
      ->setGroups($groups) 
      ->save(); 

     print('CMS 3<br>'); 
     ?>   
    </body> 
</html> 

을 나는 그것이 브라우저 창에 표시됩니다 실행하면 내 젠토의 루트에 파일을 넣어) 마지막 제안 된 솔루션에서 영감을 얻었다 :

require_once('app/Mage.php'); //Path to Magento 
umask(0); 
Mage::app(); // Change default to whatever store you want to run 

$Config = new Mage_Core_Model_Config(); 
$Config ->saveConfig('web/default/cms_home_page', "city-grips-handle-bar-covers"); 
Mage::app()->cleanCache(); 

Voila 그것은 작동합니다. 구성 캐시는 실제로 정리해야했습니다 (수동으로 확인했습니다). 그래서 모든 캐시를 청소하는 것은 약간 과잉이지만 오 잘 작동합니다.이 방법으로

+0

어디에이 코드를 넣으시겠습니까? 'exception.log'에서 무엇이 보이십니까? – Zyava

+0

예외 로그에 일부 항목이 있습니다. 그 관련 : 예외 'Mage_Core_Exception'메시지와 함께 '잘못된 블록 유형 : checkout_cart'in /chroot/home/babyhalf/babyhalfoff.com/html/app/Mage.php:550 스택 덤프의 28 계층이 있습니다, 그러나 나는 자극이 관련이 있다고 생각하지 않습니다. 그것은 또한 반복, 나는 CMS 페이지 코드를 한 번만 달렸다. – KyleDugger

답변

2

여기 있습니다. 이것은 기본 저장소에서 작동하며 사용자가 입력 한 내용으로 CMS 홈 페이지를 변경합니다. 분명히이 URL이있는 CMS 페이지가 있어야합니다. 존재하지 않는 것을 지정하면 프런트 엔드에서 오류가 발생합니다.

require_once('app/Mage.php'); //Path to Magento 
umask(0); 
Mage::app(); // Change default to whatever store you want to run 

$Config = new Mage_Core_Model_Config(); 
$Config ->saveConfig('web/default/cms_home_page', "<URL-Key-goes-here>"); 
Mage::app()->cleanCache(); 
2

시도 :

 $groups['default']['fields']['cms_home_page']['value'] = '<your_cms_page_url_key>'; 

     Mage::getModel('adminhtml/config_data') 
      ->setSection('web') 
      ->setWebsite('<your_website_code>') 
      ->setStore('<your_store_view_code>') 
      ->setGroups($groups) 
      ->save(); 

빠르게 웹 사이트 코드 및 저장 뷰 코드를 찾으려면 -> 구성을 시스템 -로 이동, 왼쪽에 드롭 다운 메뉴에서 필요한 점보기를 선택하고 페이지 URL을보고 :

편집 :

또 다른 방법은, 단지의 설치 작품 스크립트를

/** @var $installer Mage_Catalog_Model_Resource_Eav_Mysql4_Setup */ 

/** @var $store Mage_Core_Model_Store */ 
$store = Mage::getModel('core/store'); 
$store->load('<needed_store_code_>'); 

$installer->setConfigData('web/default/cms_home_page','<your_cms_page_url_key>','stores',$store->getId()) 

enter image description here

+0

응답 해 주셔서 감사합니다. 나는 아직 성공하지 못하게하려고 애썼다. 를 CMS 페이지의 URL 키 필드의 내용으로 바 꾸었습니다. (this-is-my-url-key처럼 보입니다.) 를 상점 관리 아래의 Website Name 필드의 내용으로 대체했습니다. 를 백엔드 저장소를 관리하는 저장소 이름 필드의 내용으로 바꿨습니다. 나는 심지어 웹 사이트 이름에 대한 코드 필드를 시도했다. 코드를 실행하고 브라우저를 새로 고친 후 현재 CMS 페이지에 영향을 미치지 않는 것 같습니다. – KyleDugger

+0

또한 샘플 코드에서 오타가 이미 수정되었습니다 : $ groups [ 'default']. 내가 추가 한 새 코드 다음에 코드에 인쇄본이 있기 때문에 실행되는 것을 압니다. 그 지문이 브라우저에서 나왔다. 어떤 아이디어? 감사합니다, 카일 – KyleDugger

+0

나는 내 답변을 편집했습니다 - 웹 사이트 및 상점보기 코드를 빨리 찾아내는 방법을 추가 스크린 샷이 도움이되기를 바랍니다. – Zyava

관련 문제