Как вставить блок после первого сообщения темы?

Автор Roman, 16 ноября 2009, 17:11:33

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Roman

Понимаю, что делается это в display.template, но после каких конкретно строк, не нашел.

Так же, интересует, что именно прописать, чтобы блок вывелся только после первого сообщения, а не после каждого)

p.s. мод Ad Management не предлагать:)

BIOHAZARD


$bool
=true// этого не было
	
// Get all the messages...
	
while (
$message $context['get_message']())
	
{
if (
$bool) echo 'block'// и этого не было
$bool false// и этого тоже
...
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman

#2
Предложенная конструкция выводит блок не после первого сообщения, а над ним:)

Методом тыка нашел, куда вставлять вторую часть, чтобы выводилось именно после сообщения.

Нужно найти "границу" стыка таблиц:
            </table>
         </td></tr>
      </table>

и вставлять блок после нее, дополнительно врезав закрывающие кавычки, и дополнительное echo.

В любом случае, спасибо!

upd.
наиболее корректный вид получился при такой замене:

было:
</td>
</tr>
</table>
</td></tr>
</table>
</td></tr>';
}
echo '
</table>


стало:
</td>
</tr>
</table>
</td></tr>
</table>';

if ($bool) echo '
</td></tr>
<tr><td style="padding: 1px 1px 0pt;">
block
'; // и этого не было
$bool = false; // и этого тоже
echo '
</td></tr>';
}
echo '
</table>

Drakonsa

Цитата: Roman от 16 ноября 2009, 21:57:37
Предложенная конструкция выводит блок не после первого сообщения, а над ним:)

Методом тыка нашел, куда вставлять вторую часть, чтобы выводилось именно после сообщения.

Нужно найти "границу" стыка таблиц:
            </table>
         </td></tr>
      </table>

и вставлять блок после нее, дополнительно врезав закрывающие кавычки, и дополнительное echo.

В любом случае, спасибо!
Ну так переместите
if ($bool) echo 'block'; // и этого не было
в конец цикла

Roman

Вопрос как раз и был в том, где найти конец цикла))
Сейчас все работает. Как именно, описал в сообщении выше. Может еще кому пригодится.

BIOHAZARD

Цитата: Roman от 16 ноября 2009, 23:01:36
Вопрос как раз и был в том, где найти конец цикла))
Notepad ++ сильно облегчает задачу поиска закрывающей скобки
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman

Посмотрел я на все это дело в работе, и решил, что впиндюривать рекламу сразу после первого поста, все таки не очень гуманно к постоянным пользователям форума:) Там обычный яндекс.директ, но глаза все равно как-то режет. Все таки, считаю, удобство пользователей должно быть на первом месте, а потом уже все остальное.

Поэтому, решил усовершенствовать схему. Сделал так, чтобы блок после первого сообщения показывался только гостям форума. Залогиненые пользователи его, соответственно, не видят. Вобщем, всем хорошо:)

Реализуется это так:
Первый кусок $bool=true; туда, куда указал BIOHAZARD выше, а второй здесь:

было:
                  </td>
               </tr>
            </table>
         </td></tr>
      </table>
   </td></tr>';
   }
   echo '
</table>


стало:
</td>
</tr>
</table>
</td></tr>
</table>';
if ($context['user']['is_guest'])
   {
if ($bool) echo '
</td></tr>
<tr><td style="padding: 1px 1px 0pt;">
*****кодблокакодблокакодблока*****
'; // и этого не было
$bool = false;  // и этого тоже
}
echo '
</td></tr>';
}
echo '
</table>

TXT

Спасибо, BIOHAZARD и Roman, очень полезно! По +1
А как сделать, чтобы реклама не показывалась определенной группе? не прописывать же по очереди тем, кому она должна показываться..

Drakonsa


TXT

';
if (!in_array('group_id',$context['user']['VIP']))
   {
if ($bool) echo '
(БЛОК_РЕКЛАМЫ)
';
$bool = false;
}
echo '


Прописал так - вообще всем перестала видна реклама, даже гостям  ???
Я вообще-то не после первого поста прописываю блок, поэтому табличные теги убрал, они снаружи этого кода.

Drakonsa

Ну вообщето надо поменять group_id на ID группы которой не надо показывать... А не менять ключ массива.

TXT

Сделал:
';
$bool=true;
if (!in_array('17',$context['user']['groups']))
   {
if ($bool) echo '
РЕКЛАМА
';
$bool = false;
}
echo '


Все равно всем виден, и участникам группы, хоть и проставил правильный ид группы.
:-[

Roman

Странно, но у меня тоже не сработало. Хотя, вроде все правильно.

Еще попробовал через if (in_array(4, $user_info['groups']))
Тоже не получилось.

Drakonsa

В начале функции в globals допишите $user_info
И потом

if (!in_array('17',$user_info['groups']) && $bool
{
	
echo 
'РЕКЛАМА'
	
$bool false
}

TXT

#14
Drakonsa, не получается, реклама скрывается для всех.

Roman

Drakonsa спасибо!

У меня заработало вот таким образом:

в начале в global соответственно добавлено $user_info
а вызов блока такой:

if (in_array(4, $user_info['groups']))
   {
       echo 'Инфа для тех, кто входит в искомую группу (можно оставить пустым.
Либо использовать !in_array и без else и тогда здесь рекл. блок)';
   }
else
   {
       echo 'Инфа для всех остальных, т.е. РЕКЛАМА';
   }


Код приведен для случая, если он используется вне цикла. Если он вставляется в цикл, то нужно добавить $bool (как описано выше). Иначе будет выводиться с каждым сообщением.

TXT

Roman, к сожалению в index.template.php не получается и так.
Объявление показывается при таком раскладе всем, и выбранной группе.
Даже если во все global (а их три) добавишь $user_info ..

Roman

#17
TXT, я попробовал тоже самое в index.template - у меня все сработало. Блок добавлял указанный выше, а $user_info в глобалс я добавлял в эти:

function template_menu()
{
   global .........

function template_main_above()
{
   global .......


Блок вставлял в начале страницы. Полагаю, что именно от места вставки и зависит, в какой функции добавлять $user_info в global. Сначала можно добавить во все, а потом, методом исключения убрать не нужные.

TXT

Спасибо, Roman, спасибо, Drakonsa, все получилось!