Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Портал > Модули и блоки > Myarticles

Ответ
 
Опции темы Опции просмотра
sternman вне форума sternman
Джегид

Аватар для sternman

| Цитировать Старый #1 11-24-2009, 18:16

Можно ли организовать такое дело?
Пример банальный - блок статей выводится на главной, но я не хочу чтобы все статьи там выводились, рекламные в частности.
Помогите реализовать, плиз. Запретить выборку из некоторых разделов - как?
вот код блока articles_top
PHP код:
<?php 
// +-------------------------------------------------------------+
// | Russian Support RunCms                                      |
// +-------------------------------------------------------------+
// | Copyright (c) 2006 Ruscms.RU development group              |
// +-------------------------------------------------------------+
// | For the full copyright and license information please, view |
// | the license.txt file that was distributed with this source  |
// | code. If the license.txt file is missing, please visit the  |
// | RusCms homepage: http://www.ruscms.ru                       |
// +-------------------------------------------------------------+
/**

* @version $Id$
* @package modules
* @copyright (C) 2006 Half-Dead.
* @copyright (C) 2006 The E-Xoops/RUNCMS Project <http://www.runcms.org> 
* @link http://www.runcms.org
* @author Half-Dead (The E-Xoops/RUNCMS Project)
* @license GPL <http://www.gnu.org/licenses/gpl.html>
*/
defined'XOOPS_ROOT_PATH' ) or exit( '<h1>Forbidden</h1> You don\'t have permission to access' );
include_once(
XOOPS_ROOT_PATH '/modules/myarticles/include/functions.inc.php');
function 
b_articles_top_show($options)
{
global 
$db$myts;
$block = array();
$block['content'] = "";
if (!empty(
$options[4]) && is_numeric($options[4])) {
$extra "AND topicid=" $options[4];

$sql "
SELECT storyid, title, published, counter
FROM " 
$db->prefix("artstories") . "
WHERE published<" 
time() . "
AND published>0
$extra
ORDER BY " 
$options[0] . " DESC";
if (empty(
$options[3]) || !is_numeric($options[3])) {
$options[3] = 5;

if (empty(
$options[2]) || !is_numeric($options[2])) {
$options[2] = 19;

$result $db->query($sql$options[3], 0);
while (list(
$storyid$title$published$counter) = $db->fetch_row($result)) {
$title $myts->makeTboxData4Show($title);
if (
strlen($title) > $options[2]) {
$title substr($title0$options[2]) . "..";

if (
$options[0] == "published") {
$block['title'] = _MB_ARTICLES_TITLE4;
if (
$options[1] == 1) {
$block['content'] .= "<div class=news_date2><strong>" formatTimestamp($published"s") . "</strong></div>";

$block['content'] .= "";
} elseif (
$options[0] == "counter") {
$block['title'] = _MB_ARTICLES_TITLE5;
if (
$options[1] == 1) {
$block['content'] .= " (" $counter ")";

$block['content'] .= "";

$block['content'] .= "<a href='" XOOPS_URL "/modules/myarticles/article_storyid_" $storyid ".html'>" $title "</a>";  
$block['content'] .= "<div class='underline1' style='width:165px;'>&nbsp;</div>";

return 
$block;

// ---------------------------------------------------------------------------------------//
/**
* Description

* @param type $var description
* @return type description
*/
function b_articles_top_edit($options)
{
global 
$db;
$form "<input type='hidden' name='options[0]' value='" $options[0] . "' />";
$form .= "<table border='0'>"
// Show Date/Hits?
$form .= "<tr><td>" _MB_ARTICLES_SHOW " " $options[0] . ":</td><td>";
$chk "";
if (
$options[1] == 0) {
$chk " checked='checked'";

$form .= "<input type='radio' class='radio' name='options[1]' value='0'" $chk " />" _NO "";
$chk "";
if (
$options[1] == 1) {
$chk " checked='checked'";

$form .= "<input type='radio' class='radio' name='options[1]' value='1'" $chk " />" _YES "</td></tr>"
// TRIM
$form .= "
<tr><td>" 
_MB_ARTICLES_TRIM "</td>
<td><input type='text' class='text' size='3' maxlength='2' name='options[2]' value='" 
$options[2] . "'></td>
</tr>"

// LIMIT TO
$form .= "
<tr><td>" 
_MB_ARTICLES_LIMIT "</td>
<td><input type='text' class='text' name='options[3]' value='" 
$options[3] . "' size='3' maxlength='2' /></td>
</tr>"

// LIMIT TO CATS
include_once(XOOPS_ROOT_PATH "/modules/myarticles/class/tree.class.php");
$cats = new ArticlesTree($db->prefix("arttopics"), "topic_id""topic_pid");
ob_start();
$cats->makeMySelBox("topic_title""topic_title"$options[4], 1"options[4]");
$content ob_get_contents();
ob_end_clean();
$form .= "
<tr><td>" 
_MB_ARTICLES_LIMIT "</td>
<td>
$content</td>
</tr>"
;
$form .= "</table>";
return 
$form;

?>


С уважением, Павел
Солженицын
Дубус
Посетить домашнюю страницу sternman
  Сообщения: 729 c 09.04.2007 | Репутация: 26
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #2 11-24-2009, 20:40

PHP код:
$excludedids "2, 5, 8, 100";
 
$sql 
SELECT storyid, title, published, counter 
FROM " 
$db->prefix("artstories") . 
WHERE published<" 
time() . " AND NOT storyid in ("$excludedids ")
AND published>0 
$extra 
ORDER BY " 
$options[0] . " DESC"
Ну например так Понятна идея?

А, пардон, у тебя по категориям разбито. Тогда так:
PHP код:
$excludedids "2, 5, 8, 100";
 
$sql 
SELECT storyid, title, published, counter 
FROM " 
$db->prefix("artstories") . 
WHERE published<" 
time() . " AND NOT topicid in ("$excludedids ")
AND published>0 
$extra 
ORDER BY " 
$options[0] . " DESC"
Этот вариант уже будет выбивать по ID категории, а не ID статьи. Можно еще сделать так:

PHP код:
$sql 
SELECT storyid, title, published, counter 
FROM " 
$db->prefix("artstories") . 
WHERE published<" 
time() . " AND NOT topicid in (SELECT topicid FROM " $db->prefix("arttopics") . " WHERE topic_title LIKE '%реклам%')
AND published>0 
$extra 
ORDER BY " 
$options[0] . " DESC"
Этот просто не будет грузить статьи из категории, в названии которой присутствует слово "реклам" Только учти, анализируется в этом случае только последний уровень категории, т.е. если у тебя есть структура статей рекламные - направление 1 - статья, то эта фишка не сработает.

Кстати, эти запросы имеет смысл завернуть в кеширование (особенно последний), причем сразу минут на 30 ИМХО

Последний раз редактировалось ZlydenGL, 11-24-2009 в 20:48


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
sternman вне форума sternman
Джегид

Аватар для sternman

| Цитировать Старый #3 11-24-2009, 21:13

уточню: это нужно вместо этих строк вставить:
PHP код:
$sql "
SELECT storyid, title, published, counter
FROM " 
$db->prefix("artstories") . "
WHERE published<" 
time() . "
AND published>0
$extra
ORDER BY " 
$options[0] . " DESC"
?


С уважением, Павел
Солженицын
Дубус
Посетить домашнюю страницу sternman
  Сообщения: 729 c 09.04.2007 | Репутация: 26
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #4 11-24-2009, 22:23

Ага, именно вместо этого запроса. Не забудь рассказать, что получилось!


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
sternman вне форума sternman
Джегид

Аватар для sternman

| Цитировать Старый #5 11-25-2009, 17:14

хорошо, раскажу, тут пока еще посереьезней проблемы есть


С уважением, Павел
Солженицын
Дубус
Посетить домашнюю страницу sternman
  Сообщения: 729 c 09.04.2007 | Репутация: 26
sternman вне форума sternman
Джегид

Аватар для sternman

| Цитировать Старый #6 11-26-2009, 23:13

ZlydenGL
это работает, спасибо!


С уважением, Павел
Солженицын
Дубус
Посетить домашнюю страницу sternman
  Сообщения: 729 c 09.04.2007 | Репутация: 26
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 93.71 Kb. compressed to 88.78 Kb. by saving 4.93 Kb. (5.26%)
Page generated in 0.08008 seconds with 11 queries