Пользовательский блок (макет?), Содержащий другие блоки в Concrete5 - PullRequest
0 голосов
/ 22 июля 2011

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

Недавно я получил проект по переводу http://www.windowfashionsonwheels.com на Concrete5. Быстрый взгляд на исходный код показывает, что это не что иное, как таблицы внутри таблиц ... Это довольно отвратительно. Я постоянно работал над восстановлением точного внешнего вида и структуры с использованием минимального HTML и CSS, но столкнулся с одним небольшим ударом.

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

В основном я могу эмулировать внешний вид этого блока, создав отдельный блок контента в Concrete5 и применив к нему собственный дизайн (цвет фона, закругленные углы CSS3 и границы изображения CSS3). Однако, поскольку он в значительной степени зависит от CSS3, он не отображается должным образом в старых браузерах или Internet Explorer, плюс он позволяет мне работать только с одним блоком контента (не идеально, если я хотел, чтобы текст и слайд-шоу или какой-то другой блок находились внутри тот же светло-серый квадрат)

Я мог бы легко добавить этот светло-серый квадрат к самой теме, однако он появляется не на всех страницах. Также кажется слишком большой работой по созданию двух разных типов страниц, один для страниц с этим серым квадратом, а другой для страниц без.

Я также мог бы создать собственный шаблон для блока Content, который генерирует эти <div> объекты, что позволяет мне размещать их в произвольных местах на любой странице, которую я хочу - однако это позволит только светло-серому окну содержать один блок контента. Это не позволило бы мне иметь, скажем, блок контента и блок слайд-шоу в одном блоке.

Я мог бы также добавить блок HTML, но я хотел бы предположить, что моя клиентка не знает HTML, и я хочу, чтобы она могла редактировать свою собственную страницу.

Идеальным решением было бы создать блок, который генерирует этот новый фон и границы (используя несколько <div> объектов для создания закругленных углов и так по старинке), а затем разрешить размещение блоков внутри этого блока, чтобы я мог иметь любой такое содержание, которое я хочу. Однако, насколько мне известно, Concrete5 не допускает блоки внутри блоков. Однако он допускает блоки внутри макетов, но, насколько мне известно, макеты предназначены для многостолбцовых страниц, а не для специализированных границ.

Если у кого-то есть опыт работы с Concrete5 и есть решение моей проблемы, пожалуйста, помогите.

1 Ответ

3 голосов
/ 23 июля 2011

Для вашей конкретной ситуации это действительно звучит так, как будто создание нового типа страницы является идеальным решением. Вы говорите «кажется, слишком много работы», но создание типа страницы является самым простым из всех вариантов ( способ проще, чем создание собственного блока в большинстве случаев, хотя подробности см. Ниже). Все, что вам нужно сделать, это скопировать ваш текущий файл шаблона, переименовать его, добавить новый HTML-код для этого серого прямоугольника и поместить этот код «Area» в новый HTML-блок серого цвета (там, где в данный момент находится содержимое):

<?php
$a = new Area('Grey Sidebar');
$a->display($c);
?>

Затем перейдите в Панель инструментов -> Страницы и темы, нажмите кнопку «Проверить» рядом с текущей темой, и вы увидите флажок рядом с этим новым типом страницы - нажмите кнопку «Установить» (или любую другую звонил, не помню, но видно когда увидишь).

Теперь, глядя на сайт, на который вы ссылаетесь также кажется, что содержимое внутри этого серого прямоугольника довольно «разработано» и соответствует единому формату (заголовок, эскиз, абзац). Если вы хотите, чтобы этот формат сохранялся, и в то же время для нетехнических пользователей было действительно легко редактировать контент, я создал дополнение генератора блоков для этой конкретной ситуации: http://concrete5.org/marketplace/addons/designer-content

Если бы я создавал этот сайт, я бы сочетал оба этих метода (тип страницы для окружающего серого прямоугольника HTML и пользовательский блок, созданный с помощью Designer Content для каждого внутреннего блока). Но, возможно, в вашей ситуации вы на самом деле не хотите, чтобы содержимое серого поля всегда выглядело одинаково (как это происходит сейчас на сайте, на который вы ссылаетесь) - в этом случае просто создайте тип страницы с серым полем и сделайте Лучше всего «изолировать» внутреннее содержимое от этого стиля, чтобы любые блоки, добавляемые пользователем, не могли случайно помешать окружению серого прямоугольника (в основном убедитесь, что вокруг кода «Area» есть большой

, и что вы устанавливаете явную ширину). или что вам нужно в окружающем HTML / CSS).
...