Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 17.01.2008, 15:06   #1
Pash
Новенький
 
Регистрация: 17.01.2008
Сообщений: 3
По умолчанию Дополнительные поля для текстовых страниц

Добрый день!

Вопрос такой. Сделал сайт для тур фирмы, они вводят информацию о турах в виде обычных текстовых страниц. Теперь хотят ввести поиск по турам, по следующим критериям:
  • направление
  • цена (от - до)
  • примерная дата (от - до)
Ну, и вопрос: как это реализовать?
У меня в голове есть два потенциальных решения:
  1. Используя экстеншн для бекенда, добавить новые поля к страницам, чтобы для туров можно было вводить значения этих критериев
  2. Как-то конвертировать существующую систему ввода туров либо на tt_products либо еще на подобный механизм, который имеет встроенные средства поиска
Пока также непонятно, что делать во фронт-енде, как присобачить форму поиска.

Есть еще вариант - сделать обычный индексированный поиск и не париться, вот только в таком варианте - как сделать, чтобы не выбирались "левые" страницы вроде "о нас", а именно только туры?

Подскажите, пожалуйста, возможные варианты решения. Или, проще говоря, куда копать? Неделю ползаю по описаниям экстеншнсов, ничего путного не нашел.
Pash вне форума   Ответить с цитированием
Старый 25.01.2008, 20:45   #2
Grank
Продвинутый
 
Регистрация: 10.10.2005
Сообщений: 92
По умолчанию

На мой взгляд индексированный поиск тебе не помежет - это поиск по тексту, а тебе надо по определенным критериям.
Если ты не хочешь писать все с нуля, то думаю тебе надо копать в сторону екстеншенов типа tt_products......
Grank вне форума   Ответить с цитированием
Старый 26.01.2008, 01:04   #3
Pash
Новенький
 
Регистрация: 17.01.2008
Сообщений: 3
По умолчанию

Спасибо, Grank.

Да, действительно, индексированный поиск использовать не удалось.
Зато помогло расширение pageflexform, которое позволяет для страницы добавить дополнительные поля (в моем случае это были поля "is_tour", "дата с", "дата по", "цена", "страна"), и задавать значения этих полей для определенного типа записей. Хранится это все в дополнительном поле таблицы pages, а из фронтенда поиск был чисто кастомным кодом (страница с содержанием типа "PHP script").

Получилось коряво и медленно, но это работает. К сожалению, функция-то довольно востребованная и популярная, а цивилизованных методов найти не удалось. Посмотрим еще, как поведет себя данное решение в жизни...

Спасибо за отклик!
Pash вне форума   Ответить с цитированием
Старый 15.11.2008, 17:02   #4
stoun
Продвинутый
 
Регистрация: 01.10.2004
Сообщений: 48
По умолчанию

@Pash

Мне пришлось столкнуться с точно такой же проблемой - нужно дабавить несолько дополнительных полей к странице.

Ты мог бы рассказать, как ты добавил несколько полей? По умолчанию pageflexform добавляет только одно поле, я не пойму, как добавить несколько и как потом вывести в FE их содержимое.

И может быть ты знаешь, как заставить это поле понимать HTML?
Мне нужно, чтобы в тексте можно было ввести <br />.
Сейчас в FE это выводится как <br />, перенос строки не происходит

А также, можно ли использовать другой тип для этого поля, например textarea.

Заранее спасибо за подсказку!
stoun вне форума   Ответить с цитированием
Старый 16.11.2008, 03:08   #5
Pash
Новенький
 
Регистрация: 17.01.2008
Сообщений: 3
По умолчанию

@stoun

pageflexform настраивается в файле \typo3conf\ext\pageflexform\flexform_ds.xml

Например, у меня в этом файле такие записи:

Код:
<T3DataStructure>
	<meta>
	</meta>
	<sheets>
	<sDEF>
	<ROOT>
		<TCEforms>
			<sheetTitle>LLL:EXT:pageflexform/locallang_tca.php:pageflexform.default.title</sheetTitle>
		</TCEforms>
		<type>array</type>
		<el>
			<tourInput>
				<TCEforms>
				<label>LLL:EXT:pageflexform/locallang_tca.php:pageflexform.tour.input</label>
				<config>
					<type>input</type>
					<size>20</size>
				</config>
				</TCEforms>
			</tourInput>
			<countryInput>
				<TCEforms>
				<label>LLL:EXT:pageflexform/locallang_tca.php:pageflexform.country.input</label>
				<config>
					<type>input</type>
					<size>20</size>
				</config>
				</TCEforms>
			</countryInput>
			<date_fromInput>
				<TCEforms>
				<label>LLL:EXT:pageflexform/locallang_tca.php:pageflexform.date_from.input</label>
				<config>

					<type>input</type>
					<size>20</size>
				</config>
				</TCEforms>
			</date_fromInput>
			<date_toInput>
				<TCEforms>
				<label>LLL:EXT:pageflexform/locallang_tca.php:pageflexform.date_to.input</label>
				<config>
					<type>input</type>
					<size>20</size>
				</config>
				</TCEforms>
			</date_toInput>
			<priceInput>
				<TCEforms>
				<label>LLL:EXT:pageflexform/locallang_tca.php:pageflexform.price.input</label>
				<config>
					<type>input</type>
					<size>20</size>
				</config>
				</TCEforms>
			</priceInput>
		</el>
	</ROOT>
	</sDEF>
</sheets>
</T3DataStructure>
Для отображения в публичной части, насколько я понимаю, нужно либо писать кастомный PHP-код, который занимается извлечением значений из базы, либо использовать средства самого pageflexform для отображения. Как и что конкретно - сложно порекомендовать, нужно смотреть код и знать задачу.

Другой тип поля, полагаю, использовать можно. Для этого нужно изменить экстеншн, заменив поле в темплейте. Где, что и как конкретно -- нужно смотреть, сходу не отвечу.

По поводу <br /> в коде -- можно не делать htmlspecialchars, однако это не всегда безопасно, да и, думаю, хлопотно это будет. Проще либо какой-то признак конца строки сделать (типа сочетакние "%%%" означает перенос на новую строку), либо использовать textarea.

Так что все возможно, все реально. Успехов! Привет!
Pash вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Один элемент контента для нескольких страниц MVH Общие вопросы 3 16.02.2010 17:56
Изменить значение поля в админке для fe_users Tod TypoScript практикум 0 22.06.2007 02:43
Разные файлы стилей css для разных страниц в TS filippoff Общие вопросы 1 25.12.2006 14:39
разный контент для разных типов страниц eater Общие вопросы 14 16.12.2006 15:30
tt_news, дополнительные поля ursula1000 Общие вопросы 3 09.03.2006 18:19


Часовой пояс GMT +4, время: 20:02.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория