Никак не понимаю как это сделать.
В качестве токена стоит [random:hash:haval128,5]
Вроде перед node_save нужно написать
$node->path['pathauto'] = FALSE;
Да, после этого адрес не меняется, однако вылезает нотис
Notice: Undefined index: alias в функции path_node_update() (строка 204 в файле #####/modules/path/path.module).
%|
Комментарии
Может наведёт на мысли, так было в шестёрке:
// $Id$
/**
* @file
* TODO: Enter file description here.
*/
function extra_path_perm(){
return array('Administer Extra Path', 'Block alias');
}
/**
* Implementation of hook_menu().
*/
function extra_path_menu() {
$items['admin/build/path/extra-path'] = array(
'title' => 'Block alias settings',
'page callback' => 'drupal_get_form',
'page arguments' => array('extra_path_settings_page'),
'access arguments' => array('Administer Extra Path'),
'type' => MENU_LOCAL_TASK,
);
return $items;
}
/**
* Implementation of hook_nodeapi().
*/
function extra_path_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
switch ($op) {
case 'presave':
if((($node->status == 1) || ($node->block_alias == TRUE)) && extra_path_type_status_get($node->type)){
db_query('INSERT INTO {extra_path_blocked} (nid) VALUES (%d)', $node->nid);
$node->block_alias = TRUE;
}
if($node->block_alias == TRUE){
$node->pathauto_perform_alias = FALSE;
}
break;
case 'delete':
db_query('DELETE FROM {extra_path_blocked} WHERE nid = %d', $node->nid);
break;
}
}
/**
* Implementation of hook_form_alter().
*/
function extra_path_form_alter(&$form, &$form_state, $form_id) {
if (isset($form['type']) && isset($form['#node']) && $form['type']['#value'] .'_node_form' == $form_id && (user_access('Block alias') && extra_path_type_status_get($form['#node']->type))) {
$node = $form['#node'];
if(empty($node->nid)) {
$node->block_alias = FALSE;
}else{
$node->block_alias = db_result(db_query('SELECT count(*) FROM {extra_path_blocked} epb WHERE epb.nid = %d', $node->nid));
}
if(!$node->block_alias){
$form['path']['block_alias'] = array(
'#type' => 'checkbox',
'#title' => t('Block alias'),
'#default_value' => $node->block_alias,
'#weight' => -1,
);
}else{
unset($form['path']);
}
}
}
function extra_path_settings_page(){
$form = array();
$types = array();
$default_types = array();
foreach(node_get_types() as $key => $value){
$types[$key] = $value->name;
}
$result = db_query('SELECT eps.type FROM {extra_path_settings} eps WHERE status = 1');
while($type = db_fetch_object($result)){
$default_types[] = $type->type;
}
$form['extra_path']['types'] = array(
'#type' => 'checkboxes',
'#title' => t('Types of content'),
'#default_value' => $default_types,
'#options' => $types,
);
$form['submit'] = array('#type' => 'submit', '#value' => t('Save'));
return $form;
}
function extra_path_type_status_set($name, $status) {
db_query("UPDATE {extra_path_settings} SET status = '%s' WHERE type = '%s'", $status, $name);
if (!db_affected_rows()) {
@db_query("INSERT INTO {extra_path_settings} (type, status) VALUES ('%s', '%s')", $name, $status);
}
}
function extra_path_settings_page_submit($form, &$form_state){
foreach($form_state['values']['types'] as $key => $value){
extra_path_type_status_set($key, (bool)$value);
}
}
function extra_path_type_status_get($type) {
return db_result(db_query("SELECT eps.status FROM {extra_path_settings} eps WHERE eps.type = '%s'", $type));
}
может выкинуть этот модуль и сделать создание синонима рулезами при событии Добавлен новый материал
Semantics, спасибо будем смотреть
http://drupal.org/project/pathauto_persist
позволяет галочке с автоматик алиас не сниматься
попробую, спасибо
shurupkirov, это не то. мне нужно, чтобы алиас НЕ обновлялся =\
Если в ноде стоит галочка "автоалиас", то алиас меняется, а если эта галочка не стоит, то алиас остается тем, который вписан в поле алиаса.
Модуль Pathauto persistent state как раз делает так, чтобы если галочка снята, то при node_save она не ставилась. Сейчас попробовал на Webform, там когда редактируешь компоненты (поля), а потом сразу жмешь на просмотр, раньше галочка ставилась сама, а с модулем Pathauto persistent state если она была снята, то не ставится сама.
Сегодня столкнулся с такой же проблемой. Но мне надо было единоразово создать пачку страниц с определенными урлами. После node_save pathauto все равно крепил свои, хотя даже в поле синонима был правильный адрес. Как это не смешно, помогло только временное отключение pathauto, затем генерация нод, ну а затем снова его включить. Может поможет кому. Минус вродь только один, массвое обновление урлов на сайте теперь не желательно...