Kleine aanpassing in PHP (Joomla module)

1
Ik heb een script die items ophaalt uit een ,door de gebruiker aangegeven, categorie in Joomla. Nu wil ik het script vertellen als er een command aanwezig is in de post {alturl alternative url} dat het script de alt url moet pakken ipv de url die hij standaard fetched.

Heb ik al eens eerder gedaan met een andere module, dat ziet er zo uit.
Originele:

Code: Selecteer alles

     if($item->access <= $aid ) { 
            $data[$key]->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->sectionid)); 
        } else { 

        $data[$key]->link = JRoute::_('index.php?option=com_user&view=login'); 

        }
Aangepast naar:

Code: Selecteer alles

// modified to look for alternate url 
                   // you can add the following {alturl alternative url} to document and it will use that 
                        
              preg_match_all('/\{alturl (.*)\}/U', $item->introtext, $matches); 

                   foreach( $matches[1] as $alturl) 
              { 
                   $item->introtext = str_replace("{alturl $alturl}", "", $item->introtext); 
               }                        


           if($item->access <= $aid ) { 
                        if (!empty ($alturl)){ 
                            $data[$key]->link = $alturl; 
                        } else {                                

                            $data[$key]->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->sectionid)); 
                        } 

               } else { 

            $data[$key]->link = JRoute::_('index.php?option=com_user&view=login'); 

           } 

                        // end of modification
Nu wil ik hetzelfde doen met een ander script maar ik heb geen idee wat ik precies moet veranderen. Ik hoop dat iemand mij wat verder kan helpen tegen een kleine vergoeding. Ik denk dat het niet al te veel werk zal zijn voor iemand die verstand heeft van PHP.

Code: Selecteer alles

// no direct access
defined('_JEXEC') or die('Restricted access');
require_once (JPATH_SITE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');

$database					=& JFactory::getDBO();
$mosConfig_absolute_path	= JPATH_ROOT;
$mosConfig_live_site 		= JURI :: base();    

global $mosConfig_absolute_path, $mosConfig_live_site, $mainframe, $database, $_MAMBOTS;

$document = JFactory::getDocument();
$document->addStyleSheet(JURI::base() . 'modules/mod_yj_newsflash/stylesheet.css');

echo "<!-- http://www.Youjoomla.com  Youjoomla Newslash Module V3 for Joomla 1.5 starts here -->	";
		   
	$now		= date('Y-m-d H:i:s');
	$database 	=& JFactory::getDBO();
	$nullDate 	= $database->getNullDate();
	
	
	$get_items 		= $params->get('get_items',1);
	$nitems 		= $params->get ('nitems',4);
	$chars 			= $params->get ('chars',40);
	$imgwidth		= $params->get('imgwidth',"40px");
	$imgheight		= $params->get('imgheight',"40px");
	$imgalign 		= $params->get('imgalign',"left");
	$ordering 		= $params->get('ordering',3);// 1 = ordering | 2 = popular | 3 = random 
	$showimage 		= $params->get('showimage',1);
	$showrm 		= $params->get('showrm',1);
	$showtitle 		= $params->get('showtitle',1);
	$specificitems 	= $params->get('specificitems','');
	$comments 		= $params->get('comments','0');	
	
	if($ordering ==1){
		$order = 'ordering';
	}elseif($ordering == 2){
		$order = 'hits';
	}elseif ($ordering == 3){
		$order = 'RAND()';
	}

	$db			=& JFactory::getDBO();
	$user		=& JFactory::getUser();
	$userId		= (int) $user->get('id');
	$aid		= $user->get('aid', 0);
	
	$contentConfig = &JComponentHelper::getParams( 'com_content' );
	$access		= !$contentConfig->get('shownoauth');
	
	$nullDate	= $db->getNullDate();
	
	$date =& JFactory::getDate();
	$now = $date->toMySQL();
	$where		= 'a.state = 1'
		. ' 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).' )'
		;
	if(!empty($specificitems)){
		$where .= ' AND a.id IN ('.$specificitems.')';
	}else{
	    $where .= ' AND cc.id = '.$get_items.'';
	}

	//generate comments nr
	$select_comment = '';
	$from_comment = '';
	$comment_error = 0;
	if($comments > 0){
		switch($comments){
			case 1:
				//see if JoomlaComment is installed
				$database->setQuery( "SELECT id FROM #__components WHERE admin_menu_link = 'option=com_comment'" );
				$id_component = $database->loadResult();
				if(isset($id_component) && $id_component > 0){
					$select_comment = ' count(com.id) as comments ';
					$from_comment = ' #__comment AS com ';
					$where_comment = ' com.contentid = ';					
				}else{
					$comment_error = 1;
				}
			break;
			case 2:
				//see if JoomlaComment is installed
				$database->setQuery( "SELECT id FROM #__components WHERE admin_menu_link = 'option=com_jcomments'" );
				$id_component = $database->loadResult();
				if(isset($id_component) && $id_component > 0){
					$select_comment = ' count(com.object_id) as comments ';
					$from_comment = ' #__jcomments AS com ';
					$where_comment = ' com.object_id = ';					
				}else{
					$comment_error = 1;
				}
			break;
			case 2:
				//see if JoomlaComment is installed
				$database->setQuery( "SELECT id FROM #__components WHERE admin_menu_link = 'option=com_JomComment'" );
				$id_component = $database->loadResult();
				if(isset($id_component) && $id_component > 0){
					$select_comment = ' count(com.object_id) as comments ';
					$from_comment = ' #__jcomments AS com ';
					$where_comment = ' com.object_id = ';					
				}else{
					$comment_error = 1;
				}
			break;
			default:
				$comment_error = 1;
			break;			
		}
	}

	$sql = 'SELECT a.*, ' .
	' 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,'.
	' cc.title as cattitle, '.
	' s.title as sectitle '.
	' FROM #__content AS a' .
	' INNER JOIN #__categories AS cc ON cc.id = a.catid' .
	' INNER JOIN #__sections AS s ON s.id = a.sectionid' .
	' WHERE '. $where .'' .
	($access ? ' AND a.access <= ' .(int) $aid. ' AND cc.access <= ' .(int) $aid. ' AND s.access <= ' .(int) $aid : '').
	' AND s.published = 1' .
	' AND cc.published = 1' .
	' ORDER BY '.$order .' LIMIT 0,'.$nitems.'';
	$database->setQuery( $sql );
	$load_items = $database->loadObjectList();

     // error_reporting(E_ALL);
	 
	require_once('modules/mod_yj_newsflash/lib/slike.php');
	foreach ( $load_items as $row ) {
	
		if($comments > 0 && $comment_error == 0){
			$sql = 'SELECT '.
			$select_comment.
			' FROM '.
			$from_comment.		
			' WHERE '.
			$where_comment.$row->id;
			$database->setQuery( $sql );
			$comments_results = $database->loadResult();	
		}
			
		$date = JHTML::_('date', $row->created, '%d-%m-%Y');
		$intro 	= substr(strip_tags($row->introtext),0,$chars)."";
		$link = ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid);
		$img_url = article_image($row);
		$img_out = '';
		if(isset($img_url) && $img_url != "") $img_out="<a href=\"".JRoute::_($link)."\"><img src=\"".$img_url."\" border=\"0\" height=\"".$imgheight."\" align=\"".$imgalign."\" title=\"".$row->title." \" width=\"".$imgwidth."\" alt=\"\"/></a>";
		echo "<div class=\"yjnewsflash\">";
		if($showimage == 1){
			if($imgalign == 'left' || $imgalign == 'right' || $imgalign == 'top'){
				if($imgalign == 'top'){
					echo '<div class="nfimgpos">';
				}
				if(isset($img_url) && $img_url != "") echo $img_out;
				if($imgalign == 'top'){
					echo '</div>';
				}
			}
		}
		
		if($showtitle == 1){
			echo '<div class="yjnf_descr">';		
				echo "<a class=\"yjnewsflash_title\" href=\"".JRoute::_($link)."\">".$row->title."</a>";
			echo '</div>';			
		}
		if(isset($comments_results) && $comments_results > 0){
			echo '<div class="yjnf_comm">';
				echo $comments_results;
			echo '</div>';
		}
		
		
		echo '<div class="yjnf_descr">';				
			echo "<p>".$intro."</p>";
		echo '</div>';

		if($showimage == 1){
			if($imgalign == 'bottom'){
				echo '<div class="nfimgpos">';
				if(isset($img_url) && $img_url != "") echo $img_out;
				echo '</div>';
			}
		}

		$show_cat_title = $params->get('show_cat_title',1);
		$showdate = $params->get('showdate',1);
		
		if ($show_cat_title ==1){
			$showcat_title="<!-- The word IN was removed -->&nbsp;".$row->cattitle."<br />";
		}else{
			$showcat_title="";
		}

		if ($showdate ==1){
			$show_date=$date;
		}else{
			$show_date="";
		}

		if($showdate == 1 || $show_cat_title ==1){
			echo "<span class=\"yjnewsflash_date\">".$showcat_title."".$show_date."</span>";
		}
		if($showrm == 1){
			echo "<span class=\"yjnsreadon\"><a class=\"yjns_rm\" href=\"".JRoute::_($link)."\">Read more</a></span>";
		}
		echo "</div>\n";
		
		unset($comments_results);
	}
