The Joomla! Forum ™



Forum rules


Forumregeln



Post new topic Reply to topic  [ 10 posts ] 
Author Message
PostPosted: Wed Sep 05, 2007 6:08 pm 
Joomla! Apprentice
Joomla! Apprentice

Joined: Sun Aug 20, 2006 8:56 pm
Posts: 21
Location: Muenster, Germany
Hallo,

ich suche jemanden, der mir ein kleines "loadmodule"-Problem löst: Ich möchte ein Menü (es wird nur einen einzigen Blog-Category-Menüeintrag haben, nämlich "News") nur dann anzeigen lassen, wenn in der zugehörigen Caegory auch tatsächlich aktive und publizierte Content Items (nämlich News) sind. Normalerweise würde ein Menü-Item ja immer angezeigt, und man kommt beim Klick auf eine Fehlerseite "There are no Items to display" - stattdessen soll halt das Menü gar nicht erst geladen werden.

Ich stelle mir das so vor, dass man eine Zeile Code ins Template schreibt, die
a) In der Datenbank nachsieht, welche Content Items in Category "20" (oder so) auf "pubished" stehen und dann
b) mit "if items > 0" einfach mosLoadModules ( 'user3') aufruft (an der Position steht dann das ein-/auszublendende Menü´).
Sowas muss doch machbar sein, oder?

Ich hatte die Frage übrigens schonmal im englischen Forum gepostet, aber da hat sich keiner gerührt. Vielleicht mit einem kleinen finanziellen Anreiz ... Bei Interesse einfach eine PN an mich!

Güße,
cooperate

_________________
Greetings from cooperate


Top
 Profile  
 
PostPosted: Thu Sep 27, 2007 9:03 am 
User avatar
Joomla! Apprentice
Joomla! Apprentice

Joined: Fri Aug 19, 2005 7:18 am
Posts: 40
Location: Austria
Hallo,

Hast du das Problem schon gelöst? Das Coding würde so ca. sein

Code:
$query = "SELECT * FROM #__content WHERE state='1' AND catid='20'";
$database->setQuery($query);
$items = $database->loadObjectList();
if (count($items) > 0) {
  mosLoadModules ( 'user3') ;
}


Kostet nix ;-)

lg


Top
 Profile  
 
PostPosted: Thu Sep 27, 2007 2:24 pm 
Joomla! Apprentice
Joomla! Apprentice

Joined: Sun Aug 20, 2006 8:56 pm
Posts: 21
Location: Muenster, Germany
Genial & funktioniert tadellos.

Nee, funktioniert doch nicht tadellos sondern leider nur teilweise. Das liegt aber nicht am Code, sondern an meiner ungenauen Beschreibung: Das Menü wird auch dann eingeblendet, wenn der Content auf "published, but pending" steht (das genau war mein Plan: Content zeitgesteuert online stellen)...

Es müsste also wahrscheinlich noch ne Datumsabfrage dazukommen, die bei den grundsätzlich publizierten Inhalten (state='1') dann das Serverdatum mit "publish_up" und "publish_down" des jeweiligen Items vergleicht... Wärst Du in der Lage, das zu ergänzen?

Als Alternative zur Entlohnung würde ich übrigens eine Spende an Joomla.org / Open Source Matters anbieten.

Grüße von
cooperate

_________________
Greetings from cooperate


Last edited by cooperate on Thu Sep 27, 2007 2:53 pm, edited 1 time in total.

Top
 Profile  
 
PostPosted: Thu Sep 27, 2007 3:57 pm 
Joomla! Apprentice
Joomla! Apprentice

Joined: Sun Aug 20, 2006 8:56 pm
Posts: 21
Location: Muenster, Germany
Manchmal braucht man ja nur den richtigen Anstoß. Habe tommad's Vorschlag folgendermaßen erweitert...
Code:
<?php
  $now = time();
  $query = "SELECT * FROM #__content WHERE state='1' AND catid='20' AND UNIX_TIMESTAMP(publish_up)<$now AND (UNIX_TIMESTAMP(publish_down)>$now OR publish_down='0000-00-00 00:00:00')";
  $database->setQuery($query);
  $inhalte = $database->loadObjectList();
  if (count($inhalte) > 0) {
    mosLoadModules ( 'user3') ;
  }
?>

...und alles scheint gut zu sein. Oder habe ich als blutiger Anfänger da was übersehen?

cooperate

_________________
Greetings from cooperate


Top
 Profile  
 
PostPosted: Fri Oct 17, 2008 3:41 pm 
Joomla! Apprentice
Joomla! Apprentice

Joined: Sun Aug 20, 2006 8:56 pm
Posts: 21
Location: Muenster, Germany
Hallo,

ich bemühe mich gerade, mein in die Jahre gekommenes Template auf Joomla 1.5 umzustellen. Kann mir ein PHP-Experte mal dabei helfen, den folgenden alten Code auf die neue Syntax umzuschreiben?
Code:
<?php
  $now = time();
  $query = "SELECT * FROM #__content WHERE
            state='1'
            AND catid='20'
            AND UNIX_TIMESTAMP(publish_up)<$now
            AND (UNIX_TIMESTAMP(publish_down)>$now
            OR publish_down='0000-00-00 00:00:00')";
  $database->setQuery($query);
  $inhalte = $database->loadObjectList();
  if (count($inhalte) > 0) {
    mosLoadModules ( 'user3') ;
  }
?>


Es kann ja eigentlich nicht so schwer sein, aber schon der Anblick von http://api.joomla.org/ treibt mir den Schweiß auf die Stirn. Ist nicht gerade anfängergeeignet, das Zeugs...

PS: Der obige Code dient übrigens dazu, ein Menü (hat nur ein "Blog Content Category" Item) nur dann zu laden, wenn es darunter aktuell auch veröffentlichte Content Items gibt.

_________________
Greetings from cooperate


Top
 Profile  
 
PostPosted: Fri Oct 17, 2008 7:14 pm 
Joomla! Guru
Joomla! Guru

Joined: Thu Aug 18, 2005 10:51 pm
Posts: 697
Location: Austria
Not really that difference, i would do that (untestet):

Code:
$db         = & JFactory::getDBO();
$nullDate = $db->getNullDate();
$datenow =& JFactory::getDate();

$query = 'SELECT * FROM #__content WHERE'
            . ' state=\'1\''
            . ' AND catid=\'20\''
            . ' AND UNIX_TIMESTAMP( publish_up ) < ' . $datenow
            . ' AND (UNIX_TIMESTAMP(publish_down) > ' . $datenow
            . ' OR publish_down = \'' . $nullDate . '\')'
;
$db->setQuery($query);
$inhalte = $db->loadObjectList();
if( count( $inhalte ) > 0 ) { ?>
    <jdoc:include type="modules" name="user3" />
    <?php
}

_________________
http://www.joomx.com - custom extensions and development
http://www.joomlasupportdesk.com - support, migration, training and consulting
Member of the German Joomla Translation Team


Top
 Profile  
 
PostPosted: Thu Apr 09, 2009 1:49 pm 
User avatar
Joomla! Apprentice
Joomla! Apprentice

Joined: Thu Apr 09, 2009 1:22 pm
Posts: 6
:D

Jo
könnt ihr mir ach sagen wie ich dies raparieren kann?

[b]jtablesession::Store Failed
DB function failed with error number 1146
Table 'lovedate@1-tsunami.jos_session' doesn't exist SQL=INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` ) VALUES ( '5ef968c1d28064b44c0d4a9cd1a72473','1239284682','','0','1','0' )[b]

Bitte HILFT mir!!


Top
 Profile  
 
PostPosted: Thu Apr 09, 2009 1:50 pm 
User avatar
Joomla! Apprentice
Joomla! Apprentice

Joined: Thu Apr 09, 2009 1:22 pm
Posts: 6
jtablesession::Store Failed
DB function failed with error number 1146
Table 'lovedate@1-tsunami.jos_session' doesn't exist SQL=INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` ) VALUES ( '5ef968c1d28064b44c0d4a9cd1a72473','1239284682','','0','1','0' )


Top
 Profile  
 
PostPosted: Thu Apr 09, 2009 2:06 pm 
Joomla! Apprentice
Joomla! Apprentice

Joined: Sun Aug 20, 2006 8:56 pm
Posts: 21
Location: Muenster, Germany
Auf die konkrete Frage habe ich spontan keine Antwort, aber ich hatte den Code von mic seinerzeit auch anpassen müssen, weil er bei mir nicht lief wie beabsichtigt. Mein Code ist jetzt folgender:
Code:
<?php /* Kategorie "Aktuelles" (catid=29, Item-ID des Menuepunkts ist item=63) soll nur eingeblendet werden, falls Beitraege vorhanden und innerhalb des "publish_up" Zeitraums sind. */
   $db =& JFactory::getDBO();
   $jetzt = time();
   $nullDate = $db->Quote($db->getNullDate());
   $query = "SELECT * FROM #__content WHERE state=1 AND catid=29 AND ( publish_up = $nullDate OR publish_up <= CURRENT_TIMESTAMP ) AND ( publish_down = $nullDate OR publish_down >= CURRENT_TIMESTAMP )";
   $db->setQuery($query,0,1);
   $inhalte = $db->loadObjectList();
   if( count($inhalte) < 1 ) :
   ?>   
      <style type="text/css">
         .item63 {
            display: none;
         }
      </style>
<?php endif; ?>


Die Kategorien- und Item-ID musst du dann natürlich an deine jeweilige Situation anpassen. Vielleicht hilft ja das?

Grüße von cooperate!

_________________
Greetings from cooperate


Top
 Profile  
 
PostPosted: Thu Apr 09, 2009 2:07 pm 
User avatar
Joomla! Apprentice
Joomla! Apprentice

Joined: Thu Apr 09, 2009 1:22 pm
Posts: 6
danke habe es gelöst


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 10 posts ] 



Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group