[Решено] Ошибка на страницах нод имеющих комментарии (Fatal error: [] operator not supported for strings)

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

Аватар пользователя Cypher Cypher 21 апреля 2011 в 14:03

Помогите, пожалуйста. Я в ступоре.

Реализовал поддержку комментариев на сайте.
Имею тип материала "news". Создаю соответствующую ноду. Отображается нормально.
Добавляю к ней комментарий, перехожу на страницу с нодой, вижу:
Fatal error: [] operator not supported for strings in D:\xampp\htdocs\nays\sites\all\themes\<имя своей темы>\preprocess\preprocess-comment.inc on line 29.
Удаляю комментарий из админки, нода нормально выводится.
И т.д.

Проблема возникает только со своей темой. В гарланде все ОК.

Не знаю, на что думать. Гугл подсказывает мне, что проблема возникает с разными сущностями друпала, не только с комментариями.

Что можно попробовать сделать для выявления проблемы?

Комментарии

Аватар пользователя Cypher Cypher 21 апреля 2011 в 14:41

Ругается вот на такие строчки в соответствующем файле:

<?php
if ($vars['id'] == 1) {
  
$vars['classes_array'][] = 'first';
}
if (
$vars['id'] == $vars['node']->comment_count) {
  
$vars['classes_array'][] = 'last';
}
...
?>

Если поубирать их, то все ок. Но стили хотелось бы прицепить.

Аватар пользователя olk olk 21 апреля 2011 в 14:50

пропишите перед данным кодом что нибудь типа
dump($var); и посмотрите что у вас представляет $vars.
Подозреваю, что $vars['classes_array'] у вас является строкой а вы с ней работаете как с массивом.

Аватар пользователя Twil Twil 21 апреля 2011 в 16:13

"Cypher" wrote:
var_dump($var) выводит NULL

Потому что ругается-то на $vars['classes_array'][] = 'first';
Соответственно, и var_dump-пить надо $vars Smile

Аватар пользователя Cypher Cypher 29 апреля 2011 в 18:11

Twil, спасибо за отклик. Извиняюсь, что долго не отписывался Smile
про $var VS $vars стормозил. Издержки копипаста :(.
Код препроцессоров допилили:

<?php
if ($vars['id'] == 1) {
  if(
is_array($vars['classes_array']))
    
$vars['classes_array'][] = 'first';
  else
    
$vars['classes_array'] .= 'first';
}
?>