почему first_replace работает там, где не должен работать? :)

Тема в разделе "Макросы шаблона вывода", создана пользователем nikolas1612, 5 авг 2012.

  1. nikolas1612

    nikolas1612 Member Пользователи

    Регистрация:
    27 ноя 2011
    Сообщения:
    439
    прилагаемый проект скачивает новости с портала Ссылки недоступны для гостей и сортирует их вместе с картинками по папкам, в зависимости от категории новости. рубрикация производится в зависимости от самой ссылки..

    все работает отлично. но вот что непонятно:
    почему срабатывает такая конструкция в шаблоне вывода:

    IMAGESPATH_[FIRST_REPLACE(
    http://focus.ua/tech{skip}|Hаука и технологии
    http://focus.ua/health{skip}|Здоровье
    )]<CD_DOCURL!>[/FIRST_REPLACE]\images

    DOCSNAMES_[FIRST_REPLACE(
    http://focus.ua/tech{skip}|Hаука и технологии
    http://focus.ua/health{skip}|Здоровье
    )]<CD_DOCURL!>[/FIRST_REPLACE]\<CD_GRAN_4!>.htm

    ведь макрос first_replace должен срабатывать перед всеми другими, и, в частности, ДО макроса <CD_DOCURL!>. однако, он почему-то производит замену там, где не должен. получается, перечень очередности выполнения функций программы устарел и уже не соответствует действительности?
     

    Вложения:

  2. Valiks

    Valiks New Member Супер Модератор

    Регистрация:
    18 янв 2012
    Сообщения:
    554
    Адрес:
    Всё время в скэйпе
    Посмотрите вот тут - Ссылки недоступны для гостей, чтобы понять что и после чего запускается. Важно соблюдать сочетание макросов. Если используется один макрос, который срабатывает в программе раньше другого, значит поднего надо подстроить другой, который подаст ему вовремя нужные данные. Если данных нет, то как произойдёт замена? Проверьте все моменты.

    Всё правильно срабатывает, ведь ваши замены касаются ссылок, а они присутствуют в проекте изначально
     
  3. nikolas1612

    nikolas1612 Member Пользователи

    Регистрация:
    27 ноя 2011
    Сообщения:
    439
    вот выдержка из документа, на который вы мне дали ссылку -

    12,7.) Выполнение макроса шаблона вывода FIRST_REPLACE (функция поиск-замены для заданного участка текста документа);
    13.) Выполнение макросов шаблона вывода CD_DOCURL! (ссылка загружаемый web-документ) и CD_DOCPATH!;


    вот я и спрашиваю - почему происходит замена? ведь макрос CD_DOCURL! превращается в ссылку позднее чем срабатывает макрос FIRST_REPLACE
    именно так и должно происходить - данных для замены еще нет, поэтому и замена не должно быть .. но заменяет же!!! почему?
     
  4. Valiks

    Valiks New Member Супер Модератор

    Регистрация:
    18 янв 2012
    Сообщения:
    554
    Адрес:
    Всё время в скэйпе
    Макрос <CD_DOCURL!> не превращается в ссылку, он берёт ссылку из вашего списка (он у вас повтояется дважды, и в основном окне программы и в шаблоне). В вашем случае они все уже присутствуют, но есть случаи, когда макрос должен вычитать откуда-нибудь ссылку, вот тогда он будет срабатывать позже.
     

Поделиться этой страницей