2012-10-24 9 views

Odpowiedz

21

Po uaktualnieniu do EE2, odnaleźć każde pole File ex-NGEN i zmienić jego typ pola do pliku, a uruchomienie tej kwerendy SQL:

UPDATE exp_channel_data 
SET field_id_X = CONCAT('{filedir_Y}', field_id_X) 
WHERE field_id_X != '' 
AND field_id_X NOT LIKE '{filedir_%' 

Replace „X” ID danej dziedzinie File (można dostać z exp_channel_fields) i Y z ID preferencji przesyłania, dla którego ustawiono pole pliku nGen.

Gdybyś Matrix zainstalowany w EE1, upgrade do Matrix 2/EE2 i zrobić to samo dla wszystkich kolumn plików ex-NGEN, używając tej kwerendy SQL zamiast:

UPDATE exp_matrix_data 
SET col_id_X = CONCAT('{filedir_Y}', col_id_X) 
WHERE col_id_X != '' 
AND col_id_X NOT LIKE '{filedir_%' 

znowu X == swoją Matrix identyfikator kolumny (możesz to uzyskać z exp_matrix_cols) i Y == twój identyfikator preferencji przesyłania.

(zasługa Rob Sanchez, oczywiście.)

+0

Idealny. Dziękuję Brandon! Używam Matrixa na stronie. –

5

Mam całą blogu na ten temat, która opiera się na moim doświadczeniu i wątku, że Brandon mowa w swojej odpowiedzi. Blog post here.

+0

Czytanie go teraz. –

6

Napisałem to również dla strony - bez wsparcia macierzy, ale działa szybko i poprawnie dla zwykłych pól.

W przypadku tablicy, w lewej kolumnie znajduje się każdy identyfikator pola, który został zmieniony na tekst przed aktualizacją, i należy go zmienić na aktualizację pliku po aktualizacji, a prawa strona to X pliku filedir_X dla żądanego pliku przesyłania plików dołączyć do pola

// Insert file upload directories 

$array = array(
    '16' => '1', 
    '22' => '1', 
    '121' => '3', 
    '58' => '1', 
    '67' => '1', 
    '68' => '1', 
    '71' => '1', 
    '76' => '1', 
    '78' => '1', 
    '94' => '1', 
    '99' => '1', 
    '108' => '3', 
    '109' => '3', 
    '110' => '3', 
    '139' => '1' 
    ); 

foreach($array as $field_id => $dir_id) { 

    $q_entries = $this->EE->db->query("SELECT entry_id, field_id_{$field_id} as 'field' from exp_channel_data where field_id_{$field_id} != '' order by entry_id asc"); 

     if ($q_entries->num_rows() > 0) { 

      echo '<h3>field_id_'.$field_id.'</h3>'; 

      foreach($q_entries->result_array() as $entry) { 

       echo $entry['entry_id']; 

       $filename = trim('{filedir_'.$dir_id.'}'.$entry['field']); 

       echo ' - '.$filename.'<br/>'; 

       $data = array(
        'field_id_'.$field_id => $filename, 
        ); 
       $sql = $this->EE->db->update_string('exp_channel_data', $data, "entry_id = '{$entry['entry_id']}'"); 
       $this->EE->db->query($sql); 

      } 
     } 

} 

echo 'done'; 
0

mam posted something to GitHub które powinny pomóc każdemu obliczu tego procesu. Jest to kod szablonu EE1 (wymaga PHP włączonego na wyjściu lub wejściu), który pokazuje dwie rzeczy:

Po pierwsze, wyświetla tabelaryczny przegląd wszystkich niestandardowych pól w systemie. Jest to informacja pomocna, gdy próbujesz znaleźć wszystkie wystąpienia określonego typu pola. Obejmuje on normalne pola EE, Fieldpage Fieldpy, a nawet kolumny Matrix.

