Ошибка при вызове сниппета

Добрый день. Подскажите в чем проблема. Создал сниппет Clubinstagram*_id который должен возвращать из передаваемой ему переменной подстроку (например instagram*.com/12345/ должен вернуть 12345)


Код сниппета:
<?php
$keyins = $keyins ? $keyins : '0';
$substins = '';
$slashstr = '';
$output = '';

if($keyins) {
	$substins = substr ([$keyins], 22, strlen([$keyins]-22));
	$slashstr = substr ($substins, strlen([$keyins]-2), strlen([$keyins]-1);
	if $slashstr == '/' { 
	$output = $slashstr;
	}
	    else {
	    $output = $substins;
	    }
}
return $output;
Код которым вызываю сниппет
[[!Clubinstagram*_id? &keyins = `[[!getKeyByContext? &context=`[[getcontextkey]]` &key=`social_in_group`]]`]]
Сниппеты getcontextkey и getKeyByContext 100% работают и данные выдают. При вызове Clubinstagram*_id вылетает 500 ошибка.
Василий
08 апреля 2015, 12:30
modx.pro
1
1 076
0

Комментарии: 8

Сергей Скат
08 апреля 2015, 17:04
0
если нужно просто id получить из строки, я думаю можно воспользоваться модификаторами phx из коробки
    Василий
    08 апреля 2015, 17:13
    0
    Посмотрел модификаторы phx. Из коробки ничего подходящего не нашел. Писать свой как я понял это аналог того что есть.
    Сергей Шлоков
    08 апреля 2015, 17:16
    0
    [[!ClubInstagram_id? &keyins = `[[!getKeyByContext? &context=`[[getcontextkey]]` &key=`social_in_group`]]`]]
    Проблемы с кавычками. Они ломают вызов. Попробуй заменить на ^.
    Плюс очень сложный запрос.
    [[getcontextkey]] — это сниппет или значение?
      Василий
      08 апреля 2015, 17:31
      0
      То что запрос сложный я понял и киваю аккурат в эту сторону…

      код [[getcontextkey]] ниже
      <?php
      return $modx->context->key;
      Поменял вызов на такой
      [[!ClubInstagram_id? &keyins = ^[[!getKeyByContext? &context=^[[getcontextkey]]^ &key=^social_in_group^]]^]]
      Результат тот же.
        Сергей Шлоков
        08 апреля 2015, 17:48
        0
        Во первых, я говорил про внутренние кавычки. Во вторых, в сниппете getcontextkey вообще нет никакой необходимости. Ты запрашиваешь текущий контекст, а его можно получить и в Getkeybycontext.
      Виталий Киреев
      08 апреля 2015, 17:55
      0
      В строке
      $slashstr = substr ($substins, strlen([$keyins]-2), strlen([$keyins]-1);
      не закрыта скобка.
      В
      if $slashstr == '/' {

      нет скобок совсем, а надо.
      Ну и непонятно, что такое
      [$keyins]
        Виталий Киреев
        08 апреля 2015, 17:59
        1
        +3
        Из
        $link="instagram.com/12345/"
        получить 12345 хватило бы
        $v=explode('/',$link); return isset($v[1]) ? $v[1] : '';
          Василий
          08 апреля 2015, 20:52
          0
          Спасибо. explode помогло. Премного благодарен.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8