OpenTBS — скрыть изображение, когда его не существует

У меня есть список изображений, заполненный URL, или пустой в некоторых случаях.
Я просто хочу отображать изображения, когда URL-адрес существует, а не отображать изображение, когда URL-адрес не указан.
Есть очень похожий пост Вот, но не полностью ответил, поэтому я отправляю это снова.

Вот мой массив php:

$myBlock = array(
'description' => ...,
'name' => ...,
'photos' =>
array (
0 => string 'C:\path_to\pic_5491y.png'
1 => string 'C:\path_to\pic_5491y.png'
2 => string 'C:\path_to\pic_5491y.png'
3 => int 0
...
9 => int 0
10 => int 0
)
);

Затем я пытаюсь отобразить изображение внутри блока (на данный момент я пробую только с первой фотографией)

[myBlock; block=begin]
(the image I am trying to replace, or hide)
[CODE]
[myBlock; block=end]

И вот что я попытался положить в [CODE]с чем происходит:

  • [myBlock.photos.0;ope=addpic;att=draw:image#xlink:href;when [myBlock.photos.0]!=0]

    == >> Undefined property: clsTbsLocator::$PrevPosBeg

  • [myBlock.photos.0;ope=changepic;from=[val];tagpos=inside;adjust;unique;]

  • [myBlock.photos.0;ope=changepic;from=[val];tagpos=inside;adjust;unique; onshow; when[myBlock.photos.0] != 0] (как и раньше, но с when, что в итоге ничего не меняет)

    == >> The picture "0" that is supposed to be added because of parameter "ope=changepic" of the field [myBlock.photos.0] is not found. (это происходит, когда изображение имеет 0 в качестве URL)

  • [onShow; if[myBlock.photos.0] != 0; then[myBlock.photos.0] :drawing; else ‘1’]

    == >> [onShow; if0 != 0; then0 :drawing; else '1'] (просто отобразите это на документе)

  • [onshow; if[myBlock.photos.0] = 0 ; then ‘’ ; else from=[ myBlock.photos.0]; ope=changepic; tagpos=inside;adjust;unique]

    == >> ошибок нет, но не заменяйте изображения, даже если они установлены

Большое спасибо заранее, и дайте мне знать, если вам нужно больше деталей!

РЕДАКТИРОВАТЬ

Предложения Скрола работают правильно, когда я использую

$TBS->MergeBlock('myBlock', $myBlock['photos']);

Но я на самом деле пытаюсь слить напрямую $myBlockи, следовательно, в моем слове документ, пытаясь сделать «двойной foreach»

Мне не удается создать двойной блок в моем шаблоне (причина в том, что я пытаюсь отобразить некоторую информацию перед фотографиями.)

Я пытаюсь сделать:

[myBlock; block=begin]
[myBlock.description]   // => Display description before displaying the photos

[myBlock.photos; block=begin]
[myBlock.photos; block=end]
[myBlock; block=end]

Но как только я добавлю второй myBlock.photos чтобы я мог их просмотреть, у меня есть эта ошибка: in block's definition [myBlock...]: a least one tag with parameter 'block=end' is missing.

РЕДАКТИРОВАТЬ БИС

Попробовав несколько вещей с одним и тем же кодом, мне удалось избавиться от ошибки, возможно, из-за плохого скрытого символа где-то. Но теперь он пытается отобразить второй блок вместо создания нового foreach:

 This is description 1
array
array

This is description 2
array
array

....

Если это поможет получить лучшее представление о том, чего я пытаюсь достичь, то здесь эквивалент, который я бы использовал в PHP:

foreach( $myBlock as $myBlockKey => $myBlockData)
{
echo $myBlockData['description'];
echo $myBlockData['name'];
...

foreach( $myBlockData['photos'] as $photoKey => $photoData)
{
echo $photoData['url'];
}
}

Любая идея о том, как определить этот двойной блок ???
Я не смог найти ни одного примера в документе или где-либо еще 🙁

1

Решение

Для того, чтобы объединить изображения, хранящиеся в $myBlock['photos'], ваш код должен быть таким:

PHP:

$TBS->MergeBlock('myBlock', $myBlock['photos']);

DOCX:

[myBlock; block=begin; when 0!=[myBlock.val]]
(the image I am trying to replace, or hide)
[myBlock.val;ope=changepic;tagpos=after;adjust;unique;]
[myBlock; block=end]

Пояснения:

  • команда MergeBlock() объединяет данные, структурированные как набор записей. Это набор записей, имеющих одинаковую структуру. В твоей обрезке только $myBlock['photos'] это рекорд Поскольку каждая запись является непосредственно значением, вы можете использовать виртуальные столбцы val а также key чтобы добраться до данных.
  • параметр when 0!=[myBlock.val] делает секцию блока условной Таким образом, будут отображаться только записи со значением, отличным от 0.
  • параметр tagpos=after следует использовать, потому что тег TBS размещен после изображение.
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]