extras-evolution / multiTV

Custom TV for Evolution CMS: Transform a template variables into a sortable multi item list for the Evolution content management framework
8 stars 23 forks source link

PHP 7.1/7.2 Error : A non-numeric value encountered #48

Closed leonie12 closed 5 years ago

leonie12 commented 5 years ago

With MultiTV 2.0.15 and PHP 7.1 and PHP 7.2

`

Error information  
ErrorType[num] WARNING[2]
File /opt/lampp/htdocs/assets/plugins/phx/phx.parser.class.inc.php(356) : eval()'d code
Line 8
Current Snippet multiTV
Current Plugin PHx(OnParseDocument)

Backtrace

DocumentParser->executeParser()index.php on line 139 DocumentParser->prepareResponse()manager/includes/document.parser.class.inc.php on line 2860 DocumentParser->parseDocumentSource(string $var1)manager/includes/document.parser.class.inc.php on line 2969 DocumentParser->invokeEvent('OnParseDocument')manager/includes/document.parser.class.inc.php on line 2704 DocumentParser->evalPlugin(string $var1, array $var2)manager/includes/document.parser.class.inc.php on line 5510 eval()manager/includes/document.parser.class.inc.php on line 1916 PHxParser->OnParseDocument()manager/includes/document.parser.class.inc.php(1916) : eval()'d code on line 9 PHxParser->Parse(string $var1)assets/plugins/phx/phx.parser.class.inc.php on line 50 PHxParser->ParseValues(string $var1)assets/plugins/phx/phx.parser.class.inc.php on line 65 DocumentParser->evalSnippets(string $var1)assets/plugins/phx/phx.parser.class.inc.php on line 132 DocumentParser->_get_snip_result(string $var1)manager/includes/document.parser.class.inc.php on line 2025 DocumentParser->evalSnippet(string $var1, array $var2)manager/includes/document.parser.class.inc.php on line 2113 eval()manager/includes/document.parser.class.inc.php on line 1962 require(string $var1)manager/includes/document.parser.class.inc.php(1962) : eval()'d code on line 1 multiTV->displayMultiValue(array $var1, array $var2)assets/tvs/multitv/multitv.snippet.php on line 95 newChunkie->process()assets/tvs/multitv/includes/multitv.class.php on line 1186 PHxParser->Parse(string $var1)assets/tvs/multitv/includes/newchunkie.class.php on line 519 PHxParser->ParseValues(string $var1)assets/plugins/phx/phx.parser.class.inc.php on line 65 PHxParser->Filter('', string $var2)assets/plugins/phx/phx.parser.class.inc.php on line 187 eval()assets/plugins/phx/phx.parser.class.inc.php on line 356

`

leonie12 commented 5 years ago

Problem persists with Evo 1.4.7. Actually PHP 7.0 is EOL. Thereof I have to change to PHP 7.1, but this makes the pages with above error unusable. A solution would be great. Even a hint in the direction where I could find the reason for the error would be helpful. In the above backtrace I can not see if Phx or MultiTV is at fault.

mnoskov commented 5 years ago

Can you show tv config?

leonie12 commented 5 years ago

$settings['display'] = 'vertical';
$settings['fields'] = array(
    'veranstaltungstitel' => array(
        'caption' => 'Veranstaltungstitel',
        'type' => 'text'
    ),
    'veranstaltungsURL' => array(
        'caption' => 'Veranstaltungs-URL',
        'type' => 'text'
    ),
    'veranstaltungsart' => array(
        'caption' => 'Typ',
        'type' => 'dropdown',
        'elements' => 'Seminar||Exkursion||Fest||Sonstige Veranstaltung'
    ),
    'startDate' => array(
        'caption' => 'Datum Beginn',
        'type' => 'date'
    ),
    'startTime' => array(
        'caption' => 'Uhrzeit Beginn',
        'type' => 'text'
    ),
    'endDate' => array(
        'caption' => 'Datum Ende',
        'type' => 'date'
    ),
    'endTime' => array(
        'caption' => 'Uhrzeit Ende',
        'type' => 'text'
    ),
    'ueberschriftVerantwortlicher' => array(
        'caption' => 'Überschrift Verantwortlicher',
        'type' => 'dropdown',
        'elements' => 'Leitung||Organisation||Referent||Ausbilder'
    ),
    'leitung' => array(
        'caption' => 'Name Verantwortlicher',
        'type' => 'text'
    ),
    'veranstalter' => array(
        'caption' => 'Veranstalter',
        'type' => 'text'
    ),
    'veranstalterURL' => array(
        'caption' => 'Veranstalter-URL',
        'type' => 'text'
    ),
    'strasse' => array(
        'caption' => 'Veranstaltungsort: Straße',
        'type' => 'text'
    ),
    'plz' => array(
        'caption' => 'Veranstaltungsort: PLZ',
        'type' => 'text'
    ),
    'ort' => array(
        'caption' => 'Veranstaltungsort: Ort',
        'type' => 'text'
    ),
    'anmeldung' => array(
        'caption' => 'Anmeldung erforderlich',
        'type' => 'dropdown',
        'elements' => 'Ja||Nein'
    ),
    'kosten' => array(
        'caption' => 'Kosten',
        'type' => 'text'
    ),
    'details' => array(
        'caption' => 'Details',
        'type' => 'textarea'
    ),
    'image' => array(
        'caption' => 'Bild',
        'type' => 'image'
    ),
    'thumb' => array(
        'caption' => 'Thumbnail',
        'type' => 'thumb',
        'thumbof' => 'image'
    ),
    'legend' => array(
        'caption' => 'Alternativtext (alt="")',
        'type' => 'text'
    ),
    'title' => array(
        'caption' => 'Bildtitel (title="")',
        'type' => 'text'
    ),
    'author' => array(
        'caption' => 'Bildautor',
        'type' => 'text'
    )
);
$settings['templates'] = array(
    'outerTpl' => '[+wrapper+]',
    'rowTpl' => '
    [+veranstaltungstitel:ifnotempty=`[+startDate:ifnotempty=`[+veranstalter:ifnotempty=`[+ort:ifnotempty=`
    <article itemscope itemtype="http://schema.org/Event" id="[+startDate:strtotime:date_ger=`%Y-%m-%d`+]T[+startTime+]">
    [*id:in=`49, 61`:then=`
    <table>
      <tr>
        <td><time itemprop="startDate" datetime="[+startDate:strtotime:date_ger=`%Y-%m-%d`+][+startTime:ifnotempty=`T[+startTime+]`+]">[+startDate:strtotime:date_ger=`<span class="jahr">%Y</span><span class="monat">%B</span><span class="tag">%e</span><span class="wochentag">%A</span>`+]</time></td>
        <td>
          <h2 itemprop="name">[+veranstaltungstitel+]</h2>
        </td>
      </tr>
      <tr>
        <th>Veranstalter:</th>
        <td>[+veranstalterURL:ifnotempty=`<a href="[+veranstalterURL+]">`+][+veranstalter+][+veranstalterURL:ifnotempty=`</a>`+]</td>
      </tr>
      <tr>
        <th>Ort:</th>
        <td><span itemprop="location" itemscope itemtype="http://schema.org/PostalAddress"><span itemprop="name"><span itemprop="postalCode">[+plz+]</span> <span itemprop="addressLocality">[+ort+]</span></span></span></td>
      </tr>
      <tr>
        <th>Weitere Infos:</th>
        <td><a href="[+veranstaltungsURL+]">[+veranstaltungstitel+] – Details <svg class="icon icon-chain"><use xlink:href="assets/templates/baumpflege/images/icons/symbol-defs.svg#icon-chain"></use></svg></a></td>
      </tr>
    </table>
    `:else=`
    <div itemprop="name">
    <h1>[*pagetitle*]</h1>
    <h2>[*longtitle*]</h2>
    </div>
    <meta itemprop="url" content="[+veranstaltungsURL+]">
    <table>
    <tr><th>Art der Veranstaltung:</th><td>[+veranstaltungsart+]</td></tr>
    <tr><th>Beginn:</th><td><time itemprop="startDate" datetime="[+startDate:strtotime:date_ger=`%Y-%m-%d`+][+startTime:ifnotempty=`T[+startTime+]`+]">[+startDate:strtotime:date_ger=`%A, %e. %B %Y`+], [+startTime:ifnotempty=`[+startTime+] Uhr`+]</time></td></tr>
    [+endDate:ifnotempty=`<tr><th>Ende:</th><td><time itemprop="endDate" datetime="[+endDate:strtotime:date_ger=`%Y-%m-%d`+][+endTime:ifnotempty=`T[+endTime+]`+]">[+endDate:strtotime:date_ger=`%A, %e. %B %Y`+], [+endTime:ifnotempty=`[+endTime+] Uhr`+]</time></td></tr>`+]
    [+leitung:ifnotempty=`<tr><th>[+ueberschriftVerantwortlicher+]:</th><td>[+leitung+]</td></tr>`+]
    <tr><th>Veranstalter:</th><td>[+veranstalterURL:ifnotempty=`<a href="[+veranstalterURL+]">`+][+veranstalter+][+veranstalterURL:ifnotempty=`</a>`+]</td></tr>
    <tr><th>Ort:</th><td><span itemprop="location" itemscope itemtype="http://schema.org/PostalAddress"><span itemprop="name"><span itemprop="postalCode">[+plz+]</span> <span itemprop="addressLocality">[+ort+]</span></span></span></td></tr>
    <tr><th>Anmeldung erforderlich:</th><td>[+anmeldung+]</td></tr>
    [+kosten:ifnotempty=`<tr><th>Kosten:</th><td>[+kosten+]</td></tr>`+]
    [+details:ifnotempty=`<tr><th>Details:</th><td>[+details+]</td></tr>`+]
    </table>`*]
    </article>
    [*id:in=`49, 61`:then=`<hr />`:else=``*]
    `+]`+]`+]`+]'
);```
mnoskov commented 5 years ago

Can you show contents of the snippet date_ger?

leonie12 commented 5 years ago

/*
 * description: returns german date
 * usage: [+string:date_ger=`format`+]
 */
$format = (strlen($options) > 0) ? $options : '%A, %e. %B %Y';
setlocale(LC_TIME, 'de_DE.UTF-8');
$date_ger = strftime($format, 0 + $output);
return $date_ger;```
mnoskov commented 5 years ago

