개인 홈페이지나 블로깅도 한번 안해본 상태에서 drupal로 여행 정보 사이트를 만드려니 쉽지 않았습니다. Firefox를 주로 사용하고, 사파리, 크롬, IE7+, 아이폰사파리 에서 동일한 모습으로 display 됩니다. IE6에서 사용도 문제 없고요. 뭣도 모르고 시작했는데 CSS 만으로 이렇게 하는것이 쉽지는 않더군요.
예전에는 모듈들이 버그가 많아서 패치를 적용하느라 정신이 없었는데 요즘은 모듈들이 상대적으로 버그가 적어져서 개발이 예전보다는 쉬워진 것 같습니다. 사이트 개발이 목적이 아니라, 여행 정보 공유가 목적이었는데, 사이트 개발에 시간이 많이 소요되어서 본질인 여행 정보 업로드가 좀 늦어지고는 있습니다만 하루에 4 스팟 정도는 업로드하려고 노력 중입니다.
Google CSE는 Google Custom Search Engine의 약자로 그 기능 중 일부는,
구글 검색한 결과를 해당 사이트 내부의 페이지에 커스터마이징, 임베이드가 가능케 한다.
말보다는 직접 예를 보여주는 것이 좋을 듯 하다.
Google CSE 예제 사이트
이러한 기능을 드루팔에서 구현해 주는 모듈이
http://drupal.org/project/google_cse
이다.
모듈을 설치/활성화 후에, 관리자 권한으로
admin/settings/google_cse
에 가 보면 Google Custom Search Engine ID: 를 입력하게 돼 있다.
구글 애드센스 검색 설정에 가서 "검색 창"을 하나 만들고, (애드센스 예제라서 죄송)
그 검색 창의 Google Custom Search Engine ID를 얻어 설정하면 된다.
* 주의) 이때 얻는 구글 애드센스 코드 내부에 있는
부분은,
와 같이 수정하는 것이 좋겠다. 하지만 규약 위반이 없는지 신중하게 판단하자.
q를 query로 수정하는 이유는, 드루팔 내부의 파라미터와 충돌,
패스 분석을 제대로 못하고 404 현상을 유발하기 때문이다. (더 공부가 필요)
드루팔로 다국어 노드 번역 설정하기 (GTranslate.php 활용)
언어별 노드를 생성하는 순서는 아래 주소를 참고한다.
* multilingual setting - http://drupal.org/handbook/modules/translation
* 제대로 설정하면 노드 탭에 "translation" (번역)이 나타난다.
이후에 다국어 노드 번역 설정하기는 아래와 같이 할 수 있다.
① i18n_auto (Auto draft translation) 모듈을 이용하는 방법
추천하는 3개의 세트 모듈
i18n / i18n_auto (Auto draft translation) / translation_overview
* 세부적인 설정은 i18n_auto 모듈의 README를 보면 된다.
* You must setup a rule with "Translate a node into every enabled language"
Rules 설정에서 새로운 룰 설정
> 새로운 컨텐츠가 저장될 때를 선택
> 조건(트리거)에서는 새로운 컨텐츠의 저장을 선택
> 그리고 True/False을 구분하는 조건에서 <?echo ($node->language=="해당 언어코드"?true:false)?>를 설정.
> 액션은 "Translate a node into every enabled language" 을 선택
* i18n_auto/gtranslate-api-php 폴더에
GTranslate.php 과 languages.ini 를 넣는 것 잊지 말자.
* 중요 : FeedAPI 와 번역을 접목하는 경우에는 소스가 되는 언어를 피이드(light weight)로 생성하고, 반드시 "Feed Mapping"를 이용해서 Feed Items 가 될 컨텐츠 타입의 각 필드들과 연결해 주어야 한다. 또한 번역할 항목이 CCK로 생성한 새로운 필드인 경우에는, 반드시! 컨텐츠 타입 설정 화면의 Multilanguage options 의 Synchronize translations 항목에 있는 해당 필드를 체크해 주어야 한다!
------------------------------------------------------------------
② ipetranslation 모듈을 이용하는 방법
i18n / ipetranslation ( In-place translation ) / translation_overview
결론 - ①번 방법이 더 낫다.
* 주의 : 익명 상태로 cron.php를 정기적으로 부르는 경우, 위 기능들은 오작동이 날 가능성이 높다.
참고 : 드루팔 cron.php을 익명(Anonymous) 아닌 특정 권한으로 실행하는 방법
http://palpal.org/ko/node/445
外部のDB・Table情報一覧を出力・検索(Filtering)・編集・保存する方法
********************************************
1. Table Wizard (省略してtw) の利用する方法
: internal or external table 両方対応
「twで外部データの一覧を出力」
・外部DBを読んでViewと連結するモジュール。Joinも可能。
How to use Table Wizard to expose your imported database tables as Views
http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-w...
・settings.phpに外部DBのアクセス情報を事前設定。文字コードは自動判断。
・外部/内部のテーブルを一覧から選択。RelationShipも設定可能。
・Viewのフィールドに編集用リンク目的のCustomfieldを追加。
PHP コードで外部レコードの編集リンクを付けます。
※check : Rewrite the output of this field → "編集"
※check : Output this field as a link → external/edit/bulabula/[id]
「外部データの編集PGの準備」
・dadabik.org と phpmyedit.org : 1回の操作で1つテーブル(Join対応不可)
http://drupal.org/node/104066
※ この方式の短所: CMS機能の活用が難しい。(例:編集履歴のコンテンツ化)
「外部データの編集用インターフェイス」
・外部テーブルのSchemaを配列で準備。
・フォームの表示。別途WindowおよびFrame
http://drupal.org/project/modalframe
※ サブmoduleである、modalfrom_exampleを応用すれば便利。
※ 連結URLは、上記のexternal/edit/bulabula/[id]
http://drupal.org/project/onbeforeunload
http://drupal.org/project/dirtyforms
・フォームのValidation。
・現アクセスDBのinactive。外部DBへのアクセスactive。
http://drupal.org/node/18429
How to connect to multiple databases within Drupal
・フォームの提出。
・外部DBへのクエリ結果を確認。
・twから生成された元のView画面へ移動。
********************************************
2A.editview モジュールでView内データを直接修正する方法
: internal table のみ対応
・http://drupal.org/project/editview からDLしてActive化。
・どんなViewにもBasic SettingのstyleからEditviewで設定。
cf) 似たよう? editable fields module
2B.Viewのフィールドにあるnode→edit linkを追加する方法
: internal table のみ対応
・注意: comment edit linkとnode edit linkは違います。
1の「外部データの編集PGの準備」と
2の「外部データの編集用インターフェイス」を利用する。
********************************************
3.その他 : 下記以外にも色々あります。
・Dataモジュール : APIの利用も可能
http://drupal.org/project/data
・Input Filterの利用する方法
http://drupal.org/project/tablemanager
・AutoAdmin generates administration pages for database tables with DRUSH.
http://drupal.org/project/autoadmin
・色んなImportモジュール
・RDFとCRUD関連モジュールを利用する方法
********************************************
드루팔 cron.php을 익명(Anonymous) 아닌 특정 권한으로 실행하는 방법을 소개한다.
참고 : http://drupal.org/node/479948#comment-1673488
아래 쉘스크립트로 실행하면 된다.
*** 부분들만 적절하게 상황에 맞추어 수정할 것.
#!/bin/sh
site=http://***yoursite***/
name=***someusername***
pass=***someverysecurepassword***
cookies=/tmp/cron-cookies.txt
wget -O /dev/null --save-cookies /tmp/site-cookies.txt --keep-session-cookies --load-cookies $cookies "${site}user"
wget --keep-session-cookies --save-cookies $cookies --load-cookies $cookies -O /dev/null --post-data="name=$name&pass=$pass&op=Log%20in&form_id=user_login" "${site}user"
wget --keep-session-cookies --save-cookies $cookies --load-cookies $cookies "${site}cron.php"
드루지기는 문제없이 잘 적용됐는데, 위 참고출처에서는 "Invalid Null Command"이라는 에러를 만난 경우도 있는 것 같다.