Чтение RSS каналов

Форум

Открыть Ответить

Поиск похожих материалов в модуле.

0

0
1
23.01.2012 14:32:57

Здравствуйте. Заказал доработку одного из модулей. В задании которого было указано, что хотелось бы видеть на странице с модуля в пользовательской части раздел Похожие Публикации.

Вот человек задумался как это сделать, не нагружая дополнительно систему лишними запросами. Не подскажет никто?

Тоесть все будет оформлено как на ДЛЕ. Поиск был бы в Автоматическом режиме.



Версия системы: SLAED CMS 5.* Pro
Версия PHP: PHP 5
4.32

4.32
2
24.01.2012 12:29:55

Ну ты даешь за разработчика всю работу так сделаешь.

Я давно реализовал такое на сайте с кешированием запроса похожих новостей.

3.74

3.74
3
24.01.2012 15:44:21

ra55551 я не просил писать, что я сделаю за разработчика, а что нет. Я попросил обрисовать как лучше сделать. Или показать пример. Вместо того, чтобы расхваливать себя какой ты умный. Лучше бы ссылку на пример написал. Или подсказал алгоритм.

4.32

4.32
4
25.01.2012 13:27:26

Вот почитай эту статью Кеширование блоков с sql-запросами для slaed cms.

Ну а тут готовое решение


Написал на скорую руку . Есть ньансы но думаю разберешься



Найти код в modules/news/index.php

<br /> //старый код<br /> if (&#036;confn[&#039;assoc&#039;]) {<br /> if (&#036;associated[strlen(&#036;associated)-1] == &quot;-&quot;) &#036;associated = substr(&#036;associated, 0, -1);<br /> &#036;asso = str_replace(&quot;-&quot;, &quot;,&quot;, &#036;associated);<br /> &#036;limit = intval(&#036;confn[&#039;asocnum&#039;]);<br /> list(&#036;count) = &#036;db-&gt;sql_fetchrow(&#036;db-&gt;sql_query(&quot;SELECT Count(sid) FROM &quot;.&#036;prefix.&quot;_news WHERE catid IN (&quot;.&#036;asso.&quot;) AND sid!=&#039;&quot;.&#036;id.&quot;&#039; AND time&lt;=now() AND status!=&#039;0&#039;&quot;));<br /> if (&#036;count &gt;= &#036;limit) {<br /> &#036;random = mt_rand(0, &#036;count - &#036;limit);<br /> &#036;result = &#036;db-&gt;sql_query(&quot;SELECT sid, title, time FROM &quot;.&#036;prefix.&quot;_news WHERE catid IN (&quot;.&#036;asso.&quot;) AND sid!=&#039;&quot;.&#036;id.&quot;&#039; AND time&lt;=now() AND status!=&#039;0&#039; ORDER BY time DESC LIMIT &quot;.&#036;random.&quot;, &quot;.&#036;limit);<br /> &#036;cont .= tpl_eval(&quot;open&quot;);<br /> &#036;cont .= &quot;&lt;h2&gt;&quot;._ASSTORY.&quot;&lt;/h2&gt;&quot;<br /> .&quot;&lt;table width=&#092;&quot;100%&#092;&quot; border=&#092;&quot;0&#092;&quot; cellpadding=&#092;&quot;3&#092;&quot; cellspacing=&#092;&quot;0&#092;&quot; class=&#092;&quot;hover&#092;&quot;&gt;&quot;;<br /> while(list(&#036;s_sid, &#036;title, &#036;time) = &#036;db-&gt;sql_fetchrow(&#036;result)) {<br /> &#036;cont .= &quot;&lt;tr&gt;&lt;td&gt;&lt;a href=&#092;&quot;index.php&#063;name=&quot;.&#036;conf[&#039;name&#039;].&quot;&amp;op=view&amp;id=&quot;.&#036;s_sid.&quot;&#092;&quot; title=&#092;&quot;&quot;.&#036;title.&quot;&#092;&quot;&gt;&lt;img src=&#092;&quot;&quot;.img_find(&quot;all/news.png&quot;).&quot;&#092;&quot; border=&#092;&quot;0&#092;&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;td width=&#092;&quot;98%&#092;&quot;&gt;&lt;a href=&#092;&quot;index.php&#063;name=&quot;.&#036;conf[&#039;name&#039;].&quot;&amp;op=view&amp;id=&quot;.&#036;s_sid.&quot;&#092;&quot; title=&#092;&quot;&quot;.&#036;title.&quot;&#092;&quot;&gt;&quot;.&#036;title.&quot;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;<br /> }<br /> &#036;cont .= &quot;&lt;/table&gt;&quot;;<br /> &#036;cont .= tpl_eval(&quot;close&quot;);<br /> }<br /> }<br />



заменить на

