Включаемая область для одной единственной страницы, как правильно?
Структура сайта такова: есть как огромное количество отдельных страниц расположенных просто в корне сайта, так и большое число разделов (папок со страницами).
Задача: повесить на все страницы сайта в шаблоне включаемую область, за исключением одной единственной страницы, расположенной в корне сайта.
В мой неокрепший мозг приходит единственный вариант использования двух одинаковых по содержанию включаемых областей , для всех страниц, расположенных в корне сайта (за исключением той для которой область показывать не нужно) задать эту включаемую область " для страницы " файлом " названиестраницы_inc .php ":
ЦитатаЕвгений Бескровный пишет:Задача: повесить на все страницы сайта в шаблоне включаемую область, за исключением одной единственной страницы, расположенной в корне сайта.Ясно, спасибо. У кого еще какие идеи? Может из самого битрикса кто-нибудь заглянет сюда
Плодить шаблоны из за одной включаемой, имхо извращение еще то
Ольга , а можно поконкретнее, как именно это можно осуществить, примерчик бы кодика
И почему Вы это считаете некрасивым костылем? Ведь как я понял других (менее затратных) способов,кроме того, который привел я ведь нет? И кстати, если во всем следовать идеологии построения шаблона битрикса, то мой вариант самый "правильный" ?
ЦитатаЕвгений Бескровный пишет:Задача: повесить на все страницы сайта в шаблоне включаемую область, за исключением одной единственной страницы, расположенной в корне сайта. ЦитатаЕвгений Бескровный пишет: И кстати, если во всем следовать идеологии построения шаблона битрикса, то мой вариант самый "правильный" ЦитатаЕвгений Жуков пишет: в приведенном Вами коде как раз нет определения, какую область показывать.Позвольте, позвольте, тезка, как же это нет определения какую показывать?) перечитайте мою монстроподобную идею еще разок, Вы кажется не все поняли, мой вариант вполне рабочий, если все файлы раскидать куда надо, и определить эти две включаемые области в шаблоне и выставить им соответствующие настройки. Просто файла ведь для той страницы на которой показывать не нужно не будет, а включаемая область для раздела не покажется, потому что файлы включаемой области для разделов будут в папках разделов, а в корне этого файла не будет
А за кодик спасибо, теперь буду знать
А про правильность, я просто хочу для себя выяснить, как же всетаки правильно осуществить такую возможность. Ведь должен же быть правильный способ (как бы это сделали сами разработчики битрикса) и много разных вариаций как его так и просто костылей.
ЦитатаПопов Кирилл пишет:<?php if(!CSite::InDir("/test/")):?> а тут включаемая область которая не покажется только в папке "/test/" <?endif;?> ЦитатаЕвгений Бескровный пишет:Позвольте, позвольте, тезка, как же это нет определения какую показывать?) перечитайте мою монстроподобную идею еще разок ЦитатаЕвгений Бескровный пишет:для всех страниц, расположенных в корне сайта (за исключением той для которой область показывать не нужно) ЦитатаЕвгений Бескровный пишет:"названиестраницы_inc.php" ЦитатаЕвгений Жуков пишет:Если так, уж простите, на язык просится цитата из известного анекдота - "поручик был большой забавник". Зачем Вы этакую свинью подкладываете девочке - контент-менеджеру? Для каждой новой страницы создай включаемую область, скопируй из уже имеющейся код, при удалении страницы не забудь удалить включаемую область? А если в корне будет хотя бы 2-3 десятка страниц? Это сколько лишней работы?Евгений, видимо Вы не до конца разобрались с работой включаемых областей в битриксе. Не печальтесь, я тоже многого не понимал причем очень долго
В данном случае совсем не нужно для каждой страницы создавать в коде шаблона включаемую область, как я и отметил в самом начальном своем посте. Достаточно определить в коде шаблона, вызов всего лишь двух включаемых областей, одну " для страницы ", вторую " для раздела ".Та которая " для страницы " будет отображать включаемые области заданные для каждой страницы по шаблону названиестраницы_inc .php (если они есть), т.е. в настройках этой первой включаемой области мы выбираем " для страницы " и ставим индекс inc , т.е. если для страницы test .php есть одноименный файл включаемой области test_inc .php , то включаемая область на странице test .php отобразится, а если такого файла не будет - то нет. Я что-то не пойму, откуда Вы взяли то, что в коде шаблона нужно указывать для каждой отдельной страницы вызов включаемой области? Бедной девочке контент-менеджеру не нужно будет ничего копировать и создавать, будет много гемороя у програмиста, просто копировать дополнительно файл включаемой области для каждой страницы в корне сайта.
Да и пример этот я привел, просто для того, чтобы понять, как делать ПРАВИЛЬНО с точки зрения разработчиков БУС а.
Все что я узнал (даже не из курсов, потому что в курсах я не нашел нормального объяснения работе с включаемыми областями), о работе с включаемыми областями и позволило мне описать этот способ.
Я просто хочу докопаться до истины. Как же всетаки правильно "по-битриксовски" что-ли поступить в таком случае.
О святой Антоний и вся кротость его!
ЦитатаЕвгений Бескровный пишет:Я что-то не пойму, откуда Вы взяли то, что в коде шаблона нужно указывать для каждой отдельной страницы вызов включаемой области? ЦитатаЕвгений Жуков пишет:Или Вы собрались для КАЖДОЙ страницы, лежащей в корне, создавать файлик ЦитатаЕвгений Бескровный пишет:Та которая "для страницы" будет отображать включаемые области заданные для каждой страницы по шаблону названиестраницы_inc.php(если они есть), т.е. в настройках этой первой включаемой области мы выбираем "для страницы" и ставим индекс inc, т.е. если для страницы test.php есть одноименный файл включаемой области test_inc.php, то включаемая область на странице test.php отобразится, а если такого файла не будет - то нет. ЦитатаЕвгений Бескровный пишет:се что я узнал (даже не из курсов, потому что в курсах я не нашел нормального объяснения работе с включаемыми областями), о работе с включаемыми областями и позволило мне описать этот способ.Извините, Евгений, значит я неправильно понял что вы имели ввиду под "Для каждой новой страницы создай включаемую область, скопируй из уже имеющейся код".
Мой способ говорит, о том, как бы понял это простой пользователь не программист (я не программист, а верстальщик, немного разные понятия). И я понимаю что трудозатраты очень велики.
Простоя пытаюсь понять, почему вообще разработчики битрикса так реализовали этот механизм включаемых областей, не продумав такой случай задания этой области с исключением в одну страницу или просто я что-то упустил
А в курсе по интеграции про работу с включаемыми областями сказано очень мало и согласитесь понять простому смертному тот бред сразу довольно сложновато Я не говорю уже про объяснение работы с шаблонами включаемых областей, кои у меня так и не заработали, наверное руки кривоваты
ЦитатаЕвгений Бескровный пишет:Задача: повесить на все страницы сайта в шаблоне включаемую область, за исключением одной единственной страницы, расположенной в корне сайта. ЦитатаЕвгений Жуков:Самый тупой (в лоб) вариант - два шаблона.Второй вариант: использовать один шаблон на все страницы, но так исхитрится с вёрсткой шаблона, чтобы сделать только одну включаемую область для той страницы, которая выбивается из общего ряда.
Третий вариант: использовать один шаблон на все страницы, но так исхитрится с CSS файлом и вёрсткой шаблона, чтобы отключить показ ненужного блока на той странице, которая выбивается из общего ряда.
ЦитатаАлексей Комаров пишет:вижу преимущества:насчет преимуществ, меня в использовании нескольких шаблонов смущает одна вещь, как идеологически правильно добиться универсальности на уровне шаблонов компонентов и CSS? Я имею ввиду чтобы на все шаблоны был как один CSS файл, так и одни и те же шаблоны компонентов.
Моя версия - одинаковые для всех шаблонов, шаблоны компонентов выкладывать в шаблон .default (сам не пробовал но говорят будут доступны для всех шаблонов), а CSS файл подключать откуда-то из общей папки обыкновенным тегом link.
Насчет CSS я не уверен, может быть есть способ как-то по-другому подключить один файл для всех шаблонов?
Понятно, спасибо Евгений.
Значит полюбому у шаблона сайта должны быть два CSS файла и их вызов никак не удалить, чтобы не грузились зря, если один общий использовать?
Кстати, в битриксе не реализован механизм подгрузки основных файлов если они были модифицированы. хотя для файлов шаблонов компонентов в конце файла прибавляется date stamp. Очень неудобно когда нужно что-то поправить на довольно посещаемом сайте. Приходится подгружать дополнительные файлы. Можно ли это как-нибудь автоматизировать? Я здесь темку поднимал. Тут товарищ в ядре поковырялся даже) http://dev.1c-bitrix.ru/community/forums/messages/forum6/topic21661/message118768 /?phrase_id=2503617#message118768
ЦитатаЕвгений Бескровный пишет:Значит полюбому у шаблона сайта должны быть два CSS файла и их вызов никак не удалить, чтобы не грузились зря, если один общий использовать?Думаю, что будет хорошо, если в этих файлах хоть что-то будет, пусть и минимум.
Например, в CSS файле, относящемся к шаблону, общая основная разметка страницы на блоки и их позиционирование, выравнивание этих блоков относительно друг друга, их ширина, отступы, цвет фона, картинки фона, т.е. то, что неизменно до момента полного редизайна сайта или раздела сайта и не относится к контенту. И шрифты по умолчанию для страниц (для абзацев, заголовков). Скажем, шаблон двухколоночной вёрстки страницы или шаблон трёхколоночной. Но, конкретных шрифтов и форматирования конкретных участков содержимого контента там не указывать, только общие по умолчанию.
А, во втором CSS файле, относящемся к шаблону, только минимум, самые крохи, общего для страниц форматирования контента, который может понадобится контент-редакторам сайта, чтобы им самим не нужно было лезть в файл CSS и писать там классы форматирования.
Тогда, эти два файла CSS шаблона удалять не потребуется и пользу принесут какую-то.
Спасибо, теперь все ясно.
А на счет замены css файлов, как Вы эту проблему решаете? Простой подгрузкой дополнительных файлов?
ЦитатаЕвгений Бескровный пишет:А на счет замены css файлов, как Вы эту проблему решаете? Простой подгрузкой дополнительных файлов?Подгрузку дополнительных файлов не использую.Если в шаблон нужно вставить компонент, то стараюсь окружить каждый компонент или несколько однотипных компонентов его (их) личным блоком с идентификатором. Это даёт возможность сослаться на идентификатор блока в основном файле CSS шаблона и задать основное форматирование содержимого блока и ссылку на url картинки фона (сама картинка может быть одна для нескольких шаблонов и лежать в отдельной общей директории на которую ссылаются CSS шаблонов, иметь абсолютную адресацию, если нужно избежать дублирование изображений). Форматирование такого блока определяет и форматирование вывода содержимого компонента (например, шрифтом родительского блока, особенно, если указать не фиксированный, а относительный для гибкости), т.к. компонент получается, что вложен. И, упрощается, на мой взгляд, применение каскада при каскадном форматировании содержимого блока или компонента, через те самые правила CSS.А, шаблон самого компонента стараюсь не трогать, т.е. использовать тот, что по умолчанию, он как бы остаётся в резерве, до него, поначалу, вообще может и дело не дойти, если стандартный более-менее устраивает в целом. Всегда можно, потом, когда-нибудь доработать, если что-то не так выглядит и будут нарекания.Так получается, что подгрузка происходит сама, через подгрузку CSS шаблона (содержит идентификаторы для блоков компонентов и их форматирование, насколько возможно через идентификаторы) и CSS компонентов (стандартные по максимуму).
И, если этот шаблон нужно использовать для других страниц (или доработать), но он немного не подходит, его можно скопировать, удалить и из шаблона и из CSS шаблона ненужные блоки по идентификаторам, а каркас останется как заготовка с нужными идентификаторами и их форматированием.