? advanced_page_title.patch
Index: page_title.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/page_title/page_title.module,v
retrieving revision 1.2.2.10
diff -u -r1.2.2.10 page_title.module
--- page_title.module	3 Aug 2007 06:52:10 -0000	1.2.2.10
+++ page_title.module	31 Jul 2008 07:26:14 -0000
@@ -82,6 +82,22 @@
     '#maxlength' => 128,
     '#description' => t('Available placeholders: <code>!site_name</code>, <code>!site_slogan</code>.'),
   );
+  
+  $form['page_title']['advanced'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Advanced path based settings'),
+    '#collapsible' => true,
+    '#collapsed' => true,
+    
+  );
+  
+  $form['page_title']['advanced']['page_title_advanced'] = array(
+    '#type' => 'textarea',
+    '#rows' => 15,
+    '#description' => t('Enter advanced rules in the form: pathpattern==titlepattern' . " where pathpattern is the path in the browser (not the drupal menu path)\n" . " for instance stories/*==!page_title is a story<em>"),
+    '#default_value' => variable_get('page_title_advanced', ''),
+  );
+  
   return system_settings_form($form);
 }
 
@@ -178,6 +194,7 @@
   static $title = NULL;
 
   if (is_null($title)) {
+    
     $page_title_individual = variable_get('page_title_individual', '!page_title | !site_name');
     $page_title_front = variable_get('page_title_front', '!site_name | !site_slogan');
 
@@ -191,6 +208,19 @@
     $site_name = variable_get('site_name', 'drupal');
     $site_slogan = variable_get('site_slogan', '');
 
+    if ($page_title_advanced = variable_get('page_title_advanced','')) {
+      $advanced_patterns = explode("\n",$page_title_advanced);
+      foreach ($advanced_patterns as $pattern) {
+        list($path,$title_pattern) = explode('==',$pattern);
+        if ($path && $title_pattern) {
+          if (ereg($path,$_SERVER['REQUEST_URI'])) {
+            $title = t($title_pattern, array('!page_title' => $page_title, '!site_name' => $site_name, '!site_slogan' => $site_slogan));
+            return $title;
+          }
+        }
+      }
+    }
+    
     if (drupal_is_front_page() || !$drupal_title) {
       $title = t($page_title_front, array('!site_name' => $site_name, '!site_slogan' => $site_slogan));
     }
