Решаю drupal задачи бесплатно. Задача №1 Анонсы

Views, Drupal / 30 сентября 2015
/ 207

Нарисовалась вдруг, интересная тема. Все мы, кто более менее освоил drupal, знаем, что эта CMS довольно-таки сложна в изучении и понимании, все там не так, как в других. Все это так, но мне это далось сравнительно легко и я неплохо это самое изучил. Я написал довольно много статей про друпал, их читают и даже хвалят а не не ругают. Правда, в последнее время мои читатели жалуются, что я практически перестал писать про друпал. Оно так, но скажу честно – я пишу про то, что знаю. Про то, что сделал сам. Я не хочу писать про новые модули или темы которые я не ставил и не знаю как они работают. Я мало делаю сайтов на заказ. Этому есть 2 причины. Первая – за свою работу я хочу много денег. Я вообще хочу много денег, но много работать не хочу, поэтому решил, что мне хватит денег немного, потому что сильнее я хочу мало работать чем много денег. Вторая – я катастрофически не умею продавать свои услуги, у меня маркетинговый кретинизм. Я делаю все, чтобы оттолкнуть от себя заказчика, само собой не специально. Это происходит на каком-то непонятном и невидимом мне уровне. У меня есть друг, которого я учил делать сайты. Пытался я его научить и друпалу, но не вышло. Он уже несколько лет, как ушел с работы и вполне успешно занимается этим бизнесом. Клиентов у него очередь. Я не понимаю как это происходит, но они готовы ждать. Так вот, иногда они хотят сайт на друпал. В таком случае, он расписывает мои достоинства, говорит, что я его учитель, дает им мой телефон, они звонят, 5 минут разговора и все. Дело не в цене. Некоторым я предлагал сделать сайт за копейки. Поэтому я плюнул, обиделся и теперь за свою работу требую много денег. Теперь мне не так обидно, когда они не перезванивают. Заказов мало и бог с ними, я живу не с этого. Соответственно, сложных и интересных задач мало и писать не о чем.

Но тут, в комментариях меня попросили решить небольшую задачку. Задача не сложная, решений может быть много, но довольно интересная. Я подумал, а почему бы и не написать статью, возможно это пригодится и другим. И потом, а почему и не заняться решением таких задач в свободное от работы, просмотра сериалов, рыбалки, сыроделия и прочих глупостей, время. Я напишу про друпал, читатель получит решение, блог получит статью. Все довольны.

Поэтому так и сделаем – если у вас возникают сложные задачи, которые вы не можете решить, пишите в комментариях к этой статье или к другой. Не обещаю на 100%, но если я с задачей справиться смогу, то я напишу как ее реализовать. Постараюсь все провернуть в кратчайшие сроки. Учтите, PHP я практически не знаю, поэтому за модулями к програмистам. Поехали.

Задача (цитирую Геннадия, но немного исправлю ошибки):

Посоветуйте пожалуйста как реализовать следующее:
У меня на главной странице выводятся анонсы Статей и Блогов; при клике на имя материала или на ссылку "Далее..." открывается страница с материалом. Я хотел бы, чтоб материал Статья так и открывался на новой стр., а материал Блог открывался тут же, на главной. По сути как описано в Вашем примере, только не кусок текста, а полный текст материала. И чтоб не нужно было корректировать текст тегами...

В дальнейшем общении с автором, я понял, что "корректировать текст тегами", это значит, постараться обойтись без модуля Collapse Text и тега [collapse]. Согласен, лишние теги не очень хочется внедрять в текст.
Решение я придумал следующее. Так, как сайт у Геннадия новый, статьи и блоги не загружены, то можно в одном из материалов поле body удалить а вместо него сделать такое-же, только с названием text. Это позволит на главной странице, которую мы сделаем при помощи модуля views, отображать поле body не так, как поле text, но внешне они ничем не будут отличаться. Начнем.

1. Удаляем в материале Статья поле body.

2. Создаем поле Текст (text). Настройки поля любые, такие как вам больше нравится.

3. Создаем пару статей, записей в блог и делаем представление admin/structure/views/add примерно так:

4. Нажимаем "Продолжить редактирование" и создаем поля.

5. Добавляем поля: Body и Текст с одинаковыми настройками: исключаем из вывода, простой текст, максимальная длина 150.

6. Автоматически созданное поле заголовок тоже изменяем: исключаем из вывода и не делаем его ссылкой.

7. Добавляем поля еще: Содержимое: Nid, Глобальный: PHP и еще раз  Содержимое: Body c такими настройками:

В поле PHP в Output code вставляем следующее:

<fieldset id="fieldset-id" class="collapsible colfieldfacet collapsed">
<legend><span class="fieldset-legend"><strong>
<h3><?php print  $data->node_title; ?></h3>
</span></strong></legend>
<div class="fieldset-wrapper colfieldfacetwrapper">
<?php print  $data->field_body[0]['raw']['value']; ?>
</div>
</fieldset>

и не забываем исключить его из видимости.

Второе поле body не исключаем из видимости, выводим как простой текст, хотя это не имеет значения, в "Поведение при отсутствии результатов" вставляем

<h3><a href="node/[nid]">[title]</a></h3>
[field_text]

В "Перезаписать результаты" вставляем

[php]
[body]

8. Теперь отсортируем наши поля – Изменить порядок: и оба поля body перетаскиваем в самый низ, второе ниже.

9. В Шапке

добавляем текстовое поле. Формат текста ставим PHP code, и вставляем это:

<?php
drupal_add_js('misc/form.js');
drupal_add_js('misc/collapse.js');
?>

Сохраняем.

10. Получилось примерно так:

Все остальное – чистый css.
Блоги раскрываются как и стояла задача, по клику на заголовке статьи она открывается на отдельной странице. Единственное, чтобы после раскрытия текста блога убрать анонс, придется повозиться со стилями css. Я специально убрал не до конца, чтобы было видно, что убрать можно так:

.view-glavnaya fieldset {
    border: none;
     z-index: 200;
}
.view-glavnaya .fieldset-wrapper {
     margin-bottom: -60px;
     background-color: #FFFFFF;
}

Кажись все, пробовайте. Если что, пишите в комментариях.

comments powered by HyperComments