Вопросы про CCK и прочее

Главные вкладки

Аватар пользователя wiw wiw 28 августа 2007 в 19:50

Здраствуйте, есть несколько конкректных задач и я бы хотел попросить вас помочь с их решением.
Итак:

  1. С помощью модуля CCK и модуля для него - imagefield - сделал ноду, называемую "Биография" в которой между title и body есть поле "foto" в это поле добавляется фотография человека. Проблема в том, что изображение находится над текстом и текст её не обтекает. Решается это очень просто и мне можно было бы для всех img добавить float: left; Но так делать не хочется, желательно сделать отдельный стиль. Но стиль то надо где то прописать?! Поставил модуль contemplate и там моему содержимому соотвествует строка <div class="field-item"><?php print $field_foto[0]['view'] ?></div>
    Ну и куда добавить стиль?!
  2. Для cck есть модуль matrix - добавляет таблицу 10x10. И вот вопрос как увеличить максимальный размер этой таблицы?
  3. Для модуля Adsense необходимым условием является наличие в профиле пользователя текстового поля с определённым именем и содержащим Adsense ID. Каким образом можно сделать так, чтобы при регистрации нового пользователя это поле заполнялось автоматом (не заставлять же пользователя его вводить вручную)
  4. Имеется список всех Нобелевских премий по какому либо предмету, каким образом можно сделать сортировку по годам и как это осуществить в рамках одной ноды

Вот такой вот небольшой список, надеюсь получить ответ. Спасибо.

Комментарии

Аватар пользователя VLAD_X VLAD_X 28 августа 2007 в 20:53

1) Создаёте одну ноду вашего материала и смотрите в код страницы: будет неск. вложенных div'ов с классами типа "field field-type-text field-field-recipient-name field-items field-item". В этом примере "field-field-recipient-name" - класс моего поля "recipient-name"
Выбирайте, для какого класса вам удобнее применить ваши стили.
В такой ситуации хорошо помогает плагин firebug к Firefox'у: с ним легко увидеть иерархию классов

2) В худшем, крайнем случае - поковырявшись в коде модуля и создав diff раличий, чтобы можно было их восстановить при дальшейших обновлениях модуля.

3) Я понял инструкцию немного по-другому: надо создать у одного (любого или админа - точно не помню) пользователя скрытое поле в профиле, вписать туда AdsenseID и сказать об этом модулю в его настройках.

4) Это как так: сортировку СПИСКА в рамках ОДНОЙ ноды? Вы имеете в виду список из одной ноды и под ним пейджер для перехода к следующей ноде? Тогда проще всего views с нужными сортировками и одной нодой/страницу

Аватар пользователя theblackcat theblackcat 28 августа 2007 в 21:01

Поставил модуль contemplate и там моему содержимому соотвествует строка

<?php print $field_foto[0]['view'] ?>


Ну так в бой. .field-item img { float: left; }, можно поменять field-item на что-нить другое - вариантов много...
Ну и куда добавить стиль?!
Рекомендую в style.css вашей темы.

(не заставлять же пользователя его вводить вручную)
А откуда будет этот самый ID браться? В конце концов пользователь может скопировать свой ID. Smile

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

Аватар пользователя wiw wiw 29 августа 2007 в 8:52

1) to all хотелось бы применять класс css не к диву где лежит изображение, непосредственно к самому изображению. Для этого мне нужно прописать что то типа <img class="field-float-left" .... /> Поскольку, как я думаю, если применить класс к диву то полетит вёрстка шаблона...
firebug пользуюсь Smile

Вопрос отпал, видеоуроки на drupal.org помогли...
Хочу поделиться откровением, поразбирав более подробно модуль contemplate я обнаружил что там есть возможность добавить к шаблону оформления определённые элементы в php выводе, а это в свою очередь в сочетании с оформлением и собственными стилями даёт просто огромные возможностипо редактированию и персонализации. Короче я доволен как слон Smile
2) поковырявшись в коде модуля и создав diff раличий - а можно поподробней пояснить...
3)Если как пишет VLAD_X это поле нужно только для одного пользователя то вроде бы проблем нет.
Если же иначе, то я думал в пояснении к полю заставлять пользователя ввести нужное значение id. Интересно было бы посмотреть, как будет работать adsense если сделать не текстовое поле, а выбор из списка в котором лишь одно значение стоит - мой id.
4)Поясню что же я хотел получить: имеется список вот такого вида
годА надо выделить форматированием, текст премии будет работать ссылкой. Я думал так:
1) одна нода, в ней туча полей от cck, и ещё есть сортировка по этой ноде (похоже для меня это нереально...)
2) второй более реальный вариант - это на каждую премию/элемент списка по микроноде, а далее сортировка и вывод с помощью views, как предложил vlad.

И ещё, каким образом можно организовать переход на предыдущую или следующую статью, как здесь?
А также, как можно сделать так чтобы в конце ноды определённого типа показывались ссылки на ноды находящиеся, скажем, в одном словаре или имеющие общий термин?

Аватар пользователя VLAD_X VLAD_X 29 августа 2007 в 18:09

2) Берёте файл matrix.module (ну или как он у вас там называется), делаете копию типа matrix_OLD.module, правите основной matrix.module (скорее всего кол-во строк и столбцов задано переменной или константой в файле).

Затем, если у вас сайт на *nix-сервере, делаете diff -ubBw matrix_OLD.module matrix.module > matrix.diff и получаете файл, в котором содержатся все различия. Когда приходит обновление модуля от его разработчика, обновляетесь и делаете patch < matrix.diff. Либо просто смотрите в diff-файл и вручную снова правите модуль.

Если же у вас Windows-сервер, то можно сделать fc /n matrix_OLD.module matrix.module > matrix.diff, но этот diff-файл будет иметь другой формат и применить автоматически его нельзя будет, только вручную.

3) После установки АдСенса в его настройках всё пошагово расписано (но по-английски), следуйте всем просьбам модуля.
Но я сделал проще: взял Гугловский код с нужным видом, цветом и т.д. и просто воткнул его в блок (формат ввода PHP). Так оно гораздо быстрее работает. ведь никаких лишних обращений к серверу и БД. кроме выборки блока и показа его на экране не производится.

4) Список на то он и список, чтобы состоять из НЕСКОЛЬКИХ (МНОГИХ) элементов. Делайте тип данных через CCK, причём новые поля не обязательно придумывать: год получения премии можно представить как дату создания материала (это стандартное поле, оно есть всегда) и сортировать по ней, ну а тект премии = текст самой ноды. Если типов материалов на сайте мало, то можно использовать стандартный page или story.

5) На ДО сделано через books. Вот тут затрагивалась похожая тема.

Аватар пользователя wiw wiw 30 августа 2007 в 13:38

VLAD_X, прежде всего хочу сказать спасибо за хороший ответ.
2) Пока что тестирую на denwer - там смогу и локально сравнить, а так у меня nix хостинг. Спасибо за идею.
3)Мне нравится ваш метод, но ведь код google это JavaScript - неужели при формате вывода php - всё работает?
4)Будем подумать, как это получше сделать, за идею также спасибо.
5) Прочитал я всё обсуждение, крайне интересная полемика там развилась. Страшно даже стало использовать CCK.
А по теме: скачал два модуля, что там указывались, попробую их помучать.

Ещё один вопросик имеется: необходимо изменить один из стандартных блоков дрюпала ("сейчас на сайте"), конкретно - сделать другое форматирование. Хотелось бы узнать где в дрюпале записаны эти блоки, поскольку в page.tpl.php его кода нет конечно, а только вывод самого блока

Аватар пользователя VLAD_X VLAD_X 30 августа 2007 в 8:20

3) В формате вывода PHP как раз отключаются все дополнительные фильтры, кроме интепретатора PHP, поэтому получаем на выходе всё AS IS.
5) Не читайте сообщения Макса/Разгонки
6) Просто поменять оформление можно через стили. Каждый блок находится в контейнере (div'е) с определённым id, н-р, <div id="user-block-1"></div>. Соотв. все стили можно переделать.
Если надо глубокие изменения - ковыряйте /modules/user/user.module : 515 : function user_block()Другой вариант - для случая, когда надо поменять расположение элементов, - скопировать файл block.tpl.php в block-<id_нужного_блока>.tpl.php и сделать в нём всё, что требуется.

Аватар пользователя wiw wiw 30 августа 2007 в 13:54

Спасибо за ответы. Ноя хотел вот что уточнить. Мне надо поменять оформление внутри блока. А именно

<div id="block-user-3" class="clear-block block block-user">
  <div class="content">Сейчас на сайте <em>1 пользователь</em> и <em>0 гостей</em>.<div class="item-list"><h3>Пользователи на сайте</h3><ul><li><a href="/users/wiw" title="Информация о пользователе.">wiw</a></li></ul></div></div>

на вот такое:

<div id="block-user-3" class="clear-block block block-user">
  <div class="content">Сейчас на сайте: <em>0 гостей</em><br/><em>1 пользователь</em>.<div class="item-list"><h3>Пользователи на сайте</h3><ul><li><a href="/users/wiw" title="Информация о пользователе.">wiw</a></li></ul></div></div>
Аватар пользователя VLAD_X VLAD_X 30 августа 2007 в 21:10

Надо, как я понял, добавить двоеточие ппосле слова "сайте" и поменять естами гостей и пользоваетелей.
1) Найти в Переводах фразу "Who\'s online" (переведена как "Сейчас на сайте") и добавить двоеточие.
2) Найти в Переводах фразы "There is currently %members and %visitors online" и "There are currently %members and %visitors online."
(обе переведены как "Сейчас на сайте %members и %visitors.") и заменить на "Сейчас на сайте %visitors и %members."

Аватар пользователя jason32 jason32 31 августа 2007 в 20:33

4) не знаю, какая версия у вас модуля matrix - сегодня ради интереса скачал, прочитав эту тему - там прекрасно настраивается размерность таблички - обновляйтесь и пользуйтесь.