modxmodx-revolutionmodx-templates

Modx php & Template variable


Is there a way to do something like that in a snippet : <?php if ([[+idx]]==1) echo "0";<?

Thank you.


Solution

  • If you need to get the value of a template variable, you can use this

    $id = $modx->resource->get('id');//ID of current resource
    $name = $modx->resource->get('pagetitle');//title of current resource
    $val = $modx->resource->getTVValue('name_of_tv');//get tv value of current resource by name
    $val = $modx->resource->getTVValue($tv_id);//get tv value of current resource by ID
    

    To get idx of migx tv you need something like this -

    <?php
    $docid = $modx->resource->get('id'); // id of curent resource
    $tvname = 'name_of_your_tv'; // change to yours
    $tv = $modx->getObject('modTemplateVar', array('name' => $tvname));
    $outputvalue = $tv->renderOutput($docid);
    $items = $modx->fromJSON($outputvalue);
    $idx = 0; // initialize idx
    $output = array();
    foreach ($items as $key => $item) {
        $idx++; // increase idx
        $output[] = print_r($item,1); // test output
    }
    $outputSeparator = "\n";
    $o = implode($outputSeparator, $output); // implode output
    return $o;
    

    Taken from migx snippet https://github.com/Bruno17/MIGX/blob/master/core/components/migx/elements/snippets/snippet.getImagelist.php