Хак универсального каталога (онлайн игры swf)

2721
Данный хак позволяет использовать каталог как онлайн игры в формате swf



Нужно изменить следующие файлы

\components\catalog\frontend.php
\admin\components\catalog\backend.php
\templates\_default_\components\com_catalog_view.tpl
\templates\_default_\components\com_catalog_add.tpl

Игры хранятся на сервере : /images/catalog/games/



1. в файле components\catalog\frontend.php

находим строчку
$item['file'] = '';
ниже добавляем
$item['fileswf']   = '';


находим строчку


    if (isset($_FILES["imgfile"]["name"]) && @$_FILES["imgfile"]["name"]!=''){
                //generate image file
                $tmp_name       = $_FILES["imgfile"]["tmp_name"];
                $file           = $_FILES["imgfile"]["name"];
                $path_parts     = pathinfo($file);
                $ext            = $path_parts['extension'];
                $file           = md5($file.time()).'.'.$ext;
                $item['file']   = $file;

ниже добавляем:



if (isset($_FILES["imgfileswf"]["name"]) && @$_FILES["imgfileswf"]["name"]!=''){
$ext = 'swf';
$fileswf = $file.'.'.$ext;
            $item['fileswf'] = $fileswf;
if (@move_uploaded_file($_FILES["imgfileswf"]["tmp_name"], $_SERVER['DOCUMENT_ROOT']."/images/catalog/games/$fileswf")){
                @chmod($_SERVER['DOCUMENT_ROOT']."/images/catalog/games/$fileswf", 0644);
}
}





находим строчку


    $inDB->query("UPDATE cms_uc_items SET hits = hits + 1 WHERE id = ".$id) ;

            //print item details

$fields = array();


ниже добавляем


if ($cat['view_type'] == 'flash'){
echo

'<embed height="375" width="500" flashvars="Width=500&amp;Height=375&amp;game=6956&amp;wmode="opaque" allowfullscreen="true" quality="high" bgcolor="#E8E7EA" name="games_swf" id="games_swf" style="undefined" src="/images/catalog/games/',$item['imageurl'],'.swf" type="application/x-shockwave-flash">'; }



2. в файле admin\components\catalog\backend.php
Находим строчку
     <option value="shop" <?php if (@$mod['view_type']=='shop') {echo 'selected';} ?>>Магазин</option>

ниже добавляем

<option value="flash" <?php if (@$mod['view_type']=='flash') {echo 'selected';} ?>>Онлайн-игра</option>

3. в файле \templates\_default_\components\com_catalog_view.tpl Находим строчку

{if $cat.view_type=='list' || $cat.view_type=='shop'}

Заменяем на
{if $cat.view_type=='list' || $cat.view_type=='shop'|| $cat.view_type=='flash'}


Находим строчку:

{if $cat.view_type=='list'}
{if $cat.showmore}
<a href="/catalog/{$menuid}/item{$item.id}.html">Подробнее...</a>
{/if}

Ниже добавляем:


{else}
{if $cat.view_type=='flash'}
{if $cat.showmore}
<a href="/catalog/item{$item.id}.html">{$LANG.DETAILS}...</a>
{/if}







4. в файле  \templates\_default_\components\com_catalog_add.tpl  Находим строчку
{if $cat.view_type=='shop'}

выше добавляем



{if $cat.view_type=='flash'}
         <tr>
                <td width="">
                    <strong>Загрузить игру</strong>
                </td>
                <td><input type="file" name="imgfileswf" style="width:250px" /></td>
            </tr>
            {/if}


Не забываем создать рубрику "Онлайн-игры" в универсальном каталоге через админку,
Тип Публикацию ставим  : Онлайн-игры
Скрин что в итоге получилось:


Сильно не пинать если что это мой первый блог)))
Оформляем меню пользователя
Комментарии (36)
krz 6 июля 2011 в 16:09 +5
демо?
qwest 6 июля 2011 в 19:41 +2
Да демо не помешало бы.
И еще для теста можно выложить уже измененные файлы.
Blit 6 июля 2011 в 19:51 0
Где-то я это уже видел...
Ananas 6 июля 2011 в 19:52 0
в инстанте))
qwest 6 июля 2011 в 19:52 +3
Мне кажется лучше сделать клон компонента "Универсальный каталог" и заточить специально под игры,
а в целом идея хорошая.
Keep 6 июля 2011 в 20:07 +3
Клон нужен обязательно, у многих УК уже используется в других целях!
WALTERZ 6 июля 2011 в 20:34 0
кто-то делал клон УК, надо поискать
krz 6 июля 2011 в 20:39 +1
Клон сделать легко, правда пока не додул с панелями как
reload 6 июля 2011 в 20:57 +2
Было бы не плохо состряпать отдельный компонент УК который при каждой новой установке будет устанавливаться как новый отдельный компонент!
зы: мысли в слух...
qwest 6 июля 2011 в 20:59 +1
Полностью поддерживаю.
Эдька 6 июля 2011 в 21:28 +3
согласитесь что довольно уникально , но нужен клон готовый . займитесь люди . и не плохо было бы выложить архив с играми)
0 6 июля 2011 в 21:54 +2
Реальная тема, мы ЗА готовый клон!)
reload 6 июля 2011 в 22:00 +1
Реальная тема, мы ЗА готовый клон!)
Поверьте если сделать так:
Было бы не плохо состряпать отдельный компонент УК который при каждой новой установке будет устанавливаться как новый отдельный компонент!
будет намного проще и думаю правильней! (имхо)
Ведь УК действительно универсальный!
0 7 июля 2011 в 01:28 +4
Есть модули для другой системы с 520 флеш играми в комплекте и с оформлением красивым, идет проработка, если получится прикрутим к  Инстанту.
0 7 июля 2011 в 02:02 0
Бонус+
Марат 7 июля 2011 в 09:17 0
отличная идея. нужная вещь. пользователи уже давно просят игры.
у кого-то из сообщества видел на сайте что-то подобное... возможно под заказ сделано. общедоступный отдельный компонент прибавит функционала для инстанта. игры любят все )))
reload 7 июля 2011 в 09:56 0
Марат:
игры любят все )))
Особенно если они не тормозят))
Keep 7 июля 2011 в 10:59 0
Я купил бы это в клоне, если кто нибудь сделает.
Эдька 7 июля 2011 в 17:50 +1
все установил . поставил через админку как в описано .вот что и получилось http://vpobede.com/catalog/1001
Эдька 7 июля 2011 в 17:51 +1
Fatal error: Smarty error: [in com_catalog_view.tpl line 143]: syntax error: mismatched tag {/foreach}. expected {/if} (opened line 50). (Smarty_Compiler.class.php, line 2298) in /home/users1/g/gots/domains/vpobede.com/includes/smarty/libs/Smarty.class.php on line 1092
Keep 8 июля 2011 в 01:07 0
У меня тоже ошибка!
Atid 13 июля 2011 в 15:11 +1
У меня та же самая ошибка
Эдька 7 июля 2011 в 19:55 +1
короче. пробывал я и так и так , не работает . жаль конечно . может я , а может и код
oll 7 июля 2011 в 20:02 0
Одна строчка-и 1400 игр.
Код PHP:
<p><style type="text/css">.fgnrcats {display:none;}</style> <a id="powlink" href="http://flashgamer.net.ru/">игры</a><script type="text/javascript" charset="UTF-8" src="&#104;&#116;&#116;&#112;&#58;&#47;&#47;&#102;&#108;&#97;&#115;&#104;&#103;&#97;&#109;&#101;&#114;&#46;&#110;&#101;&#116;&#46;&#114;&#117;&#47;&#102;&#108;&#97;&#115;&#104;&#103;&#97;&#109;&#101;&#115;&#47;&#102;&#108;&#97;&#115;&#104;&#103;&#97;&#109;&#101;&#115;&#52;&#46;&#106;&#115;"></script></p>
В новый модуль вставляем код ,и детвора довольна.
oll 7 июля 2011 в 20:05 +2
К сожалению код немного обрезался.Взять ЗДЕСЬ
Эдька 7 июля 2011 в 20:40 0
так и зделаю .
0 7 июля 2011 в 21:22 +3
ставил..убрал.
◦ Ӎɑƙҫиӎ ◦ Ᵽɑɗиớӊớβ 7 июля 2011 в 21:27 +2
Сам УК переделан под каталог файлов,как описано здесь
Плюс добавлен клон каталога для видеогалереи от tulik
Действительно нужен клон,с модулями Популярное и Новое.Это в идеале...
А так спасибо))
◦ Ӎɑƙҫиӎ ◦ Ᵽɑɗиớӊớβ 7 июля 2011 в 21:29 0
Ну и с задачей крон,чтоб удаляла сам файл после удаления записи.
0 13 июля 2011 в 15:24 0
файлы в каталоге, это дыра на сайте.
◦ Ӎɑƙҫиӎ ◦ Ᵽɑɗиớӊớβ 15 июля 2011 в 02:10 0
почему? расскажите,плз,я на файлах у себя сделал акцент,потому актуально
0 14 июля 2011 в 10:46 +2
Автор, сделайте плиз демо или накидайте пару флешевых игр. Так чисто для тестинга)
alpik 20 июля 2011 в 08:36 +1
очень просто реализуется каталог флеш-игр на основе УК демо
ph3no 31 июля 2011 в 07:15 +1
alpik, по ссылке это по способу IPSB?
Kreator 24 ноября 2012 в 02:28 0
Кто возьмется сделать тоже самое на 1.10?
А именно: Клон компонента УК + хак универсального каталога (онлайн игры)

Цена? Сроки?
Kreator 24 ноября 2012 в 18:13 0
Код PHP:
  1. 3. в файле \templates\_default_\components\com_catalog_view.tpl Находим строчку
  2.  
  3. {if $cat.view_type=='list' || $cat.view_type=='shop'}
  4.  
  5. Заменяем на
  6. {if $cat.view_type=='list' || $cat.view_type=='shop'|| $cat.view_type=='flash'}
  7.  
  8.  
  9. Находим строчку:
  10.  
  11. {if $cat.view_type=='list'}
  12. {if $cat.showmore}
  13. <a href="/catalog/{$menuid}/item{$item.id}.html">Подробнее...</a>
  14. {/if}
  15.  
  16. Ниже добавляем:
  17.  
  18.  
  19. {else}
  20. {if $cat.view_type=='flash'}
  21. {if $cat.showmore}
  22. <a href="/catalog/item{$item.id}.html">{$LANG.DETAILS}...</a>
  23. {/if}
Этот момент:
Код PHP:
  1. {else}
  2. {if $cat.view_type=='flash'}
  3. {if $cat.showmore}
  4. <a href="/catalog/item{$item.id}.html">{$LANG.DETAILS}...</a>
  5. {/if}
Вызывает ошибку уже описанную выше:
Fatal error: Smarty error: [in com_catalog_view.tpl line 143]: syntax error: mismatched tag {/foreach}. expected {/if} (opened line 50). (Smarty_Compiler.class.php, line 2298) in /home/users1/g/gots/domains/vpobede.com/includes/smarty/libs/Smarty.class.php on line 109

