We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 9673
    • 52 Posts
    Здравствуйте, задался написать маленький сниппет который выполнял бы логическую функцию и отображал хлебные крошки из сниппета Breadcrumbs как мне нужно.
    Расскажу как я хочу чтобы он работал. Допустим у меня такая структура сайта:

    + Животные
    - Хищники
    - Травоядные
    + Автомобили
    - Легоковые
    - Грузовые

    Также допустим что у меня предусмотрено в дизайне место для вывода хлебных крошек.
    На этом месте мне нужно вывести текущее расположение пользователя.
    Если он находится в категории (например Животные) на месте вывода хлебных крошек, выводится просто слово "Животные" (которое не является ссылкой)
    Если же он находится на вложенном ресурсе (статье) "Хищники", тогда будет отображаться Животные >> Хищники.
    Как сделать это с набором стандартных аргументов я не нашел. Решил сделать эти два вывода по отдельности:
    Для категорий
    [[Breadcrumbs? &showHomeCrumb=`0` &showCurrentCrumb=`1`]]

    Для вложенных ресурсов
    [[Breadcrumbs? &showCurrentCrumb=`0` &hideOn=`48,47,49,51,52,53`]]

    В голову пришло использовать функцию ctype_punct с помощью которой сниппет выводил тот вариант который мне нужен.
    <?php
    $a="[!Breadcrumbs? &showCurrentCrumb=`0` &hideOn=`48,47,49,51,52,53`!]";
    if(ctype_print("$a")) {
    echo "[!Breadcrumbs? &showCurrentCrumb=`0` &hideOn=`48,47,49,51,52,53`!]";
    } else {
    echo "[!Breadcrumbs? &showHomeCrumb=`0` &showCurrentCrumb=`1`!]";};
    ?>

    Но почему то скрипт работает только на половину. Выводит хлебные крошки только для вложенных ресурсов, в категориях ничего не выводится.
    Подскажите где я совершаю ошибку, почему не работает скрипт полностью?
      • 9673
      • 52 Posts
      Как я понял проблема в том что скрипт выполняется один раз и вставляется на всех страницах... Решить пока немогу, ничего не приходит в голову
        • 785
        • 2,113 Posts
        Тихий ужас! Для начала, вообще непонятна логика. С какой стати в результате работы сниппета Breadcrumbs должны быть получены непечатные символы? Но в целом дело даже не в этом. В самом начале переменной $a присваивается конкретное значение «[!Breadcrumbs? &showCurrentCrumb=`0` &hideOn=`48,47,49,51,52,53`!]». То есть не результат работы сниппета, а именно такая строка. Так как в ней нет непечатных символов, ВСЕГДА выполняется условие, и результатом работы сниппета является «[!Breadcrumbs? &showCurrentCrumb=`0` &hideOn=`48,47,49,51,52,53`!]». Если сниппет кэшировался, то в дальнейшем, при обработке некэшируемых сниппетов, эта строка будет обработана (вызван Breadcrumbs) и выдан результат.
        А вообще не совсем понятна задача, и уж точно не надо делать сниппет, в котором пытаться два раза вызывать Breadcrumbs (сделать это можно, но не так, как описано).
          Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
          Статьи о MODx, регулярно новые публикации
          • 26883
          • 137 Posts
          Как сделать это с набором стандартных аргументов я не нашел.
          Вообще-то всё это получается просто при вызове Breadcrumbs без аргументов, т.е. с параметрами по умолчанию.