Пекка прав, но я не решаюсь засорять обсуждение ответа другим (длинным) объяснением.
Области являются динамическими в зависимости от имени. Таким образом, «Сведения о свойстве 1» отличаются от «Сведения о свойстве 01».
Вы можете сделать что-то вроде:
for ($i = 1; $i <= 10; $i++) {
$a = new Area('Property Details ' + $i);
$a->display();
}
И вы получите 10 последовательно названных областей «Сведения о собственности x» от 1 до 10.
Допустим, вы добавляете к ним блок контента. Пока они остаются с теми же именами, блоки будут работать как положено. Вы даже можете изменить первую строку на:
for ($i = 10; $i >= 1; $i--) {
В этом случае вы получите области, названные последовательно вниз (10, 9, 8...), а C5 сохранит блоки контента в их исходных областях — так что все они будут в обратном порядке.
Но допустим, вы делаете:
for ($i = 11; $i <= 20; $i++) {
Теперь у вас есть 10 областей (11, 12, 13...), и все они пусты. Блоки контента практически исчезли. Вы можете создавать новые блоки контента, если хотите. Но затем вернитесь к исходному циклу (1, 2, 3...). Ваши исходные блоки контента вернулись, как и раньше.
Это очень длинное объяснение просто показывает, что C5 создает блок на основе имени, и это имя становится ключом. Это может быть что угодно. Вы можете основывать его на имени страницы или динамически генерировать его или что-то еще. Вы просто не можете изменить его после того, как он был создан (если вы не хотите «потерять» блоки).
Но... тут я снова соглашусь с Пеккой... наверное, ты не хочешь этого делать. Не зная своей цели, вы создаете (или продлеваете) очень хрупкое решение, которое трудно поддерживать. Пекка предлагает создавать подстраницы для каждого свойства, после чего вы можете использовать блок списка страниц, чтобы «вытащить» соответствующие атрибуты. Или, если вы не хотите создавать отдельные страницы, используйте блок Jordan Designer Content — http://www.concrete5.org/marketplace/addons/designer-content/. Имейте одну область («Сведения о собственности») и добавляйте блок для каждой собственности. Гораздо проще удалить, изменить порядок и т. д.
Редактировать, чтобы ответить на первые два вопроса Sphere: добавлять блоки в области очень просто. Пока у областей нет повторяющихся имен, вы щелкаете по ним так же, как пытались ранее, и добавляете блок. Я не уверен, какой тип блока нужен вашему конкретному сайту — это зависит от вашего сайта. Это может быть просто блок Content или, может быть, блок Pagelist с определенным шаблоном, где предыдущий разработчик настроил его так, чтобы он «перечислял» одну страницу для каждого экземпляра блока за каждый экземпляр. область (что было бы ДЕЙСТВИТЕЛЬНО странно, но кто знает...). Или, может быть, это тип блока, созданный из блока Designer Content, о котором я упоминал ранее. Покопавшись в существующих блоках, вы должны получить представление. Кроме того, я обнаружил, что иногда они выписывают какой-то идентификационный идентификатор в HTML. Итак, источник что-то вроде .
Что касается вашего примера кода: да, $cont — это страница. Код, который мы с Пеккой предоставили ($a->display()), в основном делает:
- Инициализируйте область под названием «Сведения о свойствах» (или 1, или 2, или что-то еще). Это ключ, как обсуждалось.
- Отобразите его, по умолчанию отображая его «для» текущей страницы. Это отличается от "на" текущей странице. Он всегда будет отображаться на текущей странице... то, что вы передаете в качестве аргумента ->display(), больше похоже на "страницу, из которой должна быть извлечена область". Итак, если бы вы могли теоретически передать $thePageObjectForPropertyOnMainStreet, он отобразил бы область «Сведения о собственности» на этой странице. Использование $cont необязательно. Как он его создает (он уже существует). Но... теперь, когда я об этом думаю, возможно, именно это он и пытался сделать. $cont мог быть ссылкой на отдельные страницы свойств. Эти страницы могут иметь область под названием "Сведения о собственности", и этот его цикл служит для "вытягивания области" из этих страниц. Но $cont выглядел бы иначе. Вы можете жестко закодировать это, выполнив что-то вроде $cont = Page::getByID(x);, где x — это cID для страницы свойств, которая имеет область под названием «Сведения о свойствах». Вы можете получить cID в URL-адресе после того, как отредактируете и сохраните его.
person
James S
schedule
07.03.2013