PDA

Zobacz pełną wersję : Sobi2 - wyświetlanie kategorii w module Latest Entries Module



five81
05-08-2010, 14:57
Witam
Mam problem z wyświetleniem w widoku modułu Latest Entries Module obok tytułu także nazwy kategorii wpisu dodanego do komponentu Sobi2.
Chodzi o coś takiego:
Tytuł - Kategoria
np.
Michał - Warszawa.

Proszę o pomoc.

Poniżej cały kod modułu Latest Entries Module dla Sobi2:


<?php
/**
* @version $Id: mod_sobi2latest.php 4847 2009-01-23 17:42:35Z Sigrid Suski $
* @package: Sigsiu Online Business Index 2 Latest Module
* ================================================== =
* @author
* Name: Sigrid & Radek Suski, Sigsiu.NET
* Email: sobi@sigsiu.net
* Url: http://www.sigsiu.net
* ================================================== =
* @copyright Copyright (C) 2007-2009 Sigsiu.NET (http://www.sigsiu.net). All rights reserved.
* @license see http://www.gnu.org/copyleft/gpl.html GNU/GPL.
* SOBI2 Latest Module is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*/

(defined( '_VALID_MOS' ) || defined( '_JEXEC' ) ) || ( trigger_error( 'Restricted access', E_USER_ERROR ) && exit() );

defined( "DS" ) || define( "DS",DIRECTORY_SEPARATOR);

$add = defined( 'JPATH_SITE' ) ? DS.'mod_sobi2latest' : null;
defined( '_SOBI_CMSROOT' ) || define( '_SOBI_CMSROOT', str_replace( DS.'modules'.$add, null, dirname( __FILE__ ) ) );
class_exists( 'sobi2Config' ) || require_once( _SOBI_CMSROOT.DS.'components'.DS.'com_sobi2'.DS.'c onfig.class.php' );

//error_reporting(E_ALL);
//ini_set("display_errors","on");

//Get the parameters
$class = $params->get('moduleclass_sfx');
$limit = $params->get('count',5);
$table = $params->get('moduletable', 0); //only J1.0
$entryicon = $params->get('entryicon',0);
$entryimage = $params->get('entryimage',0);
$showTitle = $params->get('title',1);
$maxlength = $params->get('item_length', 50);
$direction = $params->get('direction', 1);
$categorydepend = $params->get('categorydepend', 0);
if(!$limit || $limit < 1)
$limit = 5;

$config =& sobi2Config::getInstance();
$database =& $config->getDb();
$S_Itemid = $config->sobi2Itemid;
$catId = sobi2Config::request( $_REQUEST,'catid',0 );

$now = $config->getTimeAndDate();

if (($catId > 1) && ($categorydepend == 1)) {
$query = "SELECT `title`, `itemid`, `icon`, `image` FROM `#__sobi2_item` WHERE (itemid IN (SELECT itemid FROM #__sobi2_cat_items_relations WHERE catid = {$catId})) AND `published` = 1 AND (`publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}') ORDER BY `publish_up` DESC LIMIT {$limit}";
}
else {
$query = "SELECT `title`, `itemid`, `icon`, `image` FROM `#__sobi2_item` WHERE `published` = 1 AND (`publish_down` > '{$now}' OR `publish_down` = '{$config->nullDate}') ORDER BY `publish_up` DESC LIMIT {$limit}";
}

$database->setQuery( $query );
$s_results = $database->loadObjectList();

$iso = explode( '=', _ISO );
$encoding = strtoupper($iso[1]);

echo "\n";
echo "<!-- Start of SOBI2 Latest Entries Module -->\n";
if( !( defined( "_JEXEC" ) ) ) {
if ($table)
echo "<table cellpadding=\"0\" cellspacing=\"0\" class=\"moduletable{$class}\"><tr><td>\n";
}
if ($direction == 1)
echo "<ul class=\"sobi2latest{$class}\">\n";

if(count($s_results)) {
foreach($s_results as $s_result) {
$url = "index.php?option=com_sobi2&amp;sobi2Task=sobi2Details&amp; sobi2Id={$s_result->itemid}&amp;Itemid={$S_Itemid}";
$url = sobi2Config::sef($url);

$myTitle = $config->getSobiStr($s_result->title);
$myFullTitle = $myTitle;

$icon = null;
if($entryicon) {
if($s_result->icon && file_exists("{$config->absolutePath}/images/com_sobi2/clients/{$s_result->icon}")) {
$icon = "<a href=\"{$url}\" title=\"{$myFullTitle}\"><img style=\"border-style:none;\" src=\"{$config->liveSite}/images/com_sobi2/clients/{$s_result->icon}\" title=\"{$myFullTitle}\" alt=\"{$myFullTitle}\"/></a>&nbsp;";
}
}
$image = null;
if($entryimage) {
if($s_result->image && file_exists("{$config->absolutePath}/images/com_sobi2/clients/{$s_result->image}")) {
$image = "<a href=\"{$url}\" title=\"{$myFullTitle}\"><img style=\"border-style:none;\" src=\"{$config->liveSite}/images/com_sobi2/clients/{$s_result->image}\" title=\"{$myFullTitle}\" alt=\"{$myFullTitle}\"/></a>&nbsp;";
}
}
$e = null;
if($showTitle) {
if ((function_exists("mb_strlen")) && (substr($encoding,0,3) == "UTF")) {
$len = mb_strlen($myTitle, $encoding);
}
else
$len = strlen($myTitle);

if ($len > $maxlength) {
if ((function_exists("mb_substr")) && (substr($encoding,0,3) == "UTF")) {
$myTitle = mb_substr($myTitle, 0, $maxlength, $encoding);
}
else
$myTitle = substr($myTitle, 0, $maxlength);

$myTitle = $myTitle."...";
}
$e = "<a href=\"{$url}\" title=\"{$myFullTitle}\">{$myTitle}</a>";
}
if ($icon || $image || $e) {
if ($direction == 1)
echo "<li class=\"sobi2latest{$class}\">{$icon}{$image}{$e}</li>\n";
else {
echo "<div class=\"sobi2latest{$class}\" style=\"float:left; margin: 5px;\">{$icon}{$image}{$e}</div>\n";
}
}
}
}
if ($direction == 1)
echo "</ul>\n";
else
echo "<div style=\"clear:both;\"></div>\n";

