Я прошу помощи. Я работаю в CMS 1С-Битрикс: управление сайтом (Редакция «Старт»). Мне требуется реализовать раскрывающийся иерархический список вакансий вида: Область – Город – наименование вакансии, открытой в этом городе, и её описание. Такая идея уже реализована на сайте http://www.u-dengi.ru/jobs/ скриншот: Здесь при нажатии на название области раскрывается список городов, при нажатии на название города раскрывается список вакансий, при нажатии на название вакансии появляется её описание. От меня требуется сделать так же. Кстати, тот сайт сделан, скорей всего, вообще не на битрикс).
Как реализовано добавление элементов этого иерархического списка мне неизвестно, поэтому я имею свои соображения на этот счёт. Заполнять раздел вакансиями будет контент-менеджер, поэтому для него должен быть реализован следующий функционал. Вначале он добавляет область (регион, например, Московская обл.). Затем для добавленной области добавляется список городов. Наконец, для каждого города добавляется терминальный элемент – вакансия, включающая в себя название и описание.
Удаление же вакансий будет реализовано следующим образом. Контент-менеджер может только деактивировать тот или иной элемент, при этом, если деактивируется родительский элемент, то подчинённые ему элементы, разумеется, не могут быть показаны.
Я знаю, что подобное реализуется с помощью инфоблоков. С ними я познакомился очень недавно, дня полтора назад, относительно сегодняшней даты.
У меня нет соображений по поводу того, как реализовать такую иерархию. Несмотря на очевидную подчинённость элементов, мне в голову пришла мысль: а что, если реализовать такой список не как «инфоблок (Область) – раздел (город) – элемент (вакансия с описанием), а создать три раздела для областей, городов и вакансий соответственно?». И ещё: годится ли компонент «новости и статьи» для реализации списка с такой иерархией или необходимо использовать другой? Пока что мне известно, что компонент «новости и статьи» хорошо пригождается для создания одноранговых списков, типа новостей или статей.
В общем, пожалуйста, расскажите мне как можно подробнее, каким образом реализовать такой список. Меня интересует именно работа с инфоблоками, с вёрсткой я постараюсь разобраться сам.
Вам нужно сделать дерево (область - город). Деревья в инфоблоках реализуются через разделы. Сами вакансии, имхо, следует хранить как элементы инфоблока.
Для показа самого дерева можно использовать штатный компонент bitrix:catalog.section.list, для показа списка вакансий -- bitrix:news.list. Плюс немного жабаскрипта с аяксом для того, чтобы дерево раскрывалось без перезагрузки страницы.
Цитата
Вадим Мoшев пишет: Что вы имеете в виду? Я же не виноват, что мне было это поручено.
Прошу прощения. Вчера я почему-то подумал, что вы делаете сайт вакансий, а не раздел корпоративного сайта.
1. Я правильно понимаю, что первое предложенной мной очевидное решение - правильное. То есть, я могу для этой цели создать отдельный тип инфоблока, в нём области будут инфоблоками, города - разделами, а сами вакансии - элементами? Хотя вот только что пришла мысль, что для областей создаются разделы, для городов - вложенные в области разделы, а вакансии - так и остаются элементами. Что посоветуете? {добавлено} вот, увидел вашу цитату
Цитата
Вам нужно сделать дерево (область - город). Деревья в инфоблоках реализуются через разделы. Сами вакансии, имхо, следует хранить как элементы инфоблока.
2.
Цитата
Плюс немного жабаскрипта с аяксом для того, чтобы дерево раскрывалось без перезагрузки страницы.
А одного JS (ну и CSS тоже) здесь будет недостаточно? Ведь можно просто сделать блок (div, например) невидимым, а при нажатии его показывать, при повторном нажатии - скрывать. Я просто Ajax не знаю
Дмитрий, у меня вопрос. Я создал инфоблок с соответствующим названием. Я поступил так, как вы советовали - в инфоблоке два раздела с названиями областей, каждый из которых содержит подразделы, соответствующие городам. В подразделах элементы-вакансии. Вопрос вот в чём. На изображении видно, что мой инфоблок, помимо разделов, содержит некие сущности с названием "вакансии", которые, скорей всего, являются ссылками на все элементы этого раздела. Дело в том, что ниже расположен инфоблок "города", в которых такие сущности отсутствуют. Это нормально и не приведёт к проблемам?
Кстати, инфоблок "города" я не могу использовать для достижения поставленной мной цели, так как сами города, расположенные в разделах с названиями областей - элементы, а не разделы.
_________________________________
И ещё по поводу второго пункта с Ajax... Поскольку в Битрикс я - новичок, альтернативный вариант, предложенный вами, показался мне страшным и непонятным. Вы всё же считаете, что первый вариант с использованием Ajax - проще?
Вадим Мoшев пишет: Это нормально и не приведёт к проблемам?
Это один из режимов показа разделов и элементов в админке битрикса. Поиграйте с крыжиком "Совместный просмотр разделов и элементов" в настройках модуля инфоблоков (Админка - Настройки - Настройки продукта - Настройки модулей - Информационные блоки)
Цитата
Вадим Мoшев пишет: И ещё по поводу второго пункта с Ajax... Поскольку в Битрикс я - новичок, альтернативный вариант, предложенный вами, показался мне страшным и непонятным. Вы всё же считаете, что первый вариант с использованием Ajax - проще?
Вадим Мoшев пишет: Это нормально и не приведёт к проблемам?
В принципе, если у вас уже есть готовое дерево городов и областей, в инфоблоке "Вакансии" можно использовать свойство типа "Привязка к разделам инфоблока", чтобы не дублировать сущности.
Дмитрий. Инфоблоки с нужной иерархией я уже создал (Области = разделы, города = подразделы, города = элементы).
Вывел содержимое инфоблоков.
В итоге сверху оказались названия разделов и подразделов, иерархически расположенные, ниже вывелся список вакансий, то есть, список всех элементов в моём инфоблоке.
Проблема сейчас заключается в том, что при нажатии на любую ссылку (наименование вакансии или название раздела), происходит переход на ЧИСТУЮ страницу, в адресной строке выведен такой адрес: <адрес сайта>/info/list.php?SECTION_ID=<ЧИСЛО> (если сделан клик по названию раздела) или <адрес сайта>/info/detail.php?ID=63 (если сделан клик на названии вакансии).
Быть может, проблема заключается в файле .htaccess, что в корневой папке сайта? Дело в том, что, когда я загружал БэкАп сайт на виртулаьную машину, система выдала сообщение о том, что оригинальный файл был переименован в .htaccess.restore, и вместо него создан файл по умолчанию. Я до сих пор его не заменил.
Скажите, пожалуйста, в чём проблема? Также, подскажите, пожалуйста, каким образом всё же можно организовать показ разделов и элементов при клике на их родительские сущности, то есть, то, о чём я говорил ранее?
И ещё вопрос: почему в режиме работы "над сайтом" со включенной правкой не отображаются пункты изменить/удалить раздел/элемент, отображаются только "добавить раздел/элемент"?