Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2012

Szybka instalacja Drupala na Ubuntu

Ten post jest krótką notatką o tym jak szybko i wygodnie tworzyć wirtualne hosty i instalować na nich Drupala ze zdefiniowanym zestawem modułów. Na wstępie mała sugestia dla ambitnych webdeveloperów pracujących na Windows: Z doświadczeń moich i moich znajomych wynika jasno, że bardziej, niż pracować na czymś w rodzaju WAMP, opłaca się odpalić jakąkolwiek dystrybucję Linuxa na wirtualnej maszynie i przesyłać sobie pliki po przez Sambę. W przypadku Drupala jest genialne rozwiązanie w postaci projektu Quickstart - fork Ubuntu skonfigurowany specjalnie do pracy z Drupalem. Ja przedstawię sposób jak uprościć sobie stawianie nowego deploya na zwykłym Ubuntu/Kubuntu. W tym celu napisałem sobie prosty skrypt basha który automatycznie tworzy vhosta, opcjonalnie tworzy bazę danych MySQL oraz pobiera rdzeń Drupala wraz z modułami, które najczęściej używam. Pozostaje tylko tradycyjnie dokończyć instalację strony w przeglądarce. Wymagania: Ubuntu Apache MySQL Drush 5 - może być wcześnie

Drupal tips: Wyświetlanie pola date jako texfield (zamiast fieldset)

Pole daty z modułu Date domyślnie jest renderowane jako fieldset. Niestety póki co, twórca modułu nie daje nam możliwości wyświetlania pola jako zwykły textfield w efekcie czego pole daty zawsze wyróżnia się w formularzu. Jak narazie najprostszym rozwiązaniem problemu jest zainstalowanie patcha do modułu date: cd <your_drupal_site>/sites/all/modules/date mkdir patch wget http://drupal.org/files/date_option_render_as_regular_field-1467712-60.patch patch patch -p1  < patch/date_option_render_as_regular_field-1467712-60.patch Po tej operacji w ustawieniach pola pojawi się sekcja Advanced settings w której możemy zaznaczyć, aby  pole było renderowane jako zwyły textfield. Po więcej informacji proponuję zajrzeć na stronę : http://drupal.org/node/1467712 Edit: Jest też drugie rozwiązanie będące bardziej "drupal friendly", które znalazłem na codekarate.com. Wystarczy mianowicie w pliku template.php nadpisać funkcję theme_date_combo:  function MYTHEME_date

Czy warto przesiąść się z D7 na Presflow 7 ?

Robiąc sobie research dotyczący wydajności Drupala 7 natknąłem się na projekt Pressflow - fork kropelki stworzony na potrzeby serwisów wymagających skalowalności i obsługi dużego ruchu. Pierwsze, co zwróciło moją uwagę to duży przycisk z napisem "Download and Install Pressflow 6" Czyżby nie istniała wersja siódma ? Okazuje się, że istnieje i ma się dobrze, a dlaczego nie chwalą się tym na stronie głównej ? Za odpowiedź niech posłuży fragment faq: If your project is built on Drupal 7 you might not need to use Pressflow at this time because the key enhancements from Pressflow 6 were added to Drupal 7.  Tak więc Pressflow 7 będzie wart uwagi, gdy zostanie zamrożony kod D8.  Additionally, as Drupal 8 matures, significant enhancements will likely be backported to Pressflow 7.

Profile 2 feat. hook_form_alter i #states

