Просмотр полной версии : Дополнительные поля для текстовых страниц
Добрый день!
Вопрос такой. Сделал сайт для тур фирмы, они вводят информацию о турах в виде обычных текстовых страниц. Теперь хотят ввести поиск по турам, по следующим критериям:
направление
цена (от - до)
примерная дата (от - до)
Ну, и вопрос: как это реализовать?
У меня в голове есть два потенциальных решения:
Используя экстеншн для бекенда, добавить новые поля к страницам, чтобы для туров можно было вводить значения этих критериев
Как-то конвертировать существующую систему ввода туров либо на tt_products либо еще на подобный механизм, который имеет встроенные средства поиска
Пока также непонятно, что делать во фронт-енде, как присобачить форму поиска.
Есть еще вариант - сделать обычный индексированный поиск и не париться, вот только в таком варианте - как сделать, чтобы не выбирались "левые" страницы вроде "о нас", а именно только туры?
Подскажите, пожалуйста, возможные варианты решения. Или, проще говоря, куда копать? Неделю ползаю по описаниям экстеншнсов, ничего путного не нашел.
На мой взгляд индексированный поиск тебе не помежет - это поиск по тексту, а тебе надо по определенным критериям.
Если ты не хочешь писать все с нуля, то думаю тебе надо копать в сторону екстеншенов типа tt_products......
Спасибо, Grank.
Да, действительно, индексированный поиск использовать не удалось.
Зато помогло расширение pageflexform, которое позволяет для страницы добавить дополнительные поля (в моем случае это были поля "is_tour", "дата с", "дата по", "цена", "страна"), и задавать значения этих полей для определенного типа записей. Хранится это все в дополнительном поле таблицы pages, а из фронтенда поиск был чисто кастомным кодом (страница с содержанием типа "PHP script").
Получилось коряво и медленно, но это работает. К сожалению, функция-то довольно востребованная и популярная, а цивилизованных методов найти не удалось. Посмотрим еще, как поведет себя данное решение в жизни...
Спасибо за отклик!
@Pash
Мне пришлось столкнуться с точно такой же проблемой - нужно дабавить несолько дополнительных полей к странице.
Ты мог бы рассказать, как ты добавил несколько полей? По умолчанию pageflexform добавляет только одно поле, я не пойму, как добавить несколько и как потом вывести в FE их содержимое.
И может быть ты знаешь, как заставить это поле понимать HTML?
Мне нужно, чтобы в тексте можно было ввести <br />.
Сейчас в FE это выводится как <br />, перенос строки не происходит
А также, можно ли использовать другой тип для этого поля, например textarea.
Заранее спасибо за подсказку!
@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.
Так что все возможно, все реально. Успехов! Привет!
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot