И снова про вывод баннера

#1 17 февраля 2012 в 03:25
Вот тут прочитал и решил вставить в свой template.php код:
  1. <?php echo cmsGetBanner("banner1"); ?>
и сразу был послан инстантом:
  1. Fatal error: Call to undefined function cmsgetbanner() in pathway/template.php on line 88
line 88 как раз и есть вставленный выше код.
#2 17 февраля 2012 в 03:35
там же написано — новую функцию:
  1.  
  2. <?php cmsgetBannerTPL('banner1'); ?>
  3.  
#3 17 февраля 2012 в 03:46
В том то и дело, что в файле cms.php нету такой функции
#4 17 февраля 2012 в 03:50
ну а в теме на которую вы ссылаетесь она добавлена в cms.php именно для вывода через template.php
#5 18 февраля 2012 в 00:08
Как раз в этой теме говорится что код там уже присутствует:

смотри строку 3048 файла cms.php там вот такая функция

#6 18 февраля 2012 в 01:33

достаточно сделать вот так (я добавил дополнительно процедуру для работы напрямую в шаблонах)…

  1.  
  2. function cmsGetBannerTPL($position){
  3. $inCore = cmsCore::getInstance();
  4. echo $inCore->getBanner($position);
  5. }
  6.  
после чего данную функцию можно будет использовать и TPL и в template.php
  1.  
  2. <?php cmsgetBannerTPL('banner1'); ?>
  3.  
Ну вот и все тему в принципе можно закрывать.


т.е. старая функция вам и не нужна, достаточно добавить новую и будет работать т.к. функция getBanner в ядре есть до сих пор…
еще раз напишу без цитаты:
вставляем вот эту функцию ближе к концу файла cms.php там есть старые функции которые тоже начинаются с cms...
  1.  
  2. function cmsGetBannerTPL($position){
  3. $inCore = cmsCore::getInstance();
  4. echo $inCore->getBanner($position);
  5. }
  6.  
после чего в шаблоне вызываем её
  1.  
  2. <?php cmsgetBannerTPL('banner1'); ?>
  3.  
если осталось что-то непонятным — спрашивайте…
#7 18 февраля 2012 в 01:58
Действительно сработало. Спасибо. Только вот мне не понятно назначени функции:
  1. function getBanner($position)
#8 18 февраля 2012 в 02:06
она как раз и вставляет весь код баннера в указанную позицию…

  1.  
  2. public function getBanner($position){
  3.  
  4. if (!$this->isComponentInstalled('banners')) { return false; }
  5.  
  6. $inDB = cmsDatabase::getInstance();
  7. $html = '';
  8.  
  9. $sql = "SELECT *
  10. FROM cms_banners
  11. WHERE position = '$position' AND published = 1 AND ((maxhits > hits) OR (maxhits = 0))
  12. ORDER BY RAND() ASC
  13. LIMIT 1";
  14. $rs = $inDB->query($sql);
  15.  
  16. if ($inDB->num_rows($rs)==1){
  17. $banner = $inDB->fetch_assoc($rs);
  18. if ($banner['typeimg']=='image'){
  19. $html = '<a href="/gobanner'.$banner['id'].'" title="'.$banner['title'].'" target="_blank"><img src="/images/banners/'.$banner['fileurl'].'" border="0" alt="'.$banner['title'].'"/></a>';
  20. }
  21. if ($banner['typeimg']=='swf'){
  22. $html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="468" height="60">'."\n".
  23. '<param name="movie" value="/images/banners/'.$banner['fileurl'].'?banner_id='.$banner['id'].'" />'."\n".
  24. '<param name="quality" value="high" />'."\n".
  25. '<param name="FlashVars" value="banner_id='.$banner['id'].'" />'."\n".
  26. '<embed src="/images/banners/'.$banner['fileurl'].'?banner_id='.$banner['id'].'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="468" height="60">'."\n".
  27. '</embed>'."\n".
  28. '</object>';
  29. }
  30. if ($html) { $inDB->query("UPDATE cms_banners SET hits = hits + 1 WHERE id=".$banner['id']); }
  31. }
  32. return $html;
  33. }
  34.  
посмотрите у себя там не сложно разобраться…
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.