if( !( defined( "_JEXEC" ) ) ) {
if ($table)
echo "</td></tr></table>\n";
}
echo "<!--End of SOBI2 Latest Entries Module -->\n";
?>

five81
07-08-2010, 22:20
Może jednak ktoś wie jak to zrobić? :zagubiony:

Jola
08-08-2010, 22:59
Witam,
jedno ogłoszenie może być przypisane do wielu kategorii!
Co wtedy?

five81
08-08-2010, 23:20
Witam :)
Dziękuję za odzew.
W moim przypadku to niemożliwe, wpis będzie można dodać tylko do jednej kategorii.
Pozdrawiam

Jola
08-08-2010, 23:37
Zaznaczam, że to rozwiązanie pokaże tylko jedną kategorię. Linia 118 jest:

$query = "SELECT sitem.itemid, sitem.title, sitem.icon, sitem.image {$what} FROM #__sobi2_plugin_reviews AS rev LEFT JOIN #__sobi2_item AS sitem ON sitem.itemid = rev.itemid WHERE {$where} (rev.review != '' AND rev.published = 1 AND sitem.published = 1 AND (sitem.publish_down > '{$now}' OR sitem.publish_down = '{$config->nullDate}')) ORDER BY rev.added DESC LIMIT 0, {$limit}";zmienić na:

$query = "SELECT sitem.itemid, sitem.title, sitem.icon, sitem.image
, (SELECT name FROM #__sobi2_categories WHERE catid = (SELECT catid FROM #__sobi2_cat_items_relations WHERE itemid = sitem.itemid LIMIT 0 , 1 )) AS catname
{$what} FROM #__sobi2_plugin_reviews AS rev LEFT JOIN #__sobi2_item AS sitem ON sitem.itemid = rev.itemid WHERE {$where} (rev.review != '' AND rev.published = 1 AND sitem.published = 1 AND (sitem.publish_down > '{$now}' OR sitem.publish_down = '{$config->nullDate}')) ORDER BY rev.added DESC LIMIT 0, {$limit}";Następnie linia ok. 174 jest:

$e = null;
if ($showTitle) {
$myTitle = sobi2cutString($myTitle, $maxlength, $encoding);
$e = "<a href=\"{$url}\" title=\"{$myFullTitle}\">{$myTitle}</a>";
}Zmienić przykładowo na:

$catname = null;
$catname = $s_result->catname;

$e = null;
if ($showTitle) {
$myTitle = sobi2cutString($myTitle, $maxlength, $encoding);
$e = "<a href=\"{$url}\" title=\"{$myFullTitle}\">{$myTitle}</a> {$catname}";
}

five81
10-08-2010, 20:18
Dziękuję za pomoc, co prawda z braku czasu jeszcze nie wprowadziłem zmian do modułu, ale uczynię to niebawem.
Jeszcze raz wielkie dzięki :)

arek66
10-08-2010, 21:35
witam, zaciekawił mnie fakt, że piszecie o wyświetlaniu nazwy kategorii w module Latest Entries Module. Czy wiecie może czy jest możliwość, aby opcja szukac wyszukiwała po nazwach kategorii, bo do tej pory nie znalazłem takiej opcji.

five81
10-08-2010, 21:55
W konfiguracji ogólnej komponentu Sobi2 wejdź w zakładkę opcje wyszukiwania i ustaw TAK przy "Przycisk użyj rozszerzonej opcji wyszukiwania". Potem na swojej stronie po wejściu w opcje Szukaj powinieneś mieć przycisk "Opcje rozszerzonego wyszukiwania". Tam właśnie jest wyszukiwanie po nazwach kategorii Sobi2.

arek66
11-08-2010, 13:47
niby się zgadza, ale....

Zakładamy, że szukający rozumie zasadę działania wyszukiwarki, i wie, że musi określić w wyszukiwaniu szczegółowym, że szuka takiej lub inne kategorii. Wtedy wie, że trzeba rozwinąć pasek "kategorie", potem subkategorię, zawody, potem optyk i w ten sposób znajdzie optyka np w Koluszkach. Ale, co będzie jak szukający nie rozwinie żadnej kategorii ani miasta (u mnie będzie właśnie takie szukanie po kategorii i po mieście - tylko te 2 wartości) ale wpisze w okienko "optyk, Koluszki). Wtedy Sobi nie znajdzie optyka w Koluszkach.
Dlatego moje pytanie brzmi: czy Sobi "umie" wyszukać po nazwach kategorii jeśli tę nazwę wpiszemy w okienko "szukaj" a nie wybierzemy z opcji wyszukiwania zaawansowanego.

Tak wyszuka:

http://www.kera.pl/priv/tak.png

Tak nie wyszuka:

http://www.kera.pl/priv/nie.png