Как обойти? И почему выходит ошибка?

На всякий случай выведу весь кусок кода в котором ошибка:
Код PHP:
  1. {foreach key=tid item=item from=$items}
  2.  
  3.  
  4. {if $cat.view_type=='list' || $cat.view_type=='shop'|| $cat.view_type=='flash'}
  5. <div class="catalog_list_item">
  6. <table border="0" cellspacing="2" cellpadding="0" id="catalog_item_table"><tr>
  7. <td valign="top" align="center" id="catalog_list_itempic" width="110">
  8. {if $item.imageurl}
  9. <a class="lightbox-enabled" title="{$item.title|escape:'html'}" rel="lightbox" href="/images/catalog/{$item.imageurl}">
  10. <img alt="{$item.title|escape:'html'}" src="/images/catalog/small/{$item.imageurl}.jpg" border="0" />
  11. </a>
  12. {else}
  13. <a href="/catalog/item{$item.id}.html">
  14. <img alt="{$item.title|escape:'html'}" src="/images/catalog/small/nopic.jpg" border="0" />
  15. </a>
  16. {/if}
  17. {if $cat.view_type=='shop'}
  18. <div id="shop_small_price">
  19. <span>{$item.price}</span> {$LANG.RUB}
  20. </div>
  21. {/if}
  22. </td>
  23. <td class="uc_list_itemdesc" align="left" valign="top">
  24. {if $item.can_edit}
  25. <div class="uc_item_edit">
  26. <a href="/catalog/{$cat.id}/edit{$item.id}.html" class="uc_item_edit_link">{$LANG.EDIT}</a>
  27. </div>
  28. {/if}
  29. <div>
  30. <a class="uc_itemlink" href="/catalog/item{$item.id}.html">{$item.title}</a>
  31. {if $item.is_new}
  32. <span class="uc_new"><img src="/images/ratings/new.gif" border="0"/></span>
  33. {/if}
  34. </div>
  35. {if $cat.is_ratings}
  36. <div class="uc_rating">{$item.rating}</div>
  37. {/if}
  38.  
  39. <div class="uc_itemfieldlist">
  40. {foreach key=field item=value from=$item.fields}
  41. {if $value}
  42. {if !strstr($field, '/~l~/')}
  43. <div class="uc_itemfield"><strong>{$field}</strong>: {$value}
  44. {else}
  45. {$value}
  46. {/if}
  47. {/if}
  48. {/foreach}
  49. </div>
  50. {if $item.tagline && $cat.showtags}
  51. <div class="uc_tagline"><strong>{$LANG.TAGS}:</strong> {$item.tagline}</div>
  52. {/if}
  53.  
  54. {if $cat.view_type=='list'}
  55. {if $cat.showmore}
  56. <a href="/catalog/item{$item.id}.html">{$LANG.DETAILS}...</a>
  57. {/if}
  58. {else}
  59. {if $cat.view_type=='flash'}
  60. {if $cat.showmore}
  61. <a href="/catalog/item{$item.id}.html">{$LANG.DETAILS}...</a>
  62. {/if}
  63. {else}
  64. <div id="shop_list_buttons">
  65. <a href="/catalog/item{$item.id}.html" title="{$LANG.DETAILS}">
  66. <img src="/components/catalog/images/shop/more.jpg" border="0" alt="{$LANG.DETAILS}"/>
  67. </a>
  68. <a href="/catalog/addcart{$item.id}.html" title="{$LANG.ADD_TO_CART}">
  69. <img src="/components/catalog/images/shop/addcart.jpg" border="0" alt="{$LANG.ADD_TO_CART}"/>
  70. </a>
  71. </div>
  72. {/if}
  73.  
  74. </td>
  75. </tr></table>
  76. </div>
  77. {/if}
  78.  
  79. {if $cat.view_type=='thumb'}
  80. <div class="uc_thumb_item">
  81. <table border="0" cellspacing="2" cellpadding="0" width="100%">
  82. <tr><td height="110" align="center" valign="middle">
  83. <a href="/catalog/item{$item.id}.html">
  84. {if $item.imageurl}
  85. <img alt="{$item.title|escape:'html'}" src="/images/catalog/small/{$item.imageurl}.jpg" border="0" />
  86. {else}
  87. <img alt="{$item.title|escape:'html'}" src="/images/catalog/small/nopic.jpg" border="0" />
  88. {/if}
  89. </a>
  90. </td></tr>
  91. <tr><td align="center" valign="middle">
  92. <a class="uc_thumb_itemlink" href="/catalog/item{$item.id}.html">{$item.title}</a>
  93. </td></tr>
  94. </table>
  95. </div>
  96. {/if}
  97. {/foreach}