2012-02-17 34 views
17

Widziałem następującą odpowiedź na post Where are Magento static CMS blocks stored? dotyczącą programowego używania PHP generujących cm/bloki w Magento.Programowe tworzenie CMS/Page w Magento

Zmieniłem kod z następującym

$newBlock = Mage::getModel('cms/page') 
     ->setTitle('Test CMS Page Title') 
     ->setContent('Hello I\'m a new cms page.') 
     ->setIdentifier('this-is-the-page-url') 
     ->setIsActive(true) 
     ->save(); 

... i to działa. Widzę nową stronę wyświetlaną w obszarze Strony CMS w zapleczu.

Co muszę dodać, to możliwość ustawienia zawartości innych pól w CMS/Page. Mianowicie:

  • Layout (próbuje ustawić na 1 kolumnę)
  • meta kluczowe
  • meta opis

pól. Te pola są obecnie puste. Do tej pory nie udało mi się wymyślić tej części.

Dzięki,

+0

jesteś pytanie było dość interesujące. . . chciałem wiedzieć, który wymóg zakończyłeś tym pytaniem. . . czekanie 4 odpowiedź –

Odpowiedz

37

tutaj przejść:

$cmsPageData = array(
    'title' => 'Test CMS Page Title', 
    'root_template' => 'one_column', 
    'meta_keywords' => 'meta,keywords', 
    'meta_description' => 'meta description', 
    'identifier' => 'this-is-the-page-url', 
    'content_heading' => 'content heading', 
    'stores' => array(0),//available for all store views 
    'content' => "Hello I'm a new cms page." 
); 

Mage::getModel('cms/page')->setData($cmsPageData)->save(); 

Kluczami tablicy są nazwy pól w tabeli cms_page (sprawdź dB). Aby poznać wartość, ręcznie utworzę stronę cms, którą chcę, a następnie zobaczę wartość tego wpisu w db.

+0

Awesome! Sprawdziło się doskonale, jednak musiałem zmienić "jeden_kolumny" na "jeden_kolumnę". Tylko literówka. Dostaję to -> utwórz tablicę z parami klucz-wartość, a następnie przypisz ją jako dane strony CMS. Ma sens. Skąd wiesz, jakie są klucze i wartości tych kluczy? – KyleDugger

+0

@ user1215510 Poprawiłem literówkę, thx za wskazanie. Rozszerzyłem również odpowiedź wyjaśniającą, w jaki sposób otrzymuję dane. – OSdave