Помогите пожалуйста с проектированием логики сайта.
Дано: новостной сайт.
1. На детальной странице новости необходимо выводить блоки "Читайте также" https://s.mail.ru/5ovc/1EZRVfoC7 в произвольном месте детального текста и ссылкой на произвольную статью (элемент), количество блоков не ограничено.
2. Также в детальном тексте в произвольном месте по тексту может быть размещена фотогалерея (свойство инфоблока Файл множественное пока на уме), пример https://s.mail.ru/88W4/6Zf6C59Ho .
Ранее только реализовывал условие только когда фотогалерея выводится перед детальным текстом, соответ. по коду было просто, выводил свойство фотогалереи перед $arResult["DETAIL_TEXT"].
Где будет блок "Читайте также" или фотогалерея заранее просчитать нельзя, зависит от материала и контент-менеджер без знаний PHP.
3. Это полбеды, еще нужно продумать как вставлять блоки рекламных сетей.
Помогите пожалуйста с проектированием логики сайта.
Дано: новостной сайт.
1. На детальной странице новости необходимо выводить блоки "Читайте также" https://s.mail.ru/5ovc/1EZRVfoC7 в произвольном месте детального текста и ссылкой на произвольную статью (элемент), количество блоков не ограничено.
2. Также в детальном тексте в произвольном месте по тексту может быть размещена фотогалерея (свойство инфоблока Файл множественное пока на уме), пример https://s.mail.ru/88W4/6Zf6C59Ho .
Ранее только реализовывал условие только когда фотогалерея выводится перед детальным текстом, соответ. по коду было просто, выводил свойство фотогалереи перед $arResult["DETAIL_TEXT"].
Где будет блок "Читайте также" или фотогалерея заранее просчитать нельзя, зависит от материала и контент-менеджер без знаний PHP.
3. Это полбеды, еще нужно продумать как вставлять блоки рекламных сетей.
Помогите советами. Спасибо!
Обратитесь на фриланс, либо изучайте html,css,js,api bitrix что не проще.
arnly написал: Обратитесь на фриланс, либо изучайте html,css,js,api bitrix что не проще.
Так я же не код прошу написать у сообщества битриксоидов. Я прошу совета у более опытных, форум мне кажется и существует для таких ситуаций.
Если использовать js или api bitrix в любом случае получается нужно будет заставлять контент-менеджера вставлять в исходный код какую-то метку или сниппет или еще что не относится к самой новости. Т.е. контент-менеджер с легкостью может как минимум поломать верстку. И будет постоянно доставать разработчика. Или придется придерживаться совета arnly и обучать журналистов html,css,js,api bitrix. С точки зрения разработчика задача конечно решена, но для Заказчика не самый лучший вариант.
Все, что вы хотите - реализуемо без проблем, нужна верстка всего этого дела и нужен спец по битриксу.
1 и 2 - выводите в нужном месте шаблона деталки НОВОСТИ данные двух Инфоблоков (если нужно), либо если это будет в случае 2 Множественное свойство типа файл - выводите если там что-то есть.
Где будет блок "Читайте также" или фотогалерея заранее просчитать нельзя, зависит от материала и контент-менеджер без знаний PHP. - что значит нельзя? Выводить или нет будет решать человек, значит можно либо сделать свойство типа галочка (список) по наличию которого в деталке Новости будет выводиться галерея или что-то еще, либо выводиться будет по самому факту заполнености свойства (множественное типа Файл в случае фотогалереи).
Контент-менеджер должен максимум заполнить свойства создаваемого элемента, в код он лезть не должен ни при каком условии, это всегда заканчивается плохо.
Читайте также - ссылка на элемент этого же инфоблока? Тогда создавайте такое свойство, если там есть элемент - тащите его заголовок, фотку и ссылку на него.
Где будет блок "Читайте также" или фотогалерея заранее просчитать нельзя, зависит от материала и контент-менеджер без знаний PHP. - что значит нельзя?
Допустим по смыслу текста новости блок "Читайте также" может быть выведен сразу за первым абзацем новости или за шестым абзацем или за любым другим и в любом количестве, зависит от смысла новости, фотогалерея также.
Если даже сделать множественное свойство нужно будет заставлять контент-менеджера считать количество абзацев после которого вставить "Читайте также" или фотогалерею? Опять-таки, визуальный редактор может тег <p> и не вставить, а <br>-ками все сделать. Тогда скрипт "поломается". Хрупкое решение какое-то мне кажется.
Цитата
Читайте также - ссылка на элемент этого же инфоблока?
Да ссылка на элемент. Но может быть элементом другого инфоблока, но в одном типе все будет. Рубрики будут реализованы не разделами инфоблока, а отдельными инфоблоками, трудоемкость увеличивается знаю. В новом интерфейсе списка элементов при большом количестве элементов начинает тормозить список элементов. Здесь вопросов нет.
Допустим по смыслу текста новости блок "Читайте также" может быть выведен сразу за первым абзацем новости или за шестым абзацем или за любым другим и в любом количестве, зависит от смысла новости, фотогалерея также.
Если непременно нужен уникальный, рандомно генерируемый дизайн, с рандомно раскиданными элементами, позиции которых зависят от сиюсекундного настроения и погоды на Марсе - придется делать вручную, без шансов.
Если все же нужно создать определенный шаблон - придется загнать дизайн элементов в какие-то рамки, который можно шаблонизировать)
Например номер 1: Есть произвольный текст, в нем два включаемых блока - Ссылка на новость и Фотогалерея. Например, мы точно не знаем какой блок будет идти первым, какой вторым. Делаем свойство инфоблока ТЕКСТ ДО ПЕРВОГО ВКЛЮЧАЕМОГО БЛОКА, фигачим туда столько абзацев, сколько нужно. Делаем свойство ТИП ПЕРВОГО ВКЛЮЧАЕМОГО БЛОКА со значениями Нет значения (не включаем первый блок вообще в статью)//Ссылка на новость//Фотогалерея --- в зависимости от значения, выводим что указано после первого куска текста. Далее делаем свойство ТЕКСТ МЕЖДУ ВКЛЮЧАЕМЫМИ БЛОКАМИ - там второй блок текста. Еще свойство ТИП ВТОРОГО ВКЛЮЧАЕМОГО БЛОКА с теми же значениями Нет значения (не включаем второй блок вообще в статью)//Ссылка на новость//Фотогалерея --- в зависимости от значения, выводим что указано после второго куска текста. Далее свойство ТЕКСТ ПОСЛЕ ВТОРОГО ВКЛЮЧАЕМОГО БЛОКА и тут последние абзацы. Любой из Текстовых блоков или включаемых блоков может отсутствовать (быть пустым). В шаблоне соответственно раскидываете все это последовательно как свойства в админке. Если блоков больше - делаете больше.
Например номер 2: Весь текст новости идет в ДЕТАЛЬНЫЙ ТЕКСТ, там где нужно вывести ВКЛЮЧАЕМЫЕ БЛОКИ тот кто добавляет новость прямо в тексте пишет <ВКЛЮЧАЕМЫЙ БЛОК С НОВОСТЬЮ> или <ВКЛЮЧАЕМЫЙ БЛОК С ФОТОГАЛЕРЕЕЙ> и далее при выводе детального текста вы делаете логику так, чтобы она заменяла <> на нужный вам код вывода компонента/значения свойства. Если не углубляться, можно разбивать текст по этим вставкам <> и кусками вставлять в шаблоне, и для простоты еще создать свойства элемента, прямо указывающие какой включаемый блок идет первым, какой вторым, какой третьим (если их несколько).