PDA

Zobacz pełną wersję : Lista artykułów z kategorii danego artykułu.



mmike
30-03-2008, 12:54
Czy ktoś zna jakiegoś moda albo sposób modyfikacji
/components/com_content/views/article/tmpl/default.php
aby uzyskac wykaz WSZYSTKICH artykułów z kategorii, z której jest aktualnie wyświetlany artykuł?

Przeglądałem extensions, ale tam tez nic nie znalazłem, niby prosta rzecz, ale widze ze jest padaka z tym.




Chodzi o taki wykaz jaki mam w category description wykaz TU: http://www.skalmar.pl/develope/index.php?option=com_content&view=category&id=34&Itemid=56

I chciałbym mieć to samo TU:

http://www.skalmar.pl/develope/index.php?view=article&catid=34%3Aaluzje-poziome-category&id=46%3A2-testowy&option=com_content&Itemid=56

Będę wdzięczny za okazaną pomoc.
m-mike

mmike
31-03-2008, 00:17
No i lipa, przekopałem całe extensions, takie samo pytanie zadałem na http://forum.joomla.org/ i tez bez odpowiedzi.
Taka prosta funkcjonalnosc, a tu taka niespodzianka.

Jedyne co mi pozostaje to przerobic jakiegos istniejacego moda - chyba najlepszy bedzie related items.

Jak skoncze i bedzie działał to udostępnie.

zwiastun
31-03-2008, 01:58
A to nie wystarczy wziąć np. moduł Popularne, wskazać kategorię i ustalić mu, że ma wyświetlać 100 -200 czy 500 odnośników? Albo moduł Nowości?

mmike
31-03-2008, 10:26
Przeczytaj dokładnie:
Lista artykułów z DANEJ kategorii.

Te moduły nie spełniają tego kryterium.

mmike
01-04-2008, 23:52
Dla zainteresowanych - w 2 dni zmodyfikowalem relateditems i swietnie spelnia moje oczekiwania (zmienilem nazwe modulu na mod_itemsfromcat)

KOD:
helper.php


<?php


// no direct access
defined('_JEXEC') or die('Restricted access');

require_once (JPATH_SITE.DS.'components'.DS.'com_content'.DS.'h elpers'.DS.'route.php');

class modItemsFromCatHelper
{
function getList($params)
{
global $mainframe;

$db =& JFactory::getDBO();
$user =& JFactory::getUser();

$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');

$temp = JRequest::getString('id');
$temp = explode(':', $temp);
$id = $temp[0];

$showDate = $params->get('showDate', 0);

$nullDate = $db->getNullDate();

jimport('joomla.utilities.date');
$date = new JDate();
$now = $date->toMySQL();

$related = array();

if ($option == 'com_content' && $view == 'article' && $id)
{

// sprawdzenie kategorii obecnego artykulu
$query = 'SELECT catid' .
' FROM #__content' .
' WHERE id = '.(int) $id;
$db->setQuery($query);
//Returns the first field of the first row returned from the most recent database query or false if the query failed.
if ($categid = trim($db->loadResult()))
{




// select other items based on the metakey field 'like' the keys found
$query = 'SELECT a.id, a.title, DATE_FORMAT(a.created, "%Y-%m-%d") AS created, a.sectionid, a.catid, cc.access AS cat_access, s.access AS sec_access, cc.published AS cat_state, s.published AS sec_state,' .
' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'.
' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'.
' FROM #__content AS a' .
' LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id' .
' LEFT JOIN #__categories AS cc ON cc.id = a.catid' .
' LEFT JOIN #__sections AS s ON s.id = a.sectionid' .
' WHERE a.catid = '.(int) $categid.
' AND a.state = 1' .
' AND a.access <= ' .(int) $user->get('aid', 0) .
//' AND ( a.metakey LIKE "%'.implode('%" OR a.metakey LIKE "%', $likes).'%" )' .
' AND ( a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' )' .
' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )'.
' ORDER BY a.ordering';
$db->setQuery($query);

$temp = $db->loadObjectList();


if (count($temp))
{
foreach ($temp as $row)
{

if (($row->cat_state == 1 || $row->cat_state == '') && ($row->sec_state == 1 || $row->sec_state == '') && ($row->cat_access <= $user->get('aid', 0) || $row->cat_access == '') && ($row->sec_access <= $user->get('aid', 0) || $row->sec_access == ''))
{
$row->route = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid));
$related[] = $row;
}
}
}
unset ($temp);

}
}

return $related;
}
}



mod_itemsfromcat.php


<?php


// no direct access
defined('_JEXEC') or die('Restricted access');

// Include the syndicate functions only once
require_once (dirname(__FILE__).DS.'helper.php');

$list = modItemsFromCatHelper::getList($params);

if (!count($list)) {
return;
}

$showDate = $params->get('showDate', 0);

require(JModuleHelper::getLayoutPath('mod_itemsfro mcat'));



oczywiscie jeszcze trzeba sobie zrobic mod_itemsfromcat.xml oraz
katalog tmpl w ktorym bedzie plik
default.php - to mozna skopiowac z relateditems.

Pozdrowienia !

m-mike

zwiastun
02-04-2008, 00:45
Przeczytaj dokładnie:
Lista artykułów z DANEJ kategorii.

Te moduły nie spełniają tego kryterium.
A dlaczego nie spełniają? W jednym i drugim można podać ID kategorii, z której ma wyświetlać odnośniki do artykułów?

mmike
02-04-2008, 01:00
Tak, ale dla każdej kategorii musiałbyś robić kolejny najbardziej popularne, poza tym sortowało by ci sie w zależności od hitów.

zwiastun
02-04-2008, 01:09
OK. Dopisałem na marginesie, bo przecież rozwiązałeś sobie problem, i to lepiej.