{Порешил}Проблема с сохранением отформатированного текста через node_save

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 12 января 2011 в 14:15

Возникла проблема при сохранении текста, содержащего хтмл теги

Код

<?php  
  $text 
'
  <h3><a id="1" name="1">Заголовок</a></h3>
  <p>текст</p>
  .... много текста
  <p>текст</p>
  '

  

$node = new stdClass();
  
$node->title 'Заголовок';
  
$node->body $text;
  
$node->type 'page';
  
$node->created time();
  
$node->changed time();
  
$node->path 'about';
  
$node->status 1;
  
$node->promote 1;
  
$node->sticky 0;
  
$node->format 3// формат ввода, 3 - php
  
$node->uid 1;
  
node_save($node); // сохраняем

?>

Как видим формат ввода установлен в 3, что соответсвует php фильтру

Текст не сохраняется. Простой текст сохраняется

Озанчает ли это, что при сознании ноды через node_save() настройки фильтра игнорируются и применяется некий дефолтный фильтр?

Или я чего упустил?

Комментарии

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 12 января 2011 в 14:18

И вдогонку ещу:

игнорируется $node->path, нода имеет путь, который задан в pathauto для типов нод, для которых не установлен шаблон генерирования адресов, те content/bla-bla

Аватар пользователя ozoned@drupal.org ozoned@drupal.org 12 января 2011 в 14:38

Все получилось, вот так:

<?php    
    $node = new stdClass();
    $node->type = 'page';
    $node->title = 'Test';
    $node->body = '<?php print 1; ?><h3><a>Заголовок</a></h3><p>текст</p>';
    $node->format = '3';
    $node->path = 'test-1';
    $node->pathauto_perform_alias = 0;
    $node->uid = 1;
    $node->language = 'ru';
    node_save($node);
?>

created, changed можно не задавать.
status, promote, sticky тоже — они будут по-умолчанию для этого типа. А вот язык я бы задал.

Аватар пользователя xxandeadxx xxandeadxx 12 января 2011 в 14:40

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
Озанчает ли это, что при сознании ноды через node_save() настройки фильтра игнорируются и применяется некий дефолтный фильтр?

нет

Аватар пользователя natbampo natbampo 12 января 2011 в 14:46

в базу сохраняется то что ввел. Фильтры применяются уже при показе содержимого.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 12 января 2011 в 14:55
<?php

$node

->body '<?php print 1; ?><h3><a>Заголовок</a></h3><p>текст</p>';

?>

Ммм, не понял зачем зачем <?php print 1; ?>?

<?php
$node
->pathauto_perform_alias 0;
?>

Спасибо

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 12 января 2011 в 15:17

Да, я обосрался, извините

Не заметил, что обернул node_save другой функцией, а переменные с длинным текстом были за пределами её Sad

Всё работает теперь Smile