Po drugie, za każdym razem pole File NGEN napotkano, szablon generuje kod MySQL trzeba użyć (po uaktualnieniu do EE2), aby zmienić dane we wspomnianej pola do formatu wymaganego przez EE2 ojczystym Pole pliku. Te zapytania są wyświetlane tylko, nie uruchamiać. Chodzi o to, że gdzieś zapiszesz zapytania, uruchom aktualizację EE1-> EE2, a następnie uruchom zapisane zapytania, gdy będą gotowe.

Nie trzeba dodawać, tworzenie kopii zapasowych, tworzenie kopii zapasowych, BACKUP. Kod szablonu w żaden sposób nie modyfikuje bazy danych witryny i został przetestowany i wyświetla to, co powinno. Jednak podczas gdy kwerendy MySQL, które generuje (aby kopiować i ręcznie uruchamiać później), pasują do tego, co Brandon recommended in his answer, muszę jeszcze przetestować te zapytania w akcji.

+0

Po prostu potrzebuję tego - wielkie dzięki! –

+0

Hah! To, co kręci się wokół ... W 2007 roku poznałem EE z poradników "Budowanie witryny Kościoła", więc cieszę się, że mogłem coś wesprzeć! ;) – Sandwich

+0

Hej - po prostu poruszanie się po to, aby móc to uruchomić. Skrypt nie widzi moich pól pliku nGen i nie generuje kodu SQL, który widzę w Twoich przykładach. Wciąż jestem w EE1.7.1 i nie konwertowałem żadnych typów pól. Wydaje się, że nGen/Matrix działa poprawnie, ponieważ mogę dodać nową kolumnę Matrix z nowym polem pliku nGen. –

0

Najlepszym sposobem na to jest ostrożne wykonywanie i tworzenie kopii zapasowych bazy danych na każdym etapie. Napisałem wcześniej o tym blogu, ale będę się dalej rozwijał.

Krok 1: Przed uruchomieniem uaktualnienia zmień wszystkie typy pól ngen na tekst, nie martw się, dane nie zostaną utracone.

Krok 2: Następna aktualizacja ExpressionEngine zgodnie z oficjalnymi dokumentami, a następnie wróć do każdego pola i zmień je na typ pliku pierwszej osoby.

Następnym krokiem jest trochę manipulacji bazą danych, ale to tylko kopiowanie i wklejanie, więc nie martw się.

Krok 3: Wykonaj kopię zapasową bazy danych przed kontynuowaniem na wszelki wypadek.

Krok 4: Kolejny krok zależy od tego, czy oryginalne pole pliku nGen było w standardowym polu kanału, czy polu macierzy.

Teraz przejdź do swojej bazy danych i zamień "X" na identyfikator pola pliku (możesz to zrobić z pola exp_channel_fields) i Y z ID preferencji przesyłania, dla którego ustawiono pole pliku nGen.

(Aby znaleźć wysyłania preferencji ID w panelu sterowania, przejdź do zawartości> Plik> Prześlij plik preferencji Wybierz kolumnę ID po lewej stronie, który pasuje lokalizację wysyłania plików.).

4a: W przypadku aktualizacji standardu kanał Pola, użyj tego zapytania

UPDATE exp_channel_data 
    SET field_id_X = CONCAT('{filedir_Y}', field_id_X) 
    WHERE field_id_X != '' 
    AND field_id_X NOT LIKE '{filedir_%' 

4b: Dla macierzy, pola uruchomienia tej kwerendy zamiast

UPDATE exp_matrix_data 
    SET col_id_X = CONCAT('{filedir_Y}', col_id_X) 
    WHERE col_id_X != '' 
    AND col_id_X NOT LIKE '{filedir_%' 

X == Twój Matrix kolumna ID (można dostać tha t od exp_matrix_cols) i Y == twój identyfikator preferencji przesyłania.

Podziękowania dla Brandona Kelly'ego i Roba Sancheza.

Dodatkowo, tę samą procedurę można zastosować w przypadku innych dodatków, których nie ma w EE2. Konwertuj na tekst przed aktualizacją, a następnie przekonwertuj na nowy równoważny typ pola po aktualizacji, jeśli to konieczne. Aby uzyskać dodatkową pomoc: Click here

Powiązane problemy