Изменить содержание в зависимости от сезона с ColdFusion - PullRequest
1 голос
/ 19 апреля 2010

Для ColdFusion я хотел бы использовать оператор cfswitch, чтобы иметь разные коды для каждого сезона года. Например, для отображения <p>Winter</p> для зимы и <p>Summer</p> для лета и т. Д. Каков наилучший подход для достижения этой цели?

Ответы [ 4 ]

0 голосов
/ 20 апреля 2010

Используя предоставленный код, я смог создать требуемый оператор cfswitch. Вот пример:

<cfswitch expression="#getSeason()#">
  <cfcase delimiters="," value="Winter">
    <p>Winter Edition</p>
    <p><img src="/images/winterPhoto.jpg" alt="Winter Image" /></p>
  </cfcase>
  <cfcase delimiters="," value="Spring">
    <p>Spring Edition</p>
    <p><img src="/images/springPhoto.jpg" alt="Spring Image" /></p>
  </cfcase>
  <cfcase delimiters="," value="Summer">
    <p>Summer Edition</p>
    <p><img src="/images/summerPhoto.jpg" alt="Summer Image" /></p>
  </cfcase>
  <cfcase delimiters="," value="Fall">
    <p>Fall Edition</p>
    <p><img src="/images/fallPhoto.jpg" alt="Fall Image" /></p>
  </cfcase>
  <cfdefaultcase>
    <p><img src="/images/neutralPhoto.jpg" alt="Neutral Image" /></p>
  </cfdefaultcase>
</cfswitch>

Это позволяет мне иметь любой код, который я хочу для каждого сезона года. Я не считаю нужной точную дату. Это много дополнительной работы и обслуживания только на несколько дней. Большое спасибо всем за помощь.

0 голосов
/ 19 апреля 2010

Технически, даты, когда сезоны официально начинаются и заканчиваются , меняются от года к году . Если вам нужно быть точным, вы можете использовать внешний файл свойств (для простого ежегодного обслуживания), который содержит диапазоны дат для каждого сезона. Если вам не нужно быть таким точным, вы можете просто жестко закодировать диапазоны дат, используя приблизительные даты, например, Лето начинается 6/21. Когда страница загружена или когда начинается сеанс, получите текущую дату с Now() и сравните ее с диапазонами дат, чтобы выяснить, какому сезону она соответствует.

0 голосов
/ 19 апреля 2010

Создайте компонент season.cfc с помощью метода getSeason (), который всегда возвращает текущий сезон.Вы можете написать геттеры и сеттеры для начала и конца сезона.Или создайте функцию, которая извлекает даты сезона из xml или строки профиля.

<cfscript>
    function getSeason(){
        var currentdatetime = DateFormat(now(), "MMDD");
        var season = "";
        // Spring
        var springbegin = "0321";
        var springend = "0620";
        // Sommer
        var summerbegin = "0621";
        var summerend = "0922";
        // Fall
        var fallbegin = "0923";
        var fallend = "1220";
        // Winter begin of year
        var winter1begin = "0101";
        var winter1end = "0320";
        // Winter end of year
        var winter2begin = "1221";
        var winter2end = "1231";
        if ((currentdatetime gte springbegin) and (currentdatetime lte springend)){
            season = "spring";
        } else if ((currentdatetime gte summerbegin) and (currentdatetime lte summerend)){
            season = "summer";
        } else if ((currentdatetime gte fallbegin) and (currentdatetime lte fallend)){
            season = "fall";
        } if ((currentdatetime gte winter1begin) and (currentdatetime lte winter1end)){
            season = "winter";
        } if ((currentdatetime gte winter2begin) and (currentdatetime lte winter2end)){
            season = "winter";
        } 
        return season;
    }
</cfscript>

<cfset currentseason = getSeason()>

Определение текста.

<cfset seasonText = structNew()>    
<cfset seasonText["winter"] = "Winter">
<cfset seasonText["spring"] = "Spring">
<cfset seasonText["summer"] = "Summer">
<cfset seasonText["fall"] = "Fall">

Это то, что у вас есть в вашем представлении

<p>#seasonText[currentseason]#</p>

Вы также можете использовать эту технику для отображения разных изображений в зависимости от сезона.

0 голосов
/ 19 апреля 2010

Просто определите, когда начнутся ваши сезоны, и проверьте это в своем приложении, когда оно начнется.

Я думаю, что иметь смысл в onSessionStart имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...