Can you exclude this snippet from templates and check again?

leonie12 commented 5 years ago

I removed all occurrences of :strtotime:date_ger=…` . The error persists.

leonie12 commented 5 years ago

What I see now is that the error happens only on the overview pages [*id:in=`49, 61`:then= not on the detail pages :else=

mnoskov commented 5 years ago

I removed all occurrences of :strtotime:date_ger=…` . The error persists.

Maybe not all, because seems to me, problem in this snippet - http://php.net/manual/de/migration71.other-changes.php (first section)

leonie12 commented 5 years ago

I can not find any occurrence of date_ger in MultiTV config or elsewhere on the affected sites:

$settings['display'] = 'vertical';
$settings['fields'] = array(
    'veranstaltungstitel' => array(
        'caption' => 'Veranstaltungstitel',
        'type' => 'text'
    ),
    'veranstaltungsURL' => array(
        'caption' => 'Veranstaltungs-URL',
        'type' => 'text'
    ),
    'veranstaltungsart' => array(
        'caption' => 'Typ',
        'type' => 'dropdown',
        'elements' => 'Seminar||Exkursion||Fest||Sonstige Veranstaltung'
    ),
    'startDate' => array(
        'caption' => 'Datum Beginn',
        'type' => 'date'
    ),
    'startTime' => array(
        'caption' => 'Uhrzeit Beginn',
        'type' => 'text'
    ),
    'endDate' => array(
        'caption' => 'Datum Ende',
        'type' => 'date'
    ),
    'endTime' => array(
        'caption' => 'Uhrzeit Ende',
        'type' => 'text'
    ),
    'ueberschriftVerantwortlicher' => array(
        'caption' => 'Überschrift Verantwortlicher',
        'type' => 'dropdown',
        'elements' => 'Leitung||Organisation||Referent||Ausbilder'
    ),
    'leitung' => array(
        'caption' => 'Name Verantwortlicher',
        'type' => 'text'
    ),
    'veranstalter' => array(
        'caption' => 'Veranstalter',
        'type' => 'text'
    ),
    'veranstalterURL' => array(
        'caption' => 'Veranstalter-URL',
        'type' => 'text'
    ),
    'strasse' => array(
        'caption' => 'Veranstaltungsort: Straße',
        'type' => 'text'
    ),
    'plz' => array(
        'caption' => 'Veranstaltungsort: PLZ',
        'type' => 'text'
    ),
    'ort' => array(
        'caption' => 'Veranstaltungsort: Ort',
        'type' => 'text'
    ),
    'anmeldung' => array(
        'caption' => 'Anmeldung erforderlich',
        'type' => 'dropdown',
        'elements' => 'Ja||Nein'
    ),
    'kosten' => array(
        'caption' => 'Kosten',
        'type' => 'text'
    ),
    'details' => array(
        'caption' => 'Details',
        'type' => 'textarea'
    ),
    'image' => array(
        'caption' => 'Bild',
        'type' => 'image'
    ),
    'thumb' => array(
        'caption' => 'Thumbnail',
        'type' => 'thumb',
        'thumbof' => 'image'
    ),
    'legend' => array(
        'caption' => 'Alternativtext (alt="")',
        'type' => 'text'
    ),
    'title' => array(
        'caption' => 'Bildtitel (title="")',
        'type' => 'text'
    ),
    'author' => array(
        'caption' => 'Bildautor',
        'type' => 'text'
    )
);
$settings['templates'] = array(
    'outerTpl' => '[+wrapper+]',
    'rowTpl' => '
    [+veranstaltungstitel:ifnotempty=`[+startDate:ifnotempty=`[+veranstalter:ifnotempty=`[+ort:ifnotempty=`
    <article itemscope itemtype="http://schema.org/Event" id="[+startDate+]T[+startTime+]">
    [*id:in=`49, 61`:then=`
    <table>
      <tr>
        <td><time class="kalenderblatt" itemprop="startDate" datetime="[+startDate+][+startTime:ifnotempty=`T[+startTime+]`+]">[+startDate+]</time></td>
        <td>
          <h2 itemprop="name">[+veranstaltungstitel+]</h2>
        </td>
      </tr>
      <tr>
        <th>Veranstalter:</th>
        <td>[+veranstalterURL:ifnotempty=`<a href="[+veranstalterURL+]">`+][+veranstalter:ifnotempty=`[+veranstalter+]`+][+veranstalterURL:ifnotempty=`</a>`+]</td>
      </tr>
      <tr>
        <th>Ort:</th>
        <td><span itemprop="location" itemscope itemtype="http://schema.org/PostalAddress"><span itemprop="name"><span itemprop="postalCode">[+plz:ifnotempty=`[+plz+]`+]</span> <span itemprop="addressLocality">[+ort:ifnotempty=`[+ort+]`+]</span></span></span></td>
      </tr>
      <tr>
        <th>Weitere Infos:</th>
        <td><a href="[+veranstaltungsURL:ifnotempty=`[+veranstaltungsURL+]`+]">[+veranstaltungstitel:ifnotempty=`[+veranstaltungstitel+]`+] – Details</a></td>
      </tr>
    </table>
    `:else=`
    <div itemprop="name">
    <h1>[*pagetitle*]</h1>
    <h2>[*longtitle*]</h2>
    </div>
    <meta itemprop="url" content="[+veranstaltungsURL+]">
    <table>
    <tr><th>Art der Veranstaltung:</th><td>[+veranstaltungsart+]</td></tr>
    <tr><th>Beginn:</th><td><time itemprop="startDate" datetime="[+startDate+][+startTime:ifnotempty=`T[+startTime+]`+]">[+startDate+], [+startTime:ifnotempty=`[+startTime+] Uhr`+]</time></td></tr>
    [+endDate:ifnotempty=`<tr><th>Ende:</th><td><time itemprop="endDate" datetime="[+endDate:strtotime+][+endTime:ifnotempty=`T[+endTime+]`+]">[+endDate:strtotime+], [+endTime:ifnotempty=`[+endTime+] Uhr`+]</time></td></tr>`+]
    [+leitung:ifnotempty=`<tr><th>[+ueberschriftVerantwortlicher+]:</th><td>[+leitung+]</td></tr>`+]
    <tr><th>Veranstalter:</th><td>[+veranstalterURL:ifnotempty=`<a href="[+veranstalterURL+]">`+][+veranstalter+][+veranstalterURL:ifnotempty=`</a>`+]</td></tr>
    <tr><th>Ort:</th><td><span itemprop="location" itemscope itemtype="http://schema.org/PostalAddress"><span itemprop="name"><span itemprop="postalCode">[+plz+]</span> <span itemprop="addressLocality">[+ort+]</span></span></span></td></tr>
    <tr><th>Anmeldung erforderlich:</th><td>[+anmeldung+]</td></tr>
    [+kosten:ifnotempty=`<tr><th>Kosten:</th><td>[+kosten+]</td></tr>`+]
    [+details:ifnotempty=`<tr><th>Details:</th><td>[+details+]</td></tr>`+]
    </table>`*]
    </article>
    [*id:in=`49, 61`:then=`<hr />`:else=``*]
    `+]`+]`+]`+]'
);

