i m using yootheme joomla template in joomla 1.5.x, my problem is that i want to
display modules (if enabled ) on front page, no joomla content ( i.e. localhost/project or localhost/project/index.php)
and
display contents & modules ( if enabled ) both on inner pages
my problem is that on front page (template/yoo_symphony/index.php) if i write
<jdoc:include type="component" />
then front page display only contents , no modules :(
and if i write as suggested on here and here
$pageview = JRequest::getVar('option','','GET');
if(!empty($pageview) ) : ?>
<jdoc:include type="component" />
<?php endif; ?>
then front page display all modules but inner pages not display any contents
i have read many articles regarding this, but no hope...:(
please provide me a perfect solution so that i can display modules on front page as well as content on inner pages
NOTE: if i write print_r($_GET) on http://localhost/project or http://localhost/project/index.php then it results
Array
(
[option] => com_content
[view] => article
[id] => 44
[Itemid] => 53
)
means there is url rewriting on front page, my main problem is that how to distiniguish front page from other pages??
ANSWER:
I got answer from my senior, Need to do below steps
1> go to joomla administrator side
2> then navigate to menu-->main menu [ Menu Item Manager :[mainmenu] ]
3> click to Home ( i.e. your default menu item )[ Menu Item: [ Edit ] ]
4> now click on change type [ Change Menu Item ]
5> select Internel link-->Articles -->Front Page -->Front Page Blog Layout
6> Apply & save
7> now go to index.php and replace <jdoc:include type="component" /> with
<?php if($_GET['view'] !== 'frontpage' ) :?>
<jdoc:include type="component" />
<?php endif;?>
NOTE : if i write print_r($_GET) on http://localhost/project or http://localhost/project/index.php then it returns
Array
(
[option] => com_content
[view] => frontpage // see now
[id] => 44
[Itemid] => 53
)
I do this on several sites when I really don't need anything but modules on the home page. This works perfectly everywhere I have ever used it. Just add this in your template.
<?php
$menu = &JSite::getMenu();
if ($menu->getActive() != $menu->getDefault()) {
?>
<jdoc:include type="component" />
<?php } ?>
One more thing to mention, In this way you will not get the Search results, as they are displayed on default page. - If you create a search page menu item, which you should if you want to control the modules on that page, then this will not affect the search page at all.
Related
I am in process of creating a new website. I have done my basic HTML/CSS/JQuery code to generate the webpage. The website is going to display images. Now my questions are around where the images are supposed to be stored and how to retrieve them. I did research but I am all over the place with the architecture.
My understanding is that HTML page will make a query to a web server (like Apache) and get the data/images back and display it? The function of the web server is to provide the data based on the query, is that right? Where is the data like jpeg images, their metadata, link between gallery and images would be stored? Is there another layer of DB somewhere? Would the architecture be HTML<-->Apache<-->DB ?
Or do I just put my images in a database and host the data their. Basically taking out Apache from the architecture? The queries are going to depend only on the current stage in the navigation tree (nothing user specific).
There is no need for DB to use images. It works more this way:
HTML <-> Apache <-> Image
because apache has the ability to deliver files.
Now, there are several differents way of working.
For example, the image can be load dynamically in a php files with images header. In this case, the scheme will be :
HTML <-> Apache <-> PHP <-> Image
To do it, you simply put your images in a folder where apache's user can access.
For example you can have the following structure in /var/www/sitename:
index.html
img / my_image.jpg
And in index.html
<img src="img/my_image.jpg" ... />
Edit to answer you question :
create a php script that will generate the json array, for example :
page.php
<?php
switch($_GET['link']){
case 'link1':
images_links = array(
'path/to/img1',
'path/to/img2',
...
);
break;
case 'link2':
images_links = array(
'path/to/img3',
'path/to/img4',
...
);
break;
}
echo json_encode(images_links);
?>
Let's guess your html is
<a>link1</a>
<a>link2</a>
<img class="imgToChange" src="..."/>
<img class="imgToChange" src="..."/>
...
Then you will add this javascript function to your html
function updateImages(clicked_link){
// get the text of the link
link_text = clicked_link.innerHTML;
// send a request to page.php to get images's urls
$.get( "path/to/page.php?link="+link_text, function( data ) {
// data will be your json array
images_links = data;
// get a table of all images elements that can be changed
var images = document.getElementsByClassName("imgToChange");
// for each image in the json array
for(var k=0; k<images_links.length; k++){
images[k].src = images_links[k];
}
});
}
And you just have to call this function when a link is clicked
<a onclick="updateImages(this)">link1</a>
<a onclick="updateImages(this)">link2</a>
<img class="imgToChange" src="..."/>
<img class="imgToChange" src="..."/>
...
Im using CHtml::link() for attachment in my grid view and if i click on it, it will open in new tab to display.
My doubt is how can i use font awesome icon to display attachment in grid. Currently it showing from table but i want to display <i class="fa fa-paperclip" aria-hidden="true"></i> this icon for that column.
array(
'name' => 'invoice_attachment',
'value' => 'CHtml::link($data->invoice_attachment, Yii::app()->request->baseUrl.$data->invoice_attachment, array("target"=>"_blank"))',
'type' => 'raw',
),
The above code is my current output for link.
CHtml::link($text, $url, $htmlOptions) method accepts 3 parameters:
$text - this is what you want, right now youre setting here $data->invoice_attachment (propably file name) - change this to your <i> string
$url - a URL or an action route that can be used to create a URL
$htmlOptions - additional HTML attributes
Change $text param and that's all.
I'm using yiibooster and it is really good extension for the frontend, my issues now is that I want to remove the red * that is rendered in the required fields but maintaining the required validator in the model, anyone knows how to do this????
thankss
This is an example of a label generated by a required field validator:
<label for="User_email" class="required">
Email Address <span class="required">*</span>
</label>
Therefore, you can hide it by adding this class to your site's CSS:
span.required {
display: none;
}
If you want to achieve what you want easily, I suggest you to do like below, which is simplest way(in my view point):
Just try to find * selector(the ID or CLASS) name.(using a firebug or any inspector)
Then just do like below in your document.ready():
$(SELECTOR).remove();
NOTES
THE * MIGHT BE CREATED DYNAMICALLY
THIS IS JUST AN SUGGESTION, YOU CAN FIND ANY OTHER POSSIBLE WAYS SUCH AS CHANGING THE CSS CLASS IN ORDER TO DO DISPLAY:NONE OR SOURCE MODIFICATION
<?php echo $form->textFieldGroup($model, 'username',array('label'=>Yii::t('model','Username'))); ?>
or edit line 1223 of TbActiveForm.php from
echo $this->labelEx($model, $attribute, $options['labelOptions']);
to
echo $this->label($model, $attribute, $options['labelOptions']);
Red * is adding according to your validators definition in your model. you have two options.
First in your model add On => 'scenario name' for required validator for the property you want. so you can control the behavior of yii-booster components because they only apply those rules which matches the scenario of the model. for example:
array('password_repeat', 'required', 'on'=>'register'),
It will show Red * only in register scenario (if you set it via $model->setScenario('register');) and in normal times no red * will shown.
Another option for you is when you are creating the form element based on the property marked required by validator rules in model, you can prevent that * from showing but this way will not ignore that validation rule and if you try to submit the form while this form field is empty you will get error from yii (because you just solve showing but in background you have your required validator). for this method, you only need to provide label in your yii-booster form element:
<?php echo $form->textFieldGroup($model,'textField',
array(
'wrapperHtmlOptions' => array(
'class' => 'col-sm-5',
),
'hint' => 'In addition to freeform text, any HTML5 text-based input appears like so.',
>>>>> 'label' => 'Your new value for label which will have no red *',
)
); ?>
On the admin side, I've used a WYSIWYG editor for all textareas.
When we format that with bold for example, the following string is stored in the database:
<b>hello bold</b>
However, when I try to see that text in bold, I, instead see something like this:
"<b>hello bold</b>"
The goal (so I suppose) would be to remove those double quotes, in order to allow us to see the proper formatted text.
Here's the widget call:
<?php $this->widget('bootstrap.widgets.BsListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
));
Here's the view he is calling:
<b><?php echo CHtml::encode($data->getAttributeLabel('description')); ?>:</b>
<?php echo $data->description; ?><!-- Removed the encode from this line-->
<br />
If I remove the CHtml::encode, this works, but, if I have like 500 textareas, should I go to each view and remove this CHtml::encode :s
Any clue?
You can solve this with PHP "html_entity_decode" function
take a look here : http://www.yiiframework.com/forum/index.php/topic/22237-clistview-raw-html/
<?php
$orig = "I'll \"walk\" the <b>dog</b> now";
$b = html_entity_decode($a);
echo $b; // I'll "walk" the <b>dog</b> now
?>
Ref: http://www.php.net/html_entity_decode
Update
You should remove chtml::encode when you print html tags contain data. thats the issue here.
The usage of encode() is to Encode special characters into HTML entities http://yiiframework.com/doc/api/1.1/CHtml#encode-detail
Hello and thanks for reading my question. I have a typical list view:
<?php $this->widget('bootstrap.widgets.TbListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'emptyText'=>'No Jobs',
)); ?>
In my _view file I have a div and a button that slideToggles the div. If I just put the Javascript at the top of the page, it does not work because the results are dynamic and the name of the div changes with the id returned, eg:
id="detailsDiv-<?php echo $data->id_employer_contract;?>"
The problem is in my Javascript, which is as follows:
<?php Yii::app()->clientScript->registerScript('details', "$('#details-$data-id_employer_contract').click(function(){
$('#detailsDiv-$data->id_employer_contract').slideToggle();
return false;});");?>
How can I make this Javascript code dynamic? Meaning, how can I loop through the id? I tried adding the code to the listview property ajaxUpdate but it's still not working. Can someone tell me how I can loop a Javascript in a list view?
Add the id to your toggle buttons as data attribute:
<button class="toggleDetails" data-id="<?php echo $data->id_employer_contract ?>">
Then you can access these data attributes like this js:
<?php Yii::app()->clientScript->registerScript('toggleDetails', "
$('.toggleDetails').click(function(e){
var id = $(this).data('id');
$('#detailsDiv-' + id).slideToggle();
e.preventDefault();
});
", CClientScript::POS_READY) ?>
NOTE: You should not put this javascript into _view.php but into the main file where you render the List View. You only need this one single snippet to deal with all your buttons.