Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Собственные title и h1 на странице компонентов

Страницы: 1  |  2  |  3
26.05.2009, 20:29
Niketas

Зарегистрирован:
2009-03-13
Сообщений: 8

Есть сайт с несколькими разделами, в разделах несколько страниц-компонентов (Базовая страница). Имею следующие проблемы:
• Название страницы-раздела одновременно является и её title, и h1.
• Название страницы-компонента одновременно является и её title, и текстом ссылки в меню.
• Страница-компонент имеет тот же h1, что и родительская страница-раздел.
Мне нужно иметь возможность указать в настройках каждой страницы свой title и h1 (это критично к продвижению страницы).
Я пытался сделать возможность указать это хотя бы для компонентов, для этого создал новый компонент, и в «Настройках отображения компонента» написал следующее:
Код:
$settings_array = array(
"CustomTitle" => array("type" => "string",
"default_value" => "",
"caption" => "Пользовательский title",
"validate_regexp" => "",
"validate_error" => "",
"size" => "50",
),
"CustomH1" => array("type" => "string",
"default_value" => "",
"caption" => "Пользовательский h1",
"validate_regexp" => "",
"validate_error" => "",
"size" => "50",
) );

После этого я получил возможность указать эти переменные, перейдя в разделе по ссылкам «Используемые компоненты» → «Нужная мне страница» → «Изменить настройки отображения компонента в разделе». Вопрос: как обратиться к этим переменным из макета страницы? Как их, собственно, вывести? В документации написано, что это делается через ".$cc_settings(Имя переменной).", но так они не выводятся нифига.

Второе, что я сделал — добавил этому компоненту дополнительные поля «Subtitle» и «MyTitle» для h1 и title соответственно. В документации написано, что эти поля выводятся как $f_Subtitle и $f_MyTitle, но, похоже, только в настройках компонента, и только в теле страницы (т. е. нельзя указать их, например, в теге title или h1).

Наверное, я весьма путано объясняю, но мне очень нужна ваша помощь, господа разработчики!
27.05.2009, 03:53
ktotoff
АльтерЛан

Зарегистрирован:
2006-12-19
Сообщений: 339

На самом деле, правильней было бы прочесть руководство разработчика. Там детально описаны макеты дизайна, откуда что берётся.
В вашем случае не надо ковыряться с компонентами. Нужно просто в системных таблицах "разделы" добавить одно (если нужно одинаковое значение тайтла и хидера) или два (если нужны разные значения) поля типа "строка".
В настройках раздела эти поля тотчас будут доступны. Пишете в них необходимое.
Затем названия этих полей нужно встроить в код макета дизайна. Т.е. заменить то что есть в тегах штатного макета на имена ваших полей. Всё.

...жизнь прекрасна, когда правильно подобраны антидепрессанты...
27.05.2009, 06:36
tengy
TengyStudio

Зарегистрирован:
2009-04-15
Сообщений: 37

ТС, я ничего не поняла, но не так давно передо мной встал вопрос "критичности к продвижению"
У меня есть на него ответ
Сделаете пошагово, как в моем посте написано, будет Вам счастье.
У меня тоже еще есть шансы на счастье, хотя переодически хочется все бросить и нанять кого-нибудь для доделывания сайта. Но в этом случае я неткат никогда не осилюнеуверенный
Сейчас или никогдастыдно

Всегда существует простое легкое для понимания неправильное решение (с)
27.05.2009, 18:43
Niketas

Зарегистрирован:
2009-03-13
Сообщений: 8

Так оно и понятно: на странице раздела я, кажется, понял, как вывести эти переменные.
А как вывести эти переменные на странице компонента, дочернего к этому разделу? У компонента же не будет этих полей.
27.05.2009, 21:59
Niketas

Зарегистрирован:
2009-03-13
Сообщений: 8

tengy, опять-таки, в Вашем случае вы хотите изменить title и h1 на странице раздела. Вы уже разобрались, как это сделать — создать поля в макете и заполнить их на странице настроек раздела.
А как сделать то же самое, но для страницы компонента (например, «Базовая страница»)? Там же макет наследуется, его никак не изменить.
28.05.2009, 06:31
pe3udent
Артур Юсупов

Зарегистрирован:
2008-04-03
Сообщений: 220

Niketas писал(а):
А как сделать то же самое, но для страницы компонента (например, «Базовая страница»)? Там же макет наследуется, его никак не изменить.


Если нужны "свои" альтернативные тайтлы в разделах и компонентах можно сделать так: добавить доп. строковое поле в системную таблицу Разделы (AltTitle например) и в компоненты (допустим AltTitle). Затем в макете дизайна прописать:

Код:
<title>".( $f_AltTitle ? $f_AltTitle : ( $current_sub[AltTitle] ? $current_sub[AltTitle] : $f_title ) )."</title>


Условия можно изменить под ваши требования.
Для остальных метатегов и заголовка H1 - по аналогии.
28.05.2009, 20:04
Гость
Гость

pe3udent писал(а):
Niketas писал(а):
А как сделать то же самое, но для страницы компонента (например, «Базовая страница»)? Там же макет наследуется, его никак не изменить.


Если нужны "свои" альтернативные тайтлы в разделах и компонентах можно сделать так: добавить доп. строковое поле в системную таблицу Разделы (AltTitle например) и в компоненты (допустим AltTitle). Затем в макете дизайна прописать:

Код:
<title>".( $f_AltTitle ? $f_AltTitle : ( $current_sub[AltTitle] ? $current_sub[AltTitle] : $f_title ) )."</title>


Условия можно изменить под ваши требования.
Для остальных метатегов и заголовка H1 - по аналогии.

Хорошая идея, но почему-то не выводится $f_AltTitle на странице компонента, хотя он заполнен.
Я ведь правильно делаю?
Разработка → Компоненты → Базовые → Базовые: Простая страница → Добавить поле → Название поля (латинскими буквами): AltTitle
Как я понял, $f_AltTitle (т. е. переменную, возвращающую значение этого поля) можно использовать только в настройках самого компонента (в Разработке вкладка «Редактирование компонента»). Как бы компонент — содержимое страницы между хедером и футером, и эти переменные работают только в нём самом, а снаружи, в макете страницы, они, похоже, ничего не значат. Разве не так?
28.05.2009, 20:08
Гость
Гость

Сорри за →, это стрелочка такая вправо.
28.05.2009, 20:38
pe3udent
Артур Юсупов

Зарегистрирован:
2008-04-03
Сообщений: 220

Niketas писал(а):
Как бы компонент — содержимое страницы между хедером и футером, и эти переменные работают только в нём самом, а снаружи, в макете страницы, они, похоже, ничего не значат. Разве не так?


Не так. Они доступны и в макетах тоже.
28.05.2009, 20:50
Гость
Гость

Подскажите, что я делаю не так из описанного, пожалуйста.
Переменная $f_AltTitle не выводит в макете содержимое поля компонента. =(
29.05.2009, 06:27
pe3udent
Артур Юсупов

Зарегистрирован:
2008-04-03
Сообщений: 220

По шагам.
1. В системные таблицы "Разделы" поле AltTitle добавили?
2. В компоненты поле AltTitle добавили?
2. В макете прописали именно так? -
Код:
<title>".( $f_AltTitle ? $f_AltTitle : ( $current_sub[AltTitle] ? $current_sub[AltTitle] : $f_title ) )."</title>

3. Макет дизайна точно используется разделом?
198 196 2011-01-26 14:07:45 9664
Страницы: 1  |  2  |  3
Описание проекта