Я работаю над проектом, использующим Drupal 6 (на данный момент 6.11, еще не обновлен до 6.12), и часть основной функциональности - это возможность голосовать на узлах. У меня довольно странное поведение, и мне потребовалась целая эпоха, чтобы выследить его, и теперь я все еще не могу это исправить.
Это то, что мне удалось выяснить до сих пор:
- Файл шаблона
sites/default/modules/vote_up_down/theme/vote_up_down_points.tpl.php
автоматически вызывает функцию template_preprocess_vote_up_down_points()
из vote_up_down.module
.
vote_up_down.module
затем запрашивает базу данных, используя значения, хранящиеся в массиве $variables
, который передается ей
- Только в одном из 3 случаев это вызывается на типичном узле (в данном случае сообщениях на форуме)
$variables
не имеет значения для $variables['cid']
.
- Это один случай, когда он читает счет, чтобы отобразить его под самим постом. И вместо того, чтобы найти оценку текущего поста, он находит первый в истории проголосовавший пост. (Это потому, что вместо того, чтобы возвращать счет одного сообщения, он возвращает счет всех сообщений, а затем использует первое из списка).
Я предполагаю, что $variables
является общесистемной константой (кажется, что это подтверждается просмотром содержимого с использованием print_r
), и, возможно, это основная ошибка, поскольку она всегда должна быть одинаковой. Я проверил содержимое $variables
и единственные 4 части из 50, которые отличаются тем, что не работает: cid - пусто, tag - пусто (хотя это обнаруживается функцией и правильно подставляется как 'голосование' '), зебра - даже & id - 2. Я думаю, что последние 2 не очень важны для этого, поэтому ключ должен быть в том, почему $variables['cid']
не передается.
Итак, мои вопросы:
- У кого-нибудь была эта проблема раньше и как вы ее исправили?
- Если нет, есть ли у вас какие-либо советы, как я могу выяснить, почему это не работает правильно?