Muszę dołączyć pole do niektórych pakietów. Fragment PHP wykona za mnie zadanie, więc nie potrzebuję modułu. Poniżej fragment, który należy wykonać:
$field_name = 'field_custom_image';
// Create the field.
$field = array(
'field_name' => $field_name,
'type' => 'image',
);
field_create_field($field);
a następnie fragment, aby dodać to pole do pakietu:
// Create the instance.
$instance = array(
'field_name' => $field_name,
'entity_type' => 'node',
'bundle' => 'article',
'label' => 'Image',
'description' => 'An image for the article.',
'required' => TRUE,
);
field_create_instance($instance);
Czy istnieje sposób na uruchomienie kodu PHP bezpośrednio w Drupal, bez potrzeby pisania modułu, instalowania go, uruchamiania i deinstalowania?
Odpowiedzi:
Jeśli mówisz „muszę uruchomić PHP” i „nie potrzebuję modułu” w tej samej myśli, sugerowałbym, że podążasz niewłaściwą ścieżką, albo w podejściu do tego konkretnego problemu lub ogólnie podejście do budowy witryny.
drush scr
pomoże ci, jeśli to jest kierunek, w którym naprawdę chcesz iść, lub możesz napisać samodzielny skrypt PHP (w zasadzie po prostu skopiuj / wklej wszystko przezdrupal_bootstrap()
wywołanie z index.php i dodaj swój niestandardowy kod po), ale istnieje kilka innych rzeczy, na które możesz spojrzeć:Wiele witryn, nad którymi pracowałem, zawierało kombinację obu tych rozwiązań. Config powinien głównie przejść do eksportowanych modułów funkcji, a wszystko, co nie może (czy naprawdę jesteś pewien, że nie może?), Może przejść do haka aktualizacji.
źródło
Tak, jest, ale biorąc pod uwagę twój opis, zastanawiam się, czy to ci pomoże:
źródło
Jeśli potrzebujesz uruchomić kod tylko raz, możesz to zrobić bez instalowania żadnego modułu, w tym modułu Devel.
Napisz plik PHP (np. Tasks.php ), umieść go tam, gdzie jest plik cron.php dostarczony z Drupalem, i dodaj następujący kod.
Jeśli już używasz Drusha do utrzymywania / wdrażania swojej witryny, możesz stworzyć skrypt Drush . W ten sposób może być wykonywany przez CLI i może odbierać dowolne argumenty, co czyni go wielokrotnego użytku.
Możesz także wykonać skrypt PHP za pomocą
drush php-eval
(lub po prostudrush ev
), na przykład:Stworzyłbym skrypt Drusha, ale jeśli nie możesz zainstalować Drusha lub musisz wykonać kod PHP z przeglądarki, pierwsza metoda działa dobrze.
źródło
Dodaj fragment kodu do pliku i zapisz plik jak
file_name.php
w folderze głównym witryny Drupal. Następnie uruchom następujące polecenie w terminalu, z folderu głównego witryny Drupal jako katalogu roboczego:drush scr file_name.php
To polecenie wykona plik PHP. (Aby uzyskać wyobrażenie o wykonaniu, możesz dołączyć do swojego pliku kilka instrukcji print, które wyprowadzą tekst, wartości zmiennych itp. Do terminala, na którym wykonasz polecenie drush.)
Uwaga: warunkiem koniecznym jest
drush
zainstalowanie systemu.źródło
Możesz użyć
Php
wbudowanego modułu Devel, ale pozwala ci uzyskać jedną z moich sztuczek w Drupal, aby uruchomić mój własny kod bez żadnego modułu.najpierw utworzyć
menu item
whook_menu
następnie wyczyść pamięć podręczną (ponieważ pozycje menu są buforowane w programie Drupal) i włóż wszystko, co chcesz,
my_function
i po prostu wpiszyoursite.com/ytest
Mam nadzieję, że pomoże ci to w projektach „dada”;)
źródło
Celem modułów Drupal jest zapewnienie oddzielnej logiki dla niektórych komponentów, aby można je było wyłączyć, jeśli coś pójdzie nie tak.
hook_install
/hook_update
W twoim przypadku, który jest stworzenie nowego pola na podstawie jednorazowej, idealny scenariusz jest użycie albo
hook_install
albohook_update
.Jeśli nie masz niestandardowego modułu (np. Możesz do tego użyć również eksportowanego modułu funkcji), utwórz nowy tylko dla aktualizacji (np
site_updates
.). W Drupal 7, co potrzebne jest do tworzenia folderu z plikami 3:.info
,.module
i.install
oraz określić zainstalować lub hak zmiana w twojej.install
. Korzystanie z haka instalacyjnego / aktualizacyjnego jest wygodne, aby mieć spójne środowiska, szczególnie gdy masz wiele serwerów Drupal (takich jak dev, test i prod), więc zmianę można wywołać podczas następnego wdrożenia.Jeśli nadal nie chcesz tworzyć modułu, oto inne metody.
Wykonanie jednorazowe
Jeśli potrzebujesz wykonać tylko jeden kod PHP tylko raz, możesz:
/devel/php
,Użyj CLI (i jego / komendy) do wykonania kodu PHP, np
drush
eval
ev
Służy
drush scr
do wykonywania skryptu PHP:gdzie
my_file.php
jest twój zwykły skrypt PHP z kodem do wykonania.Określone wykonanie strony
Aby wykonać niestandardowy kod na niektórych stronach lub komponentach:
template.php
pliku w swoim niestandardowym tematu (nptemplate_preprocess_node
,template_preprocess_block
,template_preprocess_page
).Wykonanie całej strony
Aby dodać i uruchomić kod PHP na każdej stronie bez pisania modułu, możesz:
settings.php
pliku. Jest to zalecane tylko w przypadku prostego kodu, takiego jak zastąpienie konfiguracji. W przeciwnym razie powinieneś użyćhook_init
tego jako części niestandardowego modułu.źródło