- Step 1: Check if the user is really an administrator: In many cases, this error happens when the person is trying to login with a user who’s not an administrator (usually this happens when the person has two users on the website, and he’s logging in with the wrong user) or who’s no longer an administrator (someone might have revoked administrative access for that user). Checking if the user is an administrator is easy – all you need to do is to check if the id of the user is assigned to the right group in the table jos_user_usergroup_map (replace jos with your table prefix) usually it is 8 If all is OK (the user is assigned to the right group) then we move to the next step… (If not then we fix the problem)
-
Step 2: Check if the ACL tables are not corrupt:
This is where it gets tricky since Joomla’s ACL tables are not that easy
to understand. However, if the login problem is because of ACL
corruption, then in 99% of the cases the error lies somewhere in the jos_viewlevels and/or the jos_usergroups
tables. We suggest that you look at a clean Joomla database and compare
the two tables of that database with those in your website’s database.
If the ACL tables are corrupt, then we manually fix them (fixing these
tables should only be done by an expert) – if not, then (you’ve guessed
it!) we move to the next step.
-
Step 3: Check the jos_assets table: If all else fails, then (sadly) the problem almost certainly lies in the jos_assets table (which is, by far, the scariest table in Joomla – because a simple mistake in that table can cause a total collapse of the website). The two most common causes in the jos_assets table that might lead to this problem are:
- Missing entry for the com_admin row.
- Wrong rules field for the com_admin row. The rules field for that row should just contain “{}”. (two curly brackets)
Monday, February 13, 2017
Warning You Do Not Have Access to the Administrator Section of This Site
Sunday, January 15, 2017
Save Failed with the Following Error: Invalid Parent ID
Save Failed with the Following Error: Invalid Parent ID
And this clue has been leading me to the solution (BTW, first step with rebuilding the menu might be unnecessary, but I decided to leave it there - because can't harm, but might fix similar errors in menu system you are not aware of - yet):
- Go to the Menu Manager – Click on Menus, Menu Manager, Click on the ‘Rebuild’ button
- You will see a message that says:
Successfully rebuilt
- Go to the Category Manager – Click on Content, Category Manager, Click on the ‘Rebuild’ button.
- You will see a message that says:
Categories tree data successfully rebuilt.
- Edit all your parent categories and save them.
- Edit all your sub-categories and save them.
- Go back to the Article Manager, edit all the articles that were created with the ‘Invalid Parent ID” error message and save them again.
As you might guessed allready, the error was generated by the fact that the category tree structure was messed up for some reason.
If you fail then watch video for more solutions
Friday, November 13, 2015
Get it right
This blog solely is for Joomla professionals.
Being a Joomla professional sometimes we do get into trouble solving a problem while creating a Joomla website.
Many errors suddenly creep up and you may end up searching for solutions in Joomla forum and not find solution immediately. There could be some simple works, changes in your Joomla website that you need to do. Like for example changing the copyright field in the footer. Not everytime you will like to visit the Joomla forum for that. Not always you will find instant Joomla solutions at Joomla forum.
Here at this blog an effort is made to solve some of your Joomla problems that you encounter while working in Joomla.
The advantage is that you will find the solution here always and instantly just by seeing the title of post.
It will be fast and quick.
Being a Joomla professional sometimes we do get into trouble solving a problem while creating a Joomla website.
Many errors suddenly creep up and you may end up searching for solutions in Joomla forum and not find solution immediately. There could be some simple works, changes in your Joomla website that you need to do. Like for example changing the copyright field in the footer. Not everytime you will like to visit the Joomla forum for that. Not always you will find instant Joomla solutions at Joomla forum.
Here at this blog an effort is made to solve some of your Joomla problems that you encounter while working in Joomla.
The advantage is that you will find the solution here always and instantly just by seeing the title of post.
It will be fast and quick.
Thursday, May 28, 2015
Product fields in Joomla Virtuemart
Product Page Fields:
For category fields, look here http://forum.virtuemart.net/index.php?topic=97744.0
PLEASE see http://forum.virtuemart.net/index.php?topic=98505.0
Product Name
<?php echo $this->product->product_name ?>
Product SKU
<?php echo $this->product->product_sku ?>
Ask a question about this product
<a class="ask-a-question" href="<?php echo $url ?>" ><?php echo JText::_('COM_VIRTUEMART_PRODUCT_ENQUIRY_LBL') ?></a>
Short Description
<?php echo $this->product->product_s_desc ?>
Product Full Description
<?php echo $this->product->product_desc ?>
Product MAIN Image (the 0 is the column number for the 1st image)
<?php echo $this->product->images[0]->displayMediaFull('class="product-image"',false) ?>
Additional Images (>1 means all images past the 1st image)
<?php if(!empty($this->product->images) && count($this->product->images)>1) {
foreach ($this->product->images as $image) {
echo $image->displayMediaThumb('class="product-image"',true,'class="modal"'); //'class="modal"'
}
}
?>
Product Availability AS TEXT
<?php echo $this->product->product_availability; ?>
Product Availability As Picture
<?php echo JHTML::image(JURI::root().VmConfig::get('assets_general_path').'images/availability/'.$this->product->product_availability, $this-
>product->product_availability, array('class' => 'availability')); ?>
Minimum Order Level
<?php echo $this->product->min_order_level ?>
Maximum Order Level
<?php echo $this->product->max_order_level ?>
Product Unit
<?php echo $this->product->product_unit ?>
Product Weight
<?php echo $this->product->product_weight ?>
Product Weight Unit of Measure
<?php echo $this->product->product_weight_uom ?>
Product Length
<?php echo $this->product->product_length ?>
Product Width
<?php echo $this->product->product_width ?>
Product Height
<?php echo $this->product->product_height ?>
Product URL
<?php echo $this->product->product_url ?>
Product # In Stock
<?php echo $this->product->product_in_stock ?>
Product Availability Date
<?php echo $this->product->product_available_date ?>
Product Special 0 or 1 0 for no, 1 for yes.
<?php echo $this->product->product_special ?>
Product Packaging
<?php echo $this->product->product_packaging ?>
Create a link to the product's main category from the product page.
$catturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.JRequest::getInt('virtuemart_category_id',0));
<a href="<?php echo $catturl ?>"><?php echo $this->category->category_name ?></a>
Manufacturer Name
<?php echo $this->product->mf_name ?>
For category fields, look here http://forum.virtuemart.net/index.php?topic=97744.0
PLEASE see http://forum.virtuemart.net/index.php?topic=98505.0
Product Name
<?php echo $this->product->product_name ?>
Product SKU
<?php echo $this->product->product_sku ?>
Ask a question about this product
<a class="ask-a-question" href="<?php echo $url ?>" ><?php echo JText::_('COM_VIRTUEMART_PRODUCT_ENQUIRY_LBL') ?></a>
Short Description
<?php echo $this->product->product_s_desc ?>
Product Full Description
<?php echo $this->product->product_desc ?>
Product MAIN Image (the 0 is the column number for the 1st image)
<?php echo $this->product->images[0]->displayMediaFull('class="product-image"',false) ?>
Additional Images (>1 means all images past the 1st image)
<?php if(!empty($this->product->images) && count($this->product->images)>1) {
foreach ($this->product->images as $image) {
echo $image->displayMediaThumb('class="product-image"',true,'class="modal"'); //'class="modal"'
}
}
?>
Product Availability AS TEXT
<?php echo $this->product->product_availability; ?>
Product Availability As Picture
<?php echo JHTML::image(JURI::root().VmConfig::get('assets_general_path').'images/availability/'.$this->product->product_availability, $this-
>product->product_availability, array('class' => 'availability')); ?>
Minimum Order Level
<?php echo $this->product->min_order_level ?>
Maximum Order Level
<?php echo $this->product->max_order_level ?>
Product Unit
<?php echo $this->product->product_unit ?>
Product Weight
<?php echo $this->product->product_weight ?>
Product Weight Unit of Measure
<?php echo $this->product->product_weight_uom ?>
Product Length
<?php echo $this->product->product_length ?>
Product Width
<?php echo $this->product->product_width ?>
Product Height
<?php echo $this->product->product_height ?>
Product URL
<?php echo $this->product->product_url ?>
Product # In Stock
<?php echo $this->product->product_in_stock ?>
Product Availability Date
<?php echo $this->product->product_available_date ?>
Product Special 0 or 1 0 for no, 1 for yes.
<?php echo $this->product->product_special ?>
Product Packaging
<?php echo $this->product->product_packaging ?>
Create a link to the product's main category from the product page.
$catturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.JRequest::getInt('virtuemart_category_id',0));
<a href="<?php echo $catturl ?>"><?php echo $this->category->category_name ?></a>
Manufacturer Name
<?php echo $this->product->mf_name ?>
All Fields Above can be used for extra fields, and features on the product page.
For example. I use product weights of 0 to be items with free shipping. So, to display "FREE Shipping" to the user, I do this.
<?php if ($this->product->product_weight == 0) { ?>
<div>Free Shipping on this Item! Minimum Order Quantity <?php echo $this->product->min_order_level ?></div>
<?php }?>
So the code above shows free shipping, and the minimum quantity order amount.
You can do the same with most fields.
To display an icon, or text if a product is featured you can do this.
<?php if ($this->product->product_special == 1) { ?>
<div>SALE ITEM!!!!! </div>
<?php }?>
Tell the customer the stock is low, and they should order NOW!
<?php if ($this->product->product_in_stock <= 10) { ?>
<div>ONLY <?php echo $this->product->product_in_stock ?> In Stock. ORDER BEFORE IT'S TOO LATE</div>
<?php }?>
For example. I use product weights of 0 to be items with free shipping. So, to display "FREE Shipping" to the user, I do this.
<?php if ($this->product->product_weight == 0) { ?>
<div>Free Shipping on this Item! Minimum Order Quantity <?php echo $this->product->min_order_level ?></div>
<?php }?>
So the code above shows free shipping, and the minimum quantity order amount.
You can do the same with most fields.
To display an icon, or text if a product is featured you can do this.
<?php if ($this->product->product_special == 1) { ?>
<div>SALE ITEM!!!!! </div>
<?php }?>
Tell the customer the stock is low, and they should order NOW!
<?php if ($this->product->product_in_stock <= 10) { ?>
<div>ONLY <?php echo $this->product->product_in_stock ?> In Stock. ORDER BEFORE IT'S TOO LATE</div>
<?php }?>
Doing a Joomla Template Override is easy.
Open the view folder you want to change, THEN, the tmpl folder.
COPY the "default.php"
THEN< follow the steps below.
In your JOOMLA template folder. You create a folder called "html" then a folder called "com_virtuemart" in it.
Then for each view you want to override. Create a folder for it.
Then place your modified "default.php" an that views folder.
So , to override the product details page. You create YOUR_TEMPLATE/html/com_virtuemart/productdetails/default.php
Doing a Joomla Template override guarantees the view will use your modified default.php
FOR changing the css. What you do is copy the virtuemart css located in
com_virtuemart/assets/css/vmsite-ltr.css
THEN, add that to your joomla template css file. (or call it seperately, AFTER you put a copy in your Joomla template foler)
THEN, go to vmart configuration, and turn off virtuemart css
COPY the "default.php"
THEN< follow the steps below.
In your JOOMLA template folder. You create a folder called "html" then a folder called "com_virtuemart" in it.
Then for each view you want to override. Create a folder for it.
Then place your modified "default.php" an that views folder.
So , to override the product details page. You create YOUR_TEMPLATE/html/com_virtuemart/productdetails/default.php
Doing a Joomla Template override guarantees the view will use your modified default.php
FOR changing the css. What you do is copy the virtuemart css located in
com_virtuemart/assets/css/vmsite-ltr.css
THEN, add that to your joomla template css file. (or call it seperately, AFTER you put a copy in your Joomla template foler)
THEN, go to vmart configuration, and turn off virtuemart css
Custom Fields in Joomla Virtuemart
Custom Field Codes for Coders
S = String
I =Integer
P =Parent
B= Bolean (True)
D = Date
T = Time
M =Image
V =Cart Variant
A =Generic Child Variant
X=Editor
Y=Textarea
For example
<?php if ($field->field_type == S){
My Special String Output
} ?>
Using The Custom Field Type "String" for an extra field.
Warranty Display Example
1st Setup a Custom field type "string" called "warranty" like in the picture below.
Next Go Into a product, and apply the custom field "warranty" to the product.
Fill In the warranty text. 2 years, 3 years etc.
NEXT:: You need to create a position in your product details view for the warranty text.
<div id="warranty-text"><strong>This is the Warranty Div</strong>
<?php if (!empty($this->product->customfieldsSorted['warranty'])) {
$this->position='warranty';
echo $this->loadTemplate('customfields'); } ?></div>
Use the Custom field "IMAGE" to display a NON-cart Variant.
Free Shipping Icon on product page example.
1st Create a Custom field type "image" and name it "shipping icon" like the image below.
Next, upload your free shipping icon in "shop media files"
Go to edit product, and apply the custom field. Choose the image in the dropdown.
Error solution...
Warning: Invalid argument supplied for foreach()
default_customfields
or
default.php
In default.php
This is how the ontop is done
<?php if (!empty($this->product->customfieldsSorted['ontop'])) {
$this->position = 'ontop';
echo $this->loadTemplate('customfields');
} // Product Custom ontop end
?>
When you choose "cart variant" the default position will be in the add to cart form.
THEN,
the ONLY other default positions in the product layout is
"ontop"
THIS CODE IS IN views/productdetails/tmpl/default.php
if (!empty($this->product->customfieldsSorted['ontop'])) { ?>
<div class="product-fields">
<?php
$custom_title = null ;
foreach ($this->product->customfieldsSorted['ontop'] as $field){
if ($field->display) {
?><div class="product-field product-field-type-<?php echo $field->field_type ?>">
<?php if ($field->custom_title != $custom_title) { ?>
<span class="product-fields-title" ><?php echo JText::_($field->custom_title); ?></span>
<?php if ($field->custom_tip) echo JHTML::tooltip($field->custom_tip, JText::_($field->custom_title), 'tooltip.png');
} ?>
<span class="product-field-display"><?php echo $field->display ?></span>
<span class="product-field-desc"><?php echo jText::_($field->custom_field_desc) ?></span>
</div>
<?php
$custom_title = $field->custom_title;
}
} ?>
</div>
<?php } // Product Custom ontop end ?>
YOU can actually set your own positions anywhere. By copying this code, and renaming the "position"
YOU JUST change the 'ontop'
<?php if (!empty($this->product->customfieldsSorted['ontop'])) { ?>
<div class="product-fields">
<?php
$custom_title = null ;
foreach ($this->product->customfieldsSorted['ontop'] as $field){
if ($field->display) {
?><div class="product-field product-field-type-<?php echo $field->field_type ?>">
<?php if ($field->custom_title != $custom_title) { ?>
<span class="product-fields-title" ><?php echo JText::_($field->custom_title); ?></span>
<?php if ($field->custom_tip) echo JHTML::tooltip($field->custom_tip, JText::_($field->custom_title), 'tooltip.png');
} ?>
<span class="product-field-display"><?php echo $field->display ?></span>
<span class="product-field-desc"><?php echo jText::_($field->custom_field_desc) ?></span>
</div>
<?php
$custom_title = $field->custom_title;
}
} ?>
</div>
<?php } // Product Custom ontop end ?>
You can do your own location of custom field.
<?php if (!empty($this->product->customfieldsSorted['my-position'])) {
$this->position='my-position';
echo $this->loadTemplate('customfields');
}
?>
I try to use the below code after the price is displayed but nothing happens... i don't get the custom fields displayed.
<?php if (!empty($this->product->customfieldsSorted['my-position'])) {
$this->position='my-position';
echo $this->loadTemplate('customfields');
}
?>
Change .. my-position
.... to YOUR position
S = String
I =Integer
P =Parent
B= Bolean (True)
D = Date
T = Time
M =Image
V =Cart Variant
A =Generic Child Variant
X=Editor
Y=Textarea
For example
<?php if ($field->field_type == S){
My Special String Output
} ?>
Using The Custom Field Type "String" for an extra field.
Warranty Display Example
1st Setup a Custom field type "string" called "warranty" like in the picture below.
Next Go Into a product, and apply the custom field "warranty" to the product.
Fill In the warranty text. 2 years, 3 years etc.
NEXT:: You need to create a position in your product details view for the warranty text.
<div id="warranty-text"><strong>This is the Warranty Div</strong>
<?php if (!empty($this->product->customfieldsSorted['warranty'])) {
$this->position='warranty';
echo $this->loadTemplate('customfields'); } ?></div>
Use the Custom field "IMAGE" to display a NON-cart Variant.
Free Shipping Icon on product page example.
1st Create a Custom field type "image" and name it "shipping icon" like the image below.
Next, upload your free shipping icon in "shop media files"
Go to edit product, and apply the custom field. Choose the image in the dropdown.
Using a String for external images
Create a Custom field type "string" named "external"
In Edit Product apply the field. Paste the url to the image in the field.
This below is the code for displaying the image.
<div class="product-fields">
<?php
$custom_title = null;
foreach ($this->product->customfieldsSorted[external] as $field) {
if ($field->display) {
?>
<?php if ($field->custom_title != $custom_title) { ?>
<img src="<?php echo $field->display ?>" alt="<?php echo $this->product->product_name ?>" />
<?php } ?>
<?php } ?> <?php } ?>
</div>
Using a String to Link to related articles, installation instructions etc.
Create a Custom field type "string" with the name "Installation Instructions" or whatever you want the anchor text to be.
Assign it to the position "link"
In Edit Product apply the field. Paste the url
This below is the code for displaying the link.
<div class="product-fields">
<?php
$custom_title = null;
foreach ($this->product->customfieldsSorted[link] as $field) {
if ($field->display) {
?>
<?php if ($field->custom_title != $custom_title) { ?>
<a href="<?php echo $field->display ?>" ><?php echo JText::_($field->custom_title); ?></a>
<?php } ?>
<?php } ?> <?php } ?>
</div>
Create a Custom field type "string" named "external"
In Edit Product apply the field. Paste the url to the image in the field.
This below is the code for displaying the image.
<div class="product-fields">
<?php
$custom_title = null;
foreach ($this->product->customfieldsSorted[external] as $field) {
if ($field->display) {
?>
<?php if ($field->custom_title != $custom_title) { ?>
<img src="<?php echo $field->display ?>" alt="<?php echo $this->product->product_name ?>" />
<?php } ?>
<?php } ?> <?php } ?>
</div>
Using a String to Link to related articles, installation instructions etc.
Create a Custom field type "string" with the name "Installation Instructions" or whatever you want the anchor text to be.
Assign it to the position "link"
In Edit Product apply the field. Paste the url
This below is the code for displaying the link.
<div class="product-fields">
<?php
$custom_title = null;
foreach ($this->product->customfieldsSorted[link] as $field) {
if ($field->display) {
?>
<?php if ($field->custom_title != $custom_title) { ?>
<a href="<?php echo $field->display ?>" ><?php echo JText::_($field->custom_title); ?></a>
<?php } ?>
<?php } ?> <?php } ?>
</div>
Error solution...
Warning: Invalid argument supplied for foreach()
default_customfields
or
default.php
In default.php
This is how the ontop is done
<?php if (!empty($this->product->customfieldsSorted['ontop'])) {
$this->position = 'ontop';
echo $this->loadTemplate('customfields');
} // Product Custom ontop end
?>
When you choose "cart variant" the default position will be in the add to cart form.
THEN,
the ONLY other default positions in the product layout is
"ontop"
THIS CODE IS IN views/productdetails/tmpl/default.php
if (!empty($this->product->customfieldsSorted['ontop'])) { ?>
<div class="product-fields">
<?php
$custom_title = null ;
foreach ($this->product->customfieldsSorted['ontop'] as $field){
if ($field->display) {
?><div class="product-field product-field-type-<?php echo $field->field_type ?>">
<?php if ($field->custom_title != $custom_title) { ?>
<span class="product-fields-title" ><?php echo JText::_($field->custom_title); ?></span>
<?php if ($field->custom_tip) echo JHTML::tooltip($field->custom_tip, JText::_($field->custom_title), 'tooltip.png');
} ?>
<span class="product-field-display"><?php echo $field->display ?></span>
<span class="product-field-desc"><?php echo jText::_($field->custom_field_desc) ?></span>
</div>
<?php
$custom_title = $field->custom_title;
}
} ?>
</div>
<?php } // Product Custom ontop end ?>
YOU can actually set your own positions anywhere. By copying this code, and renaming the "position"
YOU JUST change the 'ontop'
<?php if (!empty($this->product->customfieldsSorted['ontop'])) { ?>
<div class="product-fields">
<?php
$custom_title = null ;
foreach ($this->product->customfieldsSorted['ontop'] as $field){
if ($field->display) {
?><div class="product-field product-field-type-<?php echo $field->field_type ?>">
<?php if ($field->custom_title != $custom_title) { ?>
<span class="product-fields-title" ><?php echo JText::_($field->custom_title); ?></span>
<?php if ($field->custom_tip) echo JHTML::tooltip($field->custom_tip, JText::_($field->custom_title), 'tooltip.png');
} ?>
<span class="product-field-display"><?php echo $field->display ?></span>
<span class="product-field-desc"><?php echo jText::_($field->custom_field_desc) ?></span>
</div>
<?php
$custom_title = $field->custom_title;
}
} ?>
</div>
<?php } // Product Custom ontop end ?>
You can do your own location of custom field.
<?php if (!empty($this->product->customfieldsSorted['my-position'])) {
$this->position='my-position';
echo $this->loadTemplate('customfields');
}
?>
I try to use the below code after the price is displayed but nothing happens... i don't get the custom fields displayed.
<?php if (!empty($this->product->customfieldsSorted['my-position'])) {
$this->position='my-position';
echo $this->loadTemplate('customfields');
}
?>
Change .. my-position
.... to YOUR position
Tuesday, May 26, 2015
Image size does not change in article
Q - I resized the image and uploaded to my Joomla article but still the image is in the original size in the article.
Ans. Simply rename the image file and and link it to article. You will find the new image file size reflecting in article.
Ans. Simply rename the image file and and link it to article. You will find the new image file size reflecting in article.
Subscribe to:
Posts (Atom)