反時間方向的留言排序

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;
}
?>

完成

訪客購物車 programmatically


需求:每個訪客都會預設幫他們將一件貨物加到購物車
他們便可以直接完成交易

Commerce kickstart已經是一個現成的示範
訪客就算不注冊仍然可以使用購物車
而且一定情況之下關閉瀏覽器之後再回到網站仍然可以找回上次的紀錄繼續購物

但在 init 的時候使用

<?php
commerce_order_new
(0);
?>
是不會將 order 連接到現有的瀏覽器進程的

你需要的是:

<?php
commerce_cart_order_session_save
($order->order_id);
?>
AttachmentSize
download.png11.64 KB

Pages

Google