Above I inciluded some more :ifnotempty to be sure that this can not be the reason, even if the field before missing the ifnotempty are always filled.

Also it works on the detail pages (:else part of config) with date_ger included.

pmfx commented 5 years ago

I suggest to use [[if]] snippet. This looks like asking for issues ;)

[+veranstaltungstitel:ifnotempty=`[+startDate:ifnotempty=`[+veranstalter:ifnotempty=`[+ort:ifnotempty=`
...
`+]`+]`+]`+]

Maybe try something like this:

[[if? 
&separator=`||`
&is=`[+veranstaltungstitel+][+startDate+][+veranstalter+][+ort+]||!empty` 
&then=`
  <article>
    [[if? &is=`[*id*]:in:49,61` 
    &then=`<table>...`
    &else=`<div itemprop="name">...`
    ]]
  </article>
  [[if? &is=`[*id*]:in:49,61` &then=`<hr />`]]
`
]]
leonie12 commented 5 years ago

I am really glad that you are helping. Your suggestion affects that if one of the fields in if? !empty is empty the site content is not shown. Until now if one field is empty only this field is not shown. Would you suggest to replace evrey occurrence of :ifnotempty= with [if? !empty ?

pmfx commented 5 years ago

Yes, I recommend to convert :ifnotempty= with:

[[if? &separator=`||` &is=`[+yourValue+]||!empty` &then=`yourCode`]]

Updated code:

[[if? 
&separator=`||`
&is=`[+veranstaltungstitel+]||!empty||or||[+startDate+]||!empty||or||[+veranstalter+]||!empty||or||[+ort+]||!empty` 
&then=`
  <article>
    [[if? &is=`[*id*]:in:49,61` 
    &then=`<table>...`
    &else=`<div itemprop="name">...`
    ]]
  </article>
  [[if? &is=`[*id*]:in:49,61` &then=`<hr />`]]
`
]]
mnoskov commented 5 years ago

And I recommend to use prepare: https://github.com/evolution-cms/docs/blob/master/en/04_Extras/multiTV/07_Data_preparation.md

leonie12 commented 5 years ago

I would like to use prepare but I do not the least understand how to use it. I read the instructions but have no idea how to adapt to my actual scenario. Prepare is why I still use Maxigallery and have not yet changed to the gallery based on Doclister. I could not grasp how to use prepare :-( …

At the moment I am replacing phx ifnotempty with if snippet in above config.

pmfx commented 5 years ago

You can find if docs here http://docs.evo.im/en/04_extras/if.html Some examples in english are also in your Evo installation in /assets/snippets/if/readme.html I also recommend using chunks in &then / &else if your output output is large or contains additional statements and snippets. Example: &then=`@TPL:chunkName`

leonie12 commented 5 years ago

Some time ago I replaced nearly all occurrences of phx with if snippet. This was when there were problems when core modifiers were introduced and problems with phx arised. Before making changes I read the if instructions. Since then everything worked. The actual issue is when changing PHP 7.0 to 7.1/7.2.

Now I changed and simplified the MultiTV config to this:

$settings['display'] = 'vertical';
$settings['fields'] = array(
    'veranstaltungstitel' => array(
        'caption' => 'Veranstaltungstitel',
        'type' => 'text'
    ),
    'veranstaltungsURL' => array(
        'caption' => 'Veranstaltungs-URL',
        'type' => 'text'
    ),
    'veranstaltungsart' => array(
        'caption' => 'Typ',
        'type' => 'dropdown',
        'elements' => 'Seminar||Exkursion||Fest||Sonstige Veranstaltung'
    ),
    'startDate' => array(
        'caption' => 'Datum Beginn',
        'type' => 'date'
    ),
    'startTime' => array(
        'caption' => 'Uhrzeit Beginn',
        'type' => 'text'
    ),
    'endDate' => array(
        'caption' => 'Datum Ende',
        'type' => 'date'
    ),
    'endTime' => array(
        'caption' => 'Uhrzeit Ende',
        'type' => 'text'
    ),
    'ueberschriftVerantwortlicher' => array(
        'caption' => 'Überschrift Verantwortlicher',
        'type' => 'dropdown',
        'elements' => 'Leitung||Organisation||Referent||Ausbilder'
    ),
    'leitung' => array(
        'caption' => 'Name Verantwortlicher',
        'type' => 'text'
    ),
    'veranstalter' => array(
        'caption' => 'Veranstalter',
        'type' => 'text'
    ),
    'veranstalterURL' => array(
        'caption' => 'Veranstalter-URL',
        'type' => 'text'
    ),
    'strasse' => array(
        'caption' => 'Veranstaltungsort: Straße',
        'type' => 'text'
    ),
    'plz' => array(
        'caption' => 'Veranstaltungsort: PLZ',
        'type' => 'text'
    ),
    'ort' => array(
        'caption' => 'Veranstaltungsort: Ort',
        'type' => 'text'
    ),
    'anmeldung' => array(
        'caption' => 'Anmeldung erforderlich',
        'type' => 'dropdown',
        'elements' => 'Ja||Nein'
    ),
    'kosten' => array(
        'caption' => 'Kosten',
        'type' => 'text'
    ),
    'details' => array(
        'caption' => 'Details',
        'type' => 'textarea'
    ),
    'image' => array(
        'caption' => 'Bild',
        'type' => 'image'
    ),
    'thumb' => array(
        'caption' => 'Thumbnail',
        'type' => 'thumb',
        'thumbof' => 'image'
    ),
    'legend' => array(
        'caption' => 'Alternativtext (alt="")',
        'type' => 'text'
    ),
    'title' => array(
        'caption' => 'Bildtitel (title="")',
        'type' => 'text'
    ),
    'author' => array(
        'caption' => 'Bildautor',
        'type' => 'text'
    )
);
$settings['templates'] = array(
    'outerTpl' => '[+wrapper+]',
    'rowTpl' => '
    [[If? 
      &separator=`||`
      &is=`[+veranstaltungstitel+]||!empty||or||[+startDate+]||!empty||or||[+veranstalter+]||!empty||or||[+ort+]||!empty` 
      &then=`
    <article itemscope itemtype="http://schema.org/Event" id="[+startDate+]T[+startTime+]">
    [[If? &is=`[*id*]:in:49,61` 
    &then=`
    <table>
      <tr>
        <td><time datetime="[+startDate+][[If? &is=`[+startTime+]:notempty` &then=`T[+startTime+]`]]">[+startDate+]</time></td>
        <td>
          <h2 itemprop="name">[+veranstaltungstitel+]</h2>
        </td>
      </tr>
      <tr>
        <th>Veranstalter:</th>
        <td>[[If? &is=`[+veranstalterURL+]:notempty` &then=`<a href="[+veranstalterURL+]">`]][+veranstalter+][[If? &is=`[+veranstalterURL+]:notempty` &then=`</a>`]]</td>
      </tr>
      <tr>
        <th>Ort:</th>
        <td>[+plz+][+ort+]</td>
      </tr>
      <tr>
        <th>Weitere Infos:</th>
        <td><a href="[+veranstaltungsURL+]">[+veranstaltungstitel+] – Details</a></td>
      </tr>
    </table>`
    &else=`
    <h1>[*pagetitle*]</h1>
    <h2>[*longtitle*]</h2>
    <meta itemprop="url" content="[+veranstaltungsURL+]">
    <table>
    <tr><th>Art der Veranstaltung:</th><td>[+veranstaltungsart+]</td></tr>
    <tr><th>Beginn:</th><td><time datetime="[+startDate+][[If? &is=`[+startTime+]:notempty` &then=`T[+startTime+]`]]">[+startDate+], [[If? &is=`[+startTime+]:notempty` &then=`[+startTime+] Uhr`]]</time></td></tr>
    [[If? &is=`[+endDate+]:notempty` &then=`<tr><th>Ende:</th><td><time itemprop="endDate" datetime="[+endDate+][[If? &is=`[+endTime+]:notempty` &then=`T[+endTime+]`]]">[+endDate+], [[If? &is=`[+endTime+]:notempty` &then=`[+endTime+] Uhr`+]</time></td></tr>`]]
    [[If? &is=`[+leitung+]:notempty` &then=`<tr><th>[+ueberschriftVerantwortlicher+]:</th><td>[+leitung+]</td></tr>`]]
    <tr><th>Veranstalter:</th><td>[[If? &is=`[+veranstalterURL+]:notempty` &then=`<a href="[+veranstalterURL+]">`]][+veranstalter+][[If? &is=`[+veranstalterURL+]:notempty` &then=`</a>`]]</td></tr>
    <tr><th>Ort:</th><td>[+plz+][+ort+]</td></tr>
    <tr><th>Anmeldung erforderlich:</th><td>[+anmeldung+]</td></tr>
    [[If? &is=`[+kosten+]:notempty` &then=`<tr><th>Kosten:</th><td>[+kosten+]</td></tr>`]]
    [[If? &is=`[+details+]:notempty` &then=`<tr><th>Details:</th><td>[+details+]</td></tr>`]]
    </table>`]]
    </article>
    [[If? &is=`[*id*]:in:49,61` &then=`<hr />` &else=``]]
    `]]
    `]]'
);

The issue persists with exactly the same error information …

Is there any possibility to get closer to the reason for the issue by following the backtrace and line numbers? I can not find any possible reason by doing this but am (advanced) end user and not developper.

leonie12 commented 5 years ago

To sum it up a bit: The issue happens only in the &is=`[*id*]:in:49,61 part not in the &then part even if there are the same (and more) placeholders and if calls used. Is this a possible hint that I do not understand?

leonie12 commented 5 years ago

The issue even happens when simplifying MultiTV config to this:

$settings['display'] = 'vertical';
$settings['fields'] = array(
    'veranstaltungstitel' => array(
        'caption' => 'Veranstaltungstitel',
        'type' => 'text'
    ),
    'veranstaltungsURL' => array(
        'caption' => 'Veranstaltungs-URL',
        'type' => 'text'
    ),
    'veranstaltungsart' => array(
        'caption' => 'Typ',
        'type' => 'dropdown',
        'elements' => 'Seminar||Exkursion||Fest||Sonstige Veranstaltung'
    ),
    'startDate' => array(
        'caption' => 'Datum Beginn',
        'type' => 'date'
    ),
    'startTime' => array(
        'caption' => 'Uhrzeit Beginn',
        'type' => 'text'
    ),
    'endDate' => array(
        'caption' => 'Datum Ende',
        'type' => 'date'
    ),
    'endTime' => array(
        'caption' => 'Uhrzeit Ende',
        'type' => 'text'
    ),
    'ueberschriftVerantwortlicher' => array(
        'caption' => 'Überschrift Verantwortlicher',
        'type' => 'dropdown',
        'elements' => 'Leitung||Organisation||Referent||Ausbilder'
    ),
    'leitung' => array(
        'caption' => 'Name Verantwortlicher',
        'type' => 'text'
    ),
    'veranstalter' => array(
        'caption' => 'Veranstalter',
        'type' => 'text'
    ),
    'veranstalterURL' => array(
        'caption' => 'Veranstalter-URL',
        'type' => 'text'
    ),
    'strasse' => array(
        'caption' => 'Veranstaltungsort: Straße',
        'type' => 'text'
    ),
    'plz' => array(
        'caption' => 'Veranstaltungsort: PLZ',
        'type' => 'text'
    ),
    'ort' => array(
        'caption' => 'Veranstaltungsort: Ort',
        'type' => 'text'
    ),
    'anmeldung' => array(
        'caption' => 'Anmeldung erforderlich',
        'type' => 'dropdown',
        'elements' => 'Ja||Nein'
    ),
    'kosten' => array(
        'caption' => 'Kosten',
        'type' => 'text'
    ),
    'details' => array(
        'caption' => 'Details',
        'type' => 'textarea'
    ),
    'image' => array(
        'caption' => 'Bild',
        'type' => 'image'
    ),
    'thumb' => array(
        'caption' => 'Thumbnail',
        'type' => 'thumb',
        'thumbof' => 'image'
    ),
    'legend' => array(
        'caption' => 'Alternativtext (alt="")',
        'type' => 'text'
    ),
    'title' => array(
        'caption' => 'Bildtitel (title="")',
        'type' => 'text'
    ),
    'author' => array(
        'caption' => 'Bildautor',
        'type' => 'text'
    )
);
$settings['templates'] = array(
    'outerTpl' => '[+wrapper+]',
    'rowTpl' => '
        <article itemscope itemtype="http://schema.org/Event" id="[+startDate+]T[+startTime+]">
    <table>
      <tr>
        <td><time datetime="[+startDate+][[If? &is=`[+startTime+]:notempty` &then=`T[+startTime+]`]]">[+startDate+]</time></td>
        <td>
          <h2 itemprop="name">[+veranstaltungstitel+]</h2>
        </td>
      </tr>
      <tr>
        <th>Veranstalter:</th>
        <td>[[If? &is=`[+veranstalterURL+]:notempty` &then=`<a href="[+veranstalterURL+]">`]][+veranstalter+][[If? &is=`[+veranstalterURL+]:notempty` &then=`</a>`]]</td>
      </tr>
      <tr>
        <th>Ort:</th>
        <td>[+plz+][+ort+]</td>
      </tr>
      <tr>
        <th>Weitere Infos:</th>
        <td><a href="[+veranstaltungsURL+]">[+veranstaltungstitel+] – Details</a></td>
      </tr>
    </table>'
);
leonie12 commented 5 years ago

With my last assumption I was on the right path and got it sorted:

The reason was not phx or If snippet. It was based on the fact that the placeholder are filled via MultiTV input mask on each detail page (&then=). They are given out also on the overview pages `&is=[id]:in:49,61`. These both pages have an empty MultiTV input mask. At least they seemed obviously to be empty. Actually there seems to have been some invisible input. After deleting the MultiTv field via the +/- buttons everything worked as expected. Even with my initial config. In fact it works better with phx. Replacing them like suggested brought in this case some minor problems that are gone by using how it was.

Many thanks to those who helped.