Przypadek: Masz formularz rejestracji użytkownika stworzony z poziomu modułu Profile2  w którym chcesz aby jakieś pole pojawiało się gdy np. wybrany checkbox zostanie zaznaczony. Rozwiązaniem jest stworzenie własnego modułu z wykorzystaniem hook_form_alter i dodanie do wybranego pola atrybutu #states . Problem: Standardowo wystarczy podać samą nazwę pola które steruje widzialnością i wszystko gra. Jednak w przypadku Profile2 to nie zadziałało i nie mogłem pojąć dlaczego... . Rozwiązanie: Otóż okazało się, że wszystkiemu winna była źle podawana nazwa pola sterującego, która powinna wyglądać mniej więcej tak: profile_nazwaprofilu[field_nazwapola][jezyk][parametr_value_pola] a w praktyce najlepiej użyć Firebuga, zaznaczyć pole  i skopiować wartość jego atrybutu  name :) Oto przykładowy kod: /**  * Implements hook_form_alter().  */ function testmodul_form_alter(&$form, &$form_state, $form_id) { if($form_id == 'user_register_form') { $form['prof

"Waga" modułów w Drupal 7

Problem: Potrzebujesz aby Twój  moduł wywoływał hook_form_alter jako ostatni - ma operować na formularzu już gotowym, przetworzonym przez wszystkie inne moduły. Rozwiązaniem jest ustawienie kolejności wywołań danego hooka. w D6 dało się to zrobić edytując bazę danych, co nie było zbyt elastycznym i eleganckim rozwiązaniem. Na szczęście w D7 stworzono hook_module_implements_alter który pozwala na kontrolę kolejności wywołań danego hooka przez określone przez programistę  moduły. W najprostszej wersji wystarczy podać tylko nasz moduł i będzie on wtedy ustawiony na końcu kolejki. Ponieważ sama dokumentacja hooka nie jest zbyt bogata polecam świetny tutorial na ten temat. Rozwiązanie to działa w moim przypadku, gdzie musiałem wywołać hook_form_alter()  swojego modułu  po tym jak  Profile2 dodał swoje pola do formularza rejestracji użytkownika. /** * Implements hook_module_implements_alter() */ function alter_register_worker_module_implements_alter(&$implementations, $

Nieregularne, klikalne kształty w HTML i CSS - szybkie studium przypadku

Mamy do wyboru trzy drogi: W zasadzie każda jest dobra i  wszystko zależy od naszych nawyków i tego, jaki mamy cel. 1. Imagemap Przykład: http://www.w3schools.com/tags/tag_area.asp   Jest to pierwszy i najszybszy sposób jeśli mamy w miarę nieskomplikowane kształty. Technika ta polega na - jak sama nazwa wskazuje - na nakładaniu na obrazek (<img>) interaktywnych obszarów <area>. Znacznik <area> przyjmuje do parametru shape  trzy opcje: rect , circle , lub poly . Najciekawszy jest ten ostatni, ponieważ pozwala na stworzenie dowolnego kształtu. Wymaga "jedynie" policzenia sobie współrzędnych  punktów, ale to przestaje być problemem, jeśli skorzystamy z generatora takiego, jak np  http://www.maschek.hu/imagemap/imgmap , który przy okazji generuje nam cały kod html. Zalety: Szybkość i prostota tworzenia klikalnych obszarów. Wady: Przede wszystkim brak możliwości dodania efektu typu zmiana koloru do stanu mouseover (jest to osiągalne dopiero przy

Drupal: Formularz z auto uzupełnianiem i dynamicznym dodawaniem pól

Na potrzeby jednego z projektów stworzyłem sobie prosty moduł generujący formularz służący do składania zamówień na produkty.  Formularz składa się z dodawanych poprzez AJAX pól tekstowych które mają  autouzupełnianie wpisywanych nazw produktów. W konfiguracji podajemy kategorię (tymczasem tylko jedną, ponieważ tyle mi wystarczyło) z której są pobierane nazwy produktów oraz e-mail na który zamówienie ma być wysyłane. Wypada też dodać sensowne komentarze w kodzie :) Zapraszam do pobierania, zgłaszania krytycznych uwag, sugestii oraz do commitowania  http://drupal.org/sandbox/fadehelix/1387290 Póki co moduł jest w fazie bardzo roboczej (rozwojowej) - nie stworzyłem jeszcze do niego testów oraz muszę w końcu wymyślić jak dodać w ustawieniach ścieżkę do formularza. Za sugestie z góry dziękuję :)