<br /> //новый код будет создавать файл кеша с ид данной новости<br /> if (&#036;confn[&#039;assoc&#039;]) {<br /> //проверяем если кеш есть то берем из кеша<br /> if(file_exists(&quot;config/cache/newsrelated&quot;.&#036;id.&quot;.tmp&quot;)){<br /> &#036;cont .= file_get_contents(&quot;config/cache/newsrelated&quot;.&#036;id.&quot;.tmp&quot;);<br /> }<br /> //если нет то создаем фал кеша с ид данной новости<br /> else{<br /> <br /> if (&#036;associated[strlen(&#036;associated)-1] == &quot;-&quot;) &#036;associated = substr(&#036;associated, 0, -1);<br /> &#036;asso = str_replace(&quot;-&quot;, &quot;,&quot;, &#036;associated);<br /> &#036;limit = intval(&#036;confn[&#039;asocnum&#039;]);<br /> list(&#036;count) = &#036;db-&gt;sql_fetchrow(&#036;db-&gt;sql_query(&quot;SELECT Count(sid) FROM &quot;.&#036;prefix.&quot;_news WHERE catid IN (&quot;.&#036;asso.&quot;) AND sid!=&#039;&quot;.&#036;id.&quot;&#039; AND time&lt;=now() AND status!=&#039;0&#039;&quot;));<br /> if (&#036;count &gt;= &#036;limit) {<br /> &#036;random = mt_rand(0, &#036;count - &#036;limit);<br /> &#036;result = &#036;db-&gt;sql_query(&quot;SELECT sid, title, time FROM &quot;.&#036;prefix.&quot;_news WHERE catid IN (&quot;.&#036;asso.&quot;) AND sid!=&#039;&quot;.&#036;id.&quot;&#039; AND time&lt;=now() AND status!=&#039;0&#039; ORDER BY time DESC LIMIT &quot;.&#036;random.&quot;, &quot;.&#036;limit);<br /> &#036;cont .= tpl_eval(&quot;open&quot;);<br /> &#036;cont .= &quot;&lt;h2&gt;&quot;._ASSTORY.&quot;&lt;/h2&gt;&quot;<br /> .&quot;&lt;table width=&#092;&quot;100%&#092;&quot; border=&#092;&quot;0&#092;&quot; cellpadding=&#092;&quot;3&#092;&quot; cellspacing=&#092;&quot;0&#092;&quot; class=&#092;&quot;hover&#092;&quot;&gt;&quot;;<br /> while(list(&#036;s_sid, &#036;title, &#036;time) = &#036;db-&gt;sql_fetchrow(&#036;result)) {<br /> &#036;cont .= &quot;&lt;tr&gt;&lt;td&gt;&lt;a href=&#092;&quot;index.php&#063;name=&quot;.&#036;conf[&#039;name&#039;].&quot;&amp;op=view&amp;id=&quot;.&#036;s_sid.&quot;&#092;&quot; title=&#092;&quot;&quot;.&#036;title.&quot;&#092;&quot;&gt;&lt;img src=&#092;&quot;&quot;.img_find(&quot;all/news.png&quot;).&quot;&#092;&quot; border=&#092;&quot;0&#092;&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;td width=&#092;&quot;98%&#092;&quot;&gt;&lt;a href=&#092;&quot;index.php&#063;name=&quot;.&#036;conf[&#039;name&#039;].&quot;&amp;op=view&amp;id=&quot;.&#036;s_sid.&quot;&#092;&quot; title=&#092;&quot;&quot;.&#036;title.&quot;&#092;&quot;&gt;&quot;.&#036;title.&quot;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&quot;;<br /> }<br /> &#036;cont .= &quot;&lt;/table&gt;&quot;;<br /> &#036;cont .= tpl_eval(&quot;close&quot;);<br /> }<br /> //записываем кеш<br /> &#036;fp = fopen(&quot;config/cache/newsrelated&quot;.&#036;id.&quot;.tmp&quot;, &quot;wb&quot;);fwrite(&#036;fp,&#036;cont);fclose(&#036;fp);<br /> <br /> <br /> }<br /> <br /> <br /> <br /> <br /> } <br /> <br />




В function/function.php добавить функцию

/* удалнение кеша*/<br /> function clear_cache(&#036;cache_area = false,&#036;system=&quot;&quot;) {<br /> &#036;adsystem = (&#036;system) &#063; &#039;/system&#039; : &quot;&quot;;<br /> &#036;fdir = opendir(&#039;config/cache&#039;.&#036;adsystem.&#039;&#039; );<br /> <br /> while ( &#036;file = readdir( &#036;fdir ) ) {<br /> if( &#036;file != &#039;.&#039; and &#036;file != &#039;..&#039; and &#036;file != &#039;.htaccess&#039; and &#036;file != &#039;system&#039; ) {<br /> <br /> if( &#036;cache_area ) {<br /> <br /> if( strpos( &#036;file, &#036;cache_area ) !== false ) @unlink( &#039;config/cache/&#039;.&#036;adsystem.&#039;&#039; . &#036;file );<br /> <br /> } else {<br /> <br /> @unlink( &#039;config/cache/&#039;.&#036;adsystem.&#039;&#039; . &#036;file );<br /> <br /> }<br /> }<br /> }<br /> }


В файле modules/news/admin/index.php в функции function news() после строки

echo &#036;cont;



Вставить

<br /> //Теперь при заходе в админку буде очищаться весь кеш.<br /> clear_cache();<br /> <br />

3.74

3.74
5
25.01.2012 15:12:06

Благодарю.

4.32

4.32
Открыть Ответить
Хотите опробовать SLAED CMS в действии?

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь