Изменение размера тизера (кол-во знаков) для уже созданных материалов.

Главные вкладки

Аватар пользователя Moel Moel 25 октября 2013 в 0:23

Создал тему для себя что бы не потерять. Может кому еще полезно будет.
Как мы знаем в настройках Drupal 6 есть настройки тизера, там мы меняем кол-во знаков. Но изменения этих настроек влияет только на новые или обновленные материалы. Так что если у вас например 1000 нод то вам придется все это дело руками пересохранять. Причем пересохранение материалов через VBO или через PHP код (будет ниже) не работает для тизеров почему то. Так что данный код очень помогает, если вы решили изменить кол-во знаков краткого содержания ваших статей.

Код для пересохранения материалов определенного типа:

<?php
//Change type here
$type 'book';
$query "SELECT nid FROM node where type='$type'";
 
$result = array();
$result db_query($query);
 
$count 0;
while (
$current_node db_fetch_array($result)){
  
//set_time_limit(999);
  
$current_node_id node_load($current_node["nid"]);
  
node_save($current_node_id);
  
$count++;
}
echo 
'Done... ',$count,' nodes were refreshed.';
?>

Код для обновления тизеров:

<?php
echo 'Fixing the latest node revision teasers for these published items: ';
$result db_query(db_rewrite_sql("SELECT n.nid, n.status, n.vid, r.body, r.format FROM {node} n LEFT JOIN {node_revisions} r ON n.vid = r.vid WHERE n.status = '1' ORDER BY n.nid DESC"));
while (
$node db_fetch_array($result)) {
  
$teaser node_teaser($node['body'], $node['format']);
  
db_query(db_rewrite_sql("UPDATE {node_revisions} n SET n.teaser ='%s' WHERE n.vid='%d'"), $teaser$node['vid']);
  echo 
$node['nid']." / ".$node['vid']."<br/>";
  }
?>