diff --git a/exclude_node_title.module b/exclude_node_title.module index 5279cee..5647641 100755 --- a/exclude_node_title.module +++ b/exclude_node_title.module @@ -10,7 +10,7 @@ /** * Implements hook_permission(). - */ + */ function exclude_node_title_permission() { return array( 'administer exclude node title' => array( @@ -74,7 +74,7 @@ function exclude_node_title_preprocess_page(&$vars) { /** * Implements hook_node_view() - */ + */ function exclude_node_title_node_view($node, $view_mode) { if (user_access('use exclude node title')) { if (_exclude_node_title($node, $view_mode)) { @@ -138,7 +138,7 @@ function exclude_node_title_form_alter(&$form, &$form_state, $form_id) { if (!exclude_node_title_check_perm($form['#node'])) { return FALSE; } - + // don't bother to add form element if the content type isn't configured // to be excluded by user... if (variable_get('exclude_node_title_content_type_value_' . $form['#node']->type) == 'user') { @@ -195,6 +195,33 @@ function exclude_node_title_field_attach_delete_bundle($entity_type, $bundle, $i } /** + * Implements hook_ds_fields_info_alter() + */ +function exclude_node_title_ds_fields_info_alter(&$fields, $entity_type) { + if ($entity_type == 'node') { + $fields['title']['function'] = '_exclude_node_title_ds_render_field'; + $fields['title']['properties']['settings']['exclude node title settings'] = array( + 'type' => 'select', + 'options' => array('No', 'Yes'), + 'description' => t('Use the settings for the Exclude Node Title module for the title. Set to "off" to always show title.'), + ); + $fields['title']['properties']['default']['exclude node title settings'] = 1; + } +} + +/* + * Render the field obeying exclude node title settings + */ +function _exclude_node_title_ds_render_field($field) { + $settings = isset($field['formatter_settings']) ? $field['formatter_settings'] : array(); + $settings += $field['properties']['default']; + if ($settings['exclude node title settings'] && _exclude_node_title($field['entity']->nid, $field['view_mode'])) { + $field['entity']->title = ''; + } + return ds_render_field($field); +} + +/** * Tells if node should get hidden or not. * @param $param * Can be a node object or integer value (nid) @@ -202,12 +229,12 @@ function exclude_node_title_field_attach_delete_bundle($entity_type, $bundle, $i * Returns boolean TRUE if should be hidden, FALSE when not */ function _exclude_node_title($param, $view_mode = 'full') { - + // we accept only integer and object if (!is_object($param) && !is_numeric($param)) { return FALSE; } - + // if numeric, load the node with nid if (is_numeric($param)) { $node = node_load(intval($param)); @@ -222,7 +249,7 @@ function _exclude_node_title($param, $view_mode = 'full') { $node_type = $node->type; $nid = isset($node->nid)?$node->nid:FALSE; unset($node); // memory cleanup - + // get exclude settings static $exclude_settings; if (!isset($exclude_settings)) { @@ -260,7 +287,7 @@ function _exclude_node_title($param, $view_mode = 'full') { } } return FALSE; - + case 'none': default: return FALSE;