В общем есть одна идея. У меня (думаю, как и у многих) в юзеринфо в темах форума выводятся дополнительные поля профиля. А в настройках форума, в разделе оптимизации, есть настройка: Allow custom profile field info be used in topic view (If set to "yes", this will add a LEFT JOIN onto the custom profile field table). Т. е. при просмотре тем выполняется довольно тяжелый запрос к БД, чтобы эти доп. поля показать. Я решил от него избавиться, при этом сохранив удобный просмотр этих доп. полей.
В IPB 3.2 появилась такая замечательная вещь как hovercard — всплывающее окошко с инфой о юзере, которое появляется при наведении на его ник. Оно использует AJAX, что и позволит нам избавиться от лишнего запроса на страницах тем. Короче ближе к делу. В шаблоне showCard (группа Profile) прописал следующее (скопировал из userInfoPane просто и маленько подправил):
<foreach loop="customFieldsOuter:$member['custom_fields'] as $group => $data">
<foreach loop="customFields:$member['custom_fields'][ $group ] as $field">
<if test="$field != ''">
<dt>{$group}</dt>
<dd>{$field}</dd>
</if>
</foreach>
</foreach>На выходе это должно выглядить так:
<dt>Название поля 1:</dt> <dd>Значение поля 2:</dd> <dt>Название поля 2:</dt> <dd>Значение поля 2:</dd> <dt>Название поля 3:</dt> <dd>Значение поля 3:</dd>
С помощью CSS dt идет налево, dd идет направо, получается списочек. По аналогии с остальными пунктами хаверкард.
Нужно помочь доработать foreach. Проблема в том, что $group выводит ключи групп дополнительных полей, а не названия самих доп. полей.
Кто сообразит?






Отправлено 03 Февраль 2012 - 18:39