Poszukiwałam odpowiedzi na to pytanie bez powodzenia. Z tego, co obserwuję w strukturze bazy danych, położenie modułów jest określone w tabeli „systemowej”. Jedyne rozwiązanie, jakie mam, to napisanie zapytania SQL w celu zaktualizowania kolumny „nazwa pliku”.
Czy istnieje lepsze / czystsze rozwiązanie w rozwiązywaniu tego, na przykład dla modułu contrib?
źródło
registry_file
stół, co zmusi Drupala do ponownego przeskanowania wszystkich plików i przebudowania stołu.DELETE FROM registry_file;
i dodałem wywołanie dorebuild_registry()
mojegopage.tpl.php
.Lokalnie przywróciłem kopię zapasową z produkcji i próbowałem po prostu przenieść rzeczy i uderzyć admin / moduły lub uruchomić register_rebuild (), ale nie powstrzymało to zgubnych błędów. Ma to dla mnie sens, ponieważ niektóre moduły mogą korzystać z funkcji include lub cokolwiek w ich funkcji hook_init (), lub możesz mieć zestaw ścieżek routera menu, który zależy od modułu lub włączenia, którego Drupal nie może znaleźć na bootstrapie. Ostatecznie to właśnie zrobiłem (twoje ścieżki mogą być inne):
Krok 1: Zamień strony / wszystkie / moduły na witryny / wszystkie / moduły / contrib
Krok 2: Zamień strony / wszystkie / moduły / contrib na witryny / wszystkie / moduły / niestandardowe dla niestandardowych modułów z przestrzenią nazw
Krok 3: Przenieś moduły deweloperskie na strony / all / modules / dev
Krok 4: Wyczyść pamięć podręczną, aby elementy poprawnie się ładowały
Uwaga: Jeśli używasz niestandardowego modułu lub wkładu, takiego jak LoginToboggan do obsługi 403 (odmowa dostępu) i wylogowałeś się podczas tego procesu, może być konieczne zaktualizowanie
include_file
kolumny wmenu_roter
tabeli, aby użyć nowej ścieżki do pliku dołączania . Jest to prawdopodobnie rzadkie zjawisko.UPDATE menu_router SET include_file = 'sites/all/modules/custom/my_custom_namespace/includes/foo.inc' WHERE path = 'access-denied'
Po uruchomieniu tych zapytań - co zajmie tylko ułamek sekundy - kliknij admin / config / development / performance i wyczyść pamięć podręczną, aby odbudować ścieżki menu.
źródło
update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.admin.inc' WHERE path = 'admin/config/system/logintoboggan'; update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.validation.inc' WHERE path = 'toboggan/revalidate/%'; update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.validation.inc' WHERE path = 'user/validate/%/%/%';
Wypróbuj fajne narzędzie Mark Sonnabaum: Drush Rebuild Project Paths . Automatyzuje proces; działało świetnie dla mnie. Oczywiście używa Drusha .
Popieram jednak sugestię wypróbowania tego na kopii bazy danych witryny.
źródło
Dla przypomnienia, istnieje świetne polecenie drush do odbudowania rejestru: http://drupal.org/project/registry_rebuild
Na stronie projektu znajduje się mnóstwo informacji.
źródło
sites/all/modules
których trzeba było przenieść docontrib
podkatalogu. Wszystko, co musiałem zrobić, todrush dl registry_rebuild; mv OLD_PATH/module NEW_PATH/module; drush rr
drush rr --fire-bazooka
prowadzi do błędów, aledrush rr
jest w porządku.Po pierwsze zawsze wykonuj kopię zapasową bazy danych, tak proste, że wykopiesz się, jeśli coś pójdzie nie tak i nie wykonałeś kopii zapasowej.
Nie jestem pewien, czy to ważne, czy wyłączysz moduły, czy nie; na wszelki wypadek możesz to zrobić. Następnie zrób to:
Wszystko gotowe! Drupal ponownie przeszuka wszystkie zainstalowane moduły.
źródło
Dlaczego nie wypróbować modułu Odbudowa rejestru? To działało dla mnie za każdym razem.
Oto cytat na ten temat (ze strony projektu modułu):
źródło
Możesz użyć modułu Registry Rebuild , który integruje się z Drush za pośrednictwem
Drush RR
polecenia.Zasadniczo wykonujesz następujące kroki:
Po raz pierwszy nauczyłem się go / odkryłem poprzez DrupalEasy Podcast # 133 , który wyjaśnia, jak można używać tego modułu / cmd drush.
PS: Oczywiście najpierw wykonaj kopię zapasową witryny ...
źródło
Odwiedź / admin / build / modules przebuduje ścieżki w tabeli systemowej. Czasami drupal nie może już uruchomić systemu, więc to rozwiązanie nie działa w tym przypadku. Jeśli to nie działa, możesz użyć Drush Rebuild Project Paths, jak powiedziano w poprzedniej odpowiedzi. Musisz jednak dodać nowe polecenie drush przed zerwaniem bootstrapu. Aby dodać nowe polecenie, sprawdź sekcję POLECENIA w pliku readme
źródło
Miałem pewne problemy z niedziałaniem z
drush dl
powodu problemów z katalogiem modułów. Zasadniczo lubię stosy odpowiedzi, które mogę po prostu wkleić, aby wszystko działało. Tutaj znajdziesz kilka wierszy, które zainstalują Rejestr Drush Rebuild i uruchomią go na twojej stronie, jeśli jesteś już w odpowiednim katalogu witryny.źródło
Nie jestem w 100% pewien prawdziwej odpowiedzi na drupal-esk, ale z mojego doświadczenia:
Przypadkowo przeniosłem jeden z moich niestandardowych folderów modułów do innego niestandardowego folderu modułów podczas przesyłania FTP na serwer. Oboje nadal pracowali. Drupal wydawał się rozpoznawać go jako oddzielny moduł, nawet gdy znajdował się w folderze innego modułu. Nie musiałem wyłączać modułu.
** Ten moduł, który przeniosłem, NIE miał pliku .install, więc nie jestem pewien, czy to ma znaczenie.
źródło
Dystrybucje Drupal nie radzą sobie tak dobrze, więc ostatnio po przypadkowym skończeniu z kopią API Entity w
sites/all/
na miejscu Panopoly, żaden z tym pracował. Odbudowa rejestru, ładowanie strony modułów i wszystko inne spowodowało błąd krytyczny.Wyłączenie modułu nie jest proste, jeśli musisz przenieść coś takiego jak Entity API, który jest wymagany przez mnóstwo innych modułów w Panopoly.
Aby rozwiązać ten problem, dla interfejsu API Entity zrobiłbyś coś takiego:
Zaktualizuj ścieżkę w tabeli systemowej:
Następnie odbuduj rejestr:
źródło
Drupal 7
Po pierwsze spróbuj
drush rr
.Jeśli to nie zadziała, po przeniesieniu plików wypróbuj następujące polecenia Drush w katalogu głównym Drupal:
Jeśli powyższe nie działa, znajdź tabelę, która nadal zawiera starą informację o ścieżce:
Jeśli nie zostanie znaleziony, oznacza to, że jest to twoja zewnętrzna pamięć podręczna.
Jeśli tak, nie zapomnij ich ponownie uruchomić, np .:
Zobacz więcej: Jakiej metody używa się do usuwania pamięci podręcznych w Drupal?
Alternatywnie możesz spróbować następujących zapytań MySQL po przeniesieniu plików:
źródło
Zalecane jest przeniesienie modułów do podfolderów contrib / dev / patched / custom. Jednak nie ma wzrostu wydajności, dzieje się tak ze względów praktycznych i estetycznych. Ułatwi to życie przyszłym programistom.
Możesz przenieść większość modułów contrib do podfolderów bez problemu na aktywnej stronie. Następnie powinieneś wyczyścić skrzynki. Jeśli nie użyjesz drush i okaże się, że nie możesz już uzyskać dostępu do strony czyszczenia pamięci podręcznej, będziesz musiał odwiedzić /update.php lub ręcznie obciąć tabele pamięci podręcznej. Ostatni raz musiałem zrobić ostatni bit podczas przenoszenia modułu API encji.
Przeniesienie modułów podstawowych jest technicznie możliwe, ale nie poleciłbym tego ani nie widzę żadnego uzasadnionego powodu, aby to zrobić.
Aktualizacja: Przenoszenie modułów, takich jak API encji, może wymagać odbudowania rejestru. Sprawdź stronę Registry_rebuild .
źródło
Możesz po prostu dodać link sym w katalogu sites / all / modules wskazujący na sites / all / contrib. Nie jestem pewien, czy to rozwiąże twój problem. Istnieją również inne rozwiązania, w tym profil instalacyjny lub plik drush make. Nie wiem wystarczająco, aby podać szczegółowe informacje na ich temat, ale przynajmniej jest to kierunek, na który można spojrzeć.
źródło