We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 48771
    • 5 Posts
    Есть сниппет "a", в нем в echo нужно передать
    [!selected? &param=`ditto_tags` &znach=``!]
    так, что бы при вызове
    [!a!]
    в шаблон он так и передал этот текст
    [!selected? &param=`ditto_tags` &znach=``!]
    , а выполнение его уже было в самом шаблоне при вызове сниппета
    [!a!]
    , Очень нужна ваша помощь.

    Если быть точнее
    Есть сниппет "selected"
    <?php
    if ($_REQUEST[$param]==$znach) {
    echo "selected"; 
    }
    ?>

    Сниппет "brend_tv"
    <?php
    $brands = $modx->db->query('SELECT tv.elements FROM modx_site_tmplvars as tv WHERE tv.id = 10');
    $brands = $modx->db->makeArray($brands);
     
    $brand = explode('||',$brands[0]['elements']);
    foreach ($brand as $name) {
        $name = explode('==',$name);
    	echo '<option value="'.$name[1].'">'.$name[0].'</option>';
    }
    ?>

    И шаблон:
    <form action="[~[*id*]~]">
    	<select name="ditto_tags" onchange="this.form.submit();">
    		<option disabled [!selected? &param=`ditto_tags` &znach=``!]>Производитель...</option>
    		[!brend_tv!]
    		<option value="*" [!selected? &param=`ditto_tags` &znach=`*`!]>Все</option>
    	</select>
    </form>

    Сниппет должен отдавать через echo
    <option value="параметр" [!selected? &param=`ditto_tags` &znach=`параметр`!]>Все</option>
      • 48771
      • 5 Posts
      Решил немного иным способом:
      <?php
      $brands = $modx->db->query('SELECT tv.elements FROM modx_site_tmplvars as tv WHERE tv.id = 10');
      $brands = $modx->db->makeArray($brands);
      $brand = explode('||',$brands[0]['elements']);
      $output = '';
      foreach ($brand as $name) {
          $name = explode('==',$name);
      	if ($_GET["ditto_tags"] == $name[1]) {
      		$output .= '<option value="'.$name[1].'" selected>'.$name[0].'</option>';
      	} else {
      		$output .= '<option value="'.$name[1].'">'.$name[0].'</option>';
      	}
      }
      return $output;
      ?>