https://letsencrypt.org/ Public beta, 自動更新證書

安裝

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto

但 letsencrypt.org 的證書只有90 天期限,需要定時更新
可以使用以下 command 每個月的第一日自動更新證書
cron:

0 0 1 * * ./letsencrypt-auto -m joe@documentonready.com --renew-by-default --redirect --agree-tos -d domain.com

反時間方向的留言排序

Drupal 原生在 node 下的留言是使用時間最先的開始 (created ASC)
但如果需要反方向的話 (不使用 views 為前提):

<?php
/* Implements hook_query_TAG_alter().
https://www.drupal.org/node/1095656#comment-7885467
* * Alter comments query to order by DESC as well as the default ASC. */
function CUSTOM_query_comment_filter_alter(QueryAlterableInterface $query) {
 
$orderby = &$query->getOrderBy(); 
 
$expressions = &$query->getExpressions(); 
 
// Sorting for threaded comments.
 
if (isset($orderby['torder'])) {  
   
// Get rid of the expressions that prepare the threads for ASC ordering.
    // Simply order by the thread field.
     
   
unset($expressions['torder']);
    unset(
$orderby['torder']);
   
$orderby['c.thread'] = 'DESC';  
        
      
  }else{ 
// Sorting for flat comments.  
   
$direction = 'DESC';
    if (isset(
$orderby['c.cid'])) {
      unset(
$orderby['c.cid']);   
    }
   
$orderby['c.created'] = $direction;
   
$orderby['c.cid'] = $direction;
  }
}
?>

意外地繁瑣。還是使用 views 吧...

在 node page 加入 open graph tags

<?php
   
//custom.module: function custom_preprocess_node(&$vars) {
   
drupal_add_html_head(array(
     
'#tag' => 'meta',
     
'#attributes' => array(
       
'property' => 'og:description',
       
'content' => trim(strip_tags($vars['node']->body['und'][0]['safe_value'])),
      ),
    ),
'og_description');
?>

修改用戶頁面的密碼欄位

要求看似簡單,將用戶頁面的密碼欄位改成 “New Password” (或加 placeholder 等)

由:

改成:

試過使用最簡單的 hook_form_alter user_profile_form 但不成功,其中一個元素 <?php $form['account']['pass']['#type'] = 'password_confirm';?>
沒有 #title 可以修改

而原來 ‘password_confirm’ 是由 form_process_password_confirm() 輸出的,其中並沒有提供 hook

所以便要另找途徑,使用 form API #pre_render

<?php
function hook_form_user_profile_form_alter(&$form, &$form_state) {
 
$form['#pre_render'][] = 'hook_form_user_profile_form_pre_render';
}
function
hook_form_user_profile_form_pre_render($elements) {
 
$elements['account']['pass']['pass1']['#title'] = t('New password');
 
$elements['account']['pass']['pass2']['#title'] = t('Confirm new password');
  return
$elements;
}
?>

完成

Pages

Google