Ошибка при вызове сниппета
Добрый день. Подскажите в чем проблема. Создал сниппет 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 ошибка.
*Meta, которой принадлежат facebook и instagram признана экстремистской в России
Комментарии: 8
если нужно просто id получить из строки, я думаю можно воспользоваться модификаторами phx из коробки
Посмотрел модификаторы phx. Из коробки ничего подходящего не нашел. Писать свой как я понял это аналог того что есть.
[[!ClubInstagram_id? &keyins = `[[!getKeyByContext? &context=`[[getcontextkey]]` &key=`social_in_group`]]`]]Проблемы с кавычками. Они ломают вызов. Попробуй заменить на ^.
Плюс очень сложный запрос.
[[getcontextkey]] — это сниппет или значение?
То что запрос сложный я понял и киваю аккурат в эту сторону…
код [[getcontextkey]] ниже
код [[getcontextkey]] ниже
<?php
return $modx->context->key;
Поменял вызов на такой [[!ClubInstagram_id? &keyins = ^[[!getKeyByContext? &context=^[[getcontextkey]]^ &key=^social_in_group^]]^]]
Результат тот же.
Во первых, я говорил про внутренние кавычки. Во вторых, в сниппете getcontextkey вообще нет никакой необходимости. Ты запрашиваешь текущий контекст, а его можно получить и в Getkeybycontext.
В строке
В
нет скобок совсем, а надо.
Ну и непонятно, что такое
$slashstr = substr ($substins, strlen([$keyins]-2), strlen([$keyins]-1);
не закрыта скобка.В
if $slashstr == '/' {
нет скобок совсем, а надо.
Ну и непонятно, что такое
[$keyins]
Из
$link="instagram.com/12345/"
получить 12345 хватило бы$v=explode('/',$link); return isset($v[1]) ? $v[1] : '';
Спасибо. explode помогло. Премного благодарен.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.