Во-первых, добро пожаловать в ColdFusion, это отличный язык, думаю, вам понравится.:)
То, что вы пытаетесь здесь, является действительно плохой идеей по ряду причин, читайте дальше, почему и некоторые альтернативы.
1) это напрасно скрывает это от вас, разработчика.Поверьте мне, вы научитесь ненавидеть это через 6 месяцев, когда вернетесь к каким-то произвольным изменениям и не сможете вспомнить, что означает «14».
2) это плохо для поисковых систем - URL-адреса Google SESдля получения дополнительной информации (поисковая система безопасна).
3) цифровые увеличивающиеся ключи менее защищены , чем описательные тексты.Я могу просто переключаться между цифрами и просматривать все ваши страницы, пропуская навигацию и просматривая все.
4) вы не получите ощутимых преимуществ, которые невозможно получить другими способами (о которых я вам покажу в следующем)).
Вместо того чтобы поступать так, как вы перечислили, произвольные числа, которые ссылаются на разные элементы, - почему бы вместо этого не ввести их вместо реальных строк, имеющих значения?Если то, что вы пытаетесь выполнить, - это скрытие фактических имен страниц, обрабатывающих запрос, то почему бы вместо этого не использовать что-то вроде этого:
http://www.domain.com/?/category/blog/page/links
вместо:
http://www.domain.com/page.cfm?category_id=21&page=5
В моемНапример, я не указываю на фактический каталог, я собираюсь взять параметр cgi.querystring (который будет содержать строку "/category/blog/page/links
") и проанализировать его и сопоставить со значениями ключа.(см. функции списка Coldfusion: http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions-pt0_13.html, используйте «/
» в качестве разделителя).Затем я могу использовать любую логику для категории «блог» и «ссылки на страницу», которая может храниться в базе данных точно так же, как «21» и «14».:)
Теперь перейдем к вашему коду ...
Что касается оператора switch, он просто работает как набор операторов if:
<cfswitch expression="value_to_check">
<cfcase value="possible_value_1">
<!--- do something --->
</cfcase>
<cfcase value="possible_value_2,another_possible_value">
<!--- do something different --->
</cfcase>
<cfdefaultcase>
<!--- if none of the above, do this --->
</cfdefaultcase>
</cfswitch>
У вас также есть некоторые странности в вашем включении.Вы не можете указать какие-либо параметры URL в операторе <cfinclude>
.Думайте об этом как о буквальном получении кода со страницы, которую вы указали, и вставке его в документ.Это именно так, не больше, не меньше.Поэтому вы не можете указать параметры URL.Это неверно:
<cfinclude template="../templates/page_bycategory.cfm?page_categoryid=#page_categoryid#">
Кроме того, это довольно ненормально для выражения case иметь динамическое значение, например:
<cfcase value="#page_categoryid#">
Дайте мне знать, если у вас есть какие-либо вопросы / потребностиуточнение