?>
Articles staan in de DB en de url waar hij mee komt is (domein) /component/content/article/(cat)/(artikel).

Ik ben meestal vanaf een uur of 1 online dus mocht je nog vragen hebben PM maar, ik zal het forum in de gaten houden. Alvast bedankt voor de hulp.

Re: Kleine aanpassing in PHP (Joomla module)

2
Aufgeloest.

van:

Code: Selecteer alles

 $link = ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid);
naar:

Code: Selecteer alles

$link = preg_match_all('/\{alturl (.*)\}/U', $row->introtext, $matches); 
      foreach( $matches[1] as $alturl) 
      { 
        $row->introtext = str_replace("{alturl $alturl}", "", $row->introtext); 
      }

      if ($row->access <= $aid) {
           if(!empty($alturl)) {
               $link = $alturl;
           } else {
               $link = ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid);
           }
      }
In principe dus hetzelfde maar dan anders. Had trouwens wat meer mensen met script kennis verwacht of hebben ze allemaal kerstvakantie?

Re: Kleine aanpassing in PHP (Joomla module)

4
hhh schreef:Had trouwens wat meer mensen met script kennis verwacht of hebben ze allemaal kerstvakantie?
Gezien je vraag denk ik niet dat je onze uurtarieven wilde betalen. Vandaar dat ik je vraag even genegeerd had. Het vragen van een klein PHP vraagje is voor ons ook meestal niet zo interessant. Ik krijg vaak van die PHP vraagjes van die doe het zelver osCommerce bouwers. Die bouwen de hele webwinkel zelf, dan gaat er iets stuk, en verwachten ze dat ik in 5 minuten telefonisch even het antwoord weet.

Alleen al al hun code doorpluizen op zoek naar waar het misgaat of alleen al de hele administratie van factureren op zich, betalingsrisico en het hele gedoe er omheen, maakt dat ik niet wil werken voor klanten waar ik niet minimaal een paar uur kan rekenen.

Ik denk dat er meer zijn zoals ons, en dat PHP vragen het dus niet zo goed zullen doen op het forum tenzij er ook mensen zijn zoals jijzelf. Mensen die het leuk vinden om, naast dat ze er mogelijk wat mee verdienen, het leuk vinden er meer over te leren.
Nu op mijn weblogs:
Advertentie

Met Shopify maak je zelf je eigen webwinkel dankzij meer dan honderd thema’s en de complete appstore. Shopify sluit ook goed aan op dropshippers. De software is technisch volledig SEO-geoptimaliseerd en biedt alle sociale media-integraties. Meer info op Shopify.com.

Re: Kleine aanpassing in PHP (Joomla module)

5
Dirkjan schreef:
hhh schreef:Had trouwens wat meer mensen met script kennis verwacht of hebben ze allemaal kerstvakantie?
Gezien je vraag denk ik niet dat je onze uurtarieven wilde betalen. Vandaar dat ik je vraag even genegeerd had. Het vragen van een klein PHP vraagje is voor ons ook meestal niet zo interessant. Ik krijg vaak van die PHP vraagjes van die doe het zelver osCommerce bouwers. Die bouwen de hele webwinkel zelf, dan gaat er iets stuk, en verwachten ze dat ik in 5 minuten telefonisch even het antwoord weet.

Alleen al al hun code doorpluizen op zoek naar waar het misgaat of alleen al de hele administratie van factureren op zich, betalingsrisico en het hele gedoe er omheen, maakt dat ik niet wil werken voor klanten waar ik niet minimaal een paar uur kan rekenen.

Ik denk dat er meer zijn zoals ons, en dat PHP vragen het dus niet zo goed zullen doen op het forum tenzij er ook mensen zijn zoals jijzelf. Mensen die het leuk vinden om, naast dat ze er mogelijk wat mee verdienen, het leuk vinden er meer over te leren.
Ja, dat begrijp ik. Probleem bij mijn vraag was dat het net tussen een snippet en een serieuze 'script klus' in zat. Op andere fora heb ik de hulp ook niet gekregen, ook niet na het bieden van $50...niet slecht voor een half uurtje werk, toch?

Had uiteindelijk zelf de variables al redelijk door en een vriend van me heeft het afgemaakt.