Добавление пользовательских изображений в представление календаря - PullRequest
0 голосов
/ 26 июля 2010

Я пытаюсь добавить пользовательские изображения в представление календаря Drupal, отметив 'nid' узла (или термин таксономии в будущем). Я пишу этот пользовательский код в поле views-view-field - calendar - nid.tpl.

Проблема в том, что то, что когда-либо выводится через view-view-field - calendar - nid.tpl, также вставляется в атрибут 'id' тега div . Пожалуйста, смотрите второй div тег.

254 был вывод, и он также вставляется в атрибут 'id'.

<div class="view-item view-item-calendar"> 
  <div class="calendar monthview" id="calendar:
 254:changed:0:0"> 
              <div id="nid" class="view-field view-data-nid"> 


 254      </div>  
      </div>    

Поэтому, когда views-view-field - calendar - nid.tpl выводит тег img , он также вставляется в атрибут 'id', который разрывает второй тег div .

Пожалуйста, смотрите следующий вывод

<div class="view-item view-item-calendar"> 
  <div class="calendar monthview" id="calendar:
 <img src="http://www.programmingnature.com/stackoverflow_32.png"> </img>255:changed:0:1">
              <div id="nid" class="view-field view-data-nid"> 


 <img src="http://www.programmingnature.com/stackoverflow_32.png"> </img>255      </div>  
      </div>    
</div> 

Скриншот:

альтернативный текст http://img201.imageshack.us/img201/3140/calendarproblem.png

Обратите внимание, что представление Calender попыталось вставить вывод с тегом img внутри этого атрибута 'id', и теперь все испорчено ...

Как я могу запретить Calender вставлять вывод в атрибут 'id'? Или есть какой-нибудь альтернативный способ вставки изображений в календаре?

Ниже приведен код поля представления-представления - календарь - nid.tpl

<?php

$results = $variables['view']->result;
$nid=$output;

$newOutput="";

foreach ($results as $key => $value) {
//Find the matching nid

 if ($nid==255) {

 $newOutput.= '<img src="http://www.programmingnature.com/stackoverflow_32.png"> </img>';
 }

 $newOutput.=$nid;


    }

 print  $newOutput; 

?>

Ответы [ 2 ]

1 голос
/ 26 июля 2010

Календарь довольно глупый.Происходит то, что представление календаря создает идентификатор на основе всех доступных полей в представлении и связывает их вместе, чтобы создать уникальный идентификатор.Прекрасно в теории, но это предполагает многое (например, вы не делаете то, что пытаетесь сделать здесь).

Вы можете увидеть, что он пытается сделать в template_preprocess_calendar_node() в theme / theme.inc.Решение состоит в том, чтобы создать собственную функцию предварительной обработки mytheme_preprocess_calendar_node(&$vars) и установить для $vars['fields']['id'] что-то более вменяемое, например, 'calendar-' . $vars['node']->nid.

0 голосов
/ 26 июля 2010

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

$newOutput.= '<img src="http://www.programmingnature.com/stackoverflow_32.png"> </img>';

на

$newOutput.= "<img src=http://www.programmingnature.com/stackoverflow_32.png> </img>";

Примечание. Я просто удалил кавычки изстрока.

Итак, следующий вывод генерируется Календарем,

<div class="calendar monthview" id="calendar:<img src=http://www.programmingnature.com/stackoverflow_32.png> </img>255:changed:0:1"> 

    <div id="nid" class="view-field view-data-nid"> 

    <img src=http://www.programmingnature.com/stackoverflow_32.png> </img>255  

   </div>  
</div>  

Ну, тег img все еще вставляется в атрибут ID , ноТег div не поврежден, и я получаю правильный вывод.

альтернативный текст http://img687.imageshack.us/img687/4607/calendarproblemsolved.png

Лучшим постоянным решением является использование функции предварительной обработки, как предложено Mark и kiamlaluno

...