Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как создать условие для страницы
Форумы портала PHP.SU » » Вопросы новичков » Как создать условие для страницы

Страниц (1): [1]
 

1. Mike_v - 22 Августа, 2016 - 11:46:50 - перейти к сообщению
CODE (php):
скопировать код в буфер обмена
  1.  // META
  2.     $r = array(); $r[0] = "";
  3.     if (isset($categoryID) && !isset($productID) && $categoryID>0)
  4.     {
  5.         $q = db_query("SELECT name, description FROM ".CATEGORIES_TABLE." WHERE categoryID<>0 and categoryID='$categoryID'") or die (db_error());
  6.         $r = db_fetch_row($q);
  7.         $page_meta = str_replace("\"","'",$r[0].", ".$r[1]);
  8.     }
  9.     else if (isset($productID) && $productID>0)
  10.     {
  11.         $q = db_query("SELECT name, product_code FROM ".PRODUCTS_TABLE." WHERE productID='$productID'") or die (db_error());
  12.         $r = db_fetch_row($q);
  13.         $page_meta = str_replace("\"","'",$r[0].", ".$r[1]);
  14.     }
  15.     else $page_meta = CONF_SHOP_NAME."";
  16.  
  17.  

здесь условие отображения мета описания в каталоге либо в товарах интернет-магазина.
То есть когда выводится главная, каталог или товары - все нормально.

А как прописать условие, чтобы для статьи (по определенному урл) выводилось другое описание, например CONF_SHOP_OBZOR
2. miketomlin - 22 Августа, 2016 - 22:24:37 - перейти к сообщению
Что такое CONF_SHOP_OBZOR? В коде выше в константах содержатся имена таблиц, а это что? Если тут тоже имя таблицы, добавьте аналогичный код.

Вообще же метаданные можно хранить во всех записях, на основе кот. строятся страницы, и написать универсальный код выборки этих данных, а заодно и все прочих полей. В нормальных движках это часто автоматом делается – не нужно писать ни единой строчки кода.
3. Mike_v - 18 Сентября, 2016 - 13:35:09 - перейти к сообщению
miketomlin пишет:
Что такое CONF_SHOP_OBZOR? В коде выше в константах содержатся имена таблиц, а это что? Если тут тоже имя таблицы, добавьте аналогичный код.

Вообще же метаданные можно хранить во всех записях, на основе кот. строятся страницы, и написать универсальный код выборки этих данных, а заодно и все прочих полей. В нормальных движках это часто автоматом делается – не нужно писать ни единой строчки кода.

Спасибо за ответ. На данный момент менять устаревший движок нет возможности. Хочется хотя бы немножко его "причесать". Хотя бы основы. Подскажите как правильно, можно за вознаграждение. Только не хочется из-за такой мелочи давать доступ к серверу.
Сейчас выводится так в html:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <head>
  2. <meta name="Description" content="{$page_meta|default:"Shop-Script "}">
  3. <meta name="KeyWords" content="{$page_keywords|default:"Shop-Script "}">
  4. <meta name="viewport" content="width=device-width, initial-scale=1">
  5. <link rel=STYLESHEET href="style1.css" type="text/css">
  6.  
  7. <meta http-equiv="Content-Type" content="text/html; charset={$smarty.const.DEFAULT_CHARSET}">
  8. <title>{$page_title|default:"Shop-Script "}</title>
  9.  
  10.  
  11. <meta name="Title" content="{$page_title|default:"Shop-Script "}">
  12.  
  13. </head>
  14.  


Переменные прописываются здесь в php:
CODE (htmlphp):
скопировать код в буфер обмена
  1. // head variables definition: title, meta
  2.  
  3.         // title
  4.         $r = array(); $r[0] = "";
  5.         if (isset($categoryID) && !isset($productID) && $categoryID>0)
  6.         {
  7.                 $q = db_query("SELECT name FROM ".CATEGORIES_TABLE." WHERE categoryID<>0 and categoryID='$categoryID'") or die (db_error());
  8.                 $r = db_fetch_row($q);
  9.                 $page_title = str_replace("\"","'",$r[0]." - ".CONF_SHOP_NAME);
  10.         }
  11.         else if (isset($productID) && $productID>0)
  12.         {
  13.                 $q = db_query("SELECT name FROM ".PRODUCTS_TABLE." WHERE productID='$productID'") or die (db_error());
  14.                 $r = db_fetch_row($q);
  15.                 $page_title = str_replace("\"","'",$r[0]." - ".CONF_SHOP_NAME);
  16.         }
  17.         else $page_title = CONF_SHOP_NAME;
  18.  
  19.  
  20.    // META
  21.     $r = array(); $r[0] = "";
  22.     if (isset($categoryID) && !isset($productID) && $categoryID>0)
  23.    {
  24.        $q = db_query("SELECT description FROM ".CATEGORIES_TABLE." WHERE categoryID<>0 and categoryID='$categoryID'") or die (db_error());
  25.         $r = db_fetch_row($q);
  26.         $page_meta = str_replace("\"","'",$r[0].", ".$r[1]);
  27.     }
  28.     else if (isset($productID) && $productID>0)
  29.         {
  30.                 $q = db_query("SELECT brief_description FROM ".PRODUCTS_TABLE." WHERE productID='$productID'") or die (db_error());
  31.                 $r = db_fetch_row($q);
  32.                 $page_meta = str_replace("\"","'",$r[0].", ".$r[1]);
  33.         }
  34.         else $page_meta = CONF_SHOP_DESCRIPTION.", ";
  35.  
  36.  
  37.         $smarty->assign("page_meta",$page_meta);
  38.         $smarty->assign("page_title",$page_title);
  39.  
  40.  
  41.        $page_description = CONF_SHOP_DESCRIPTION.",Shop-Script ";
  42.        $page_keywords = CONF_SHOP_KEYWORDS.",Shop-Script ";
  43.  
  44.        $smarty->assign("page_description",$page_description);
  45.        $smarty->assign("page_keywords",$page_keywords);
  46.  
  47.  
  48.  
  49. ?>
  50.  


значения CONF_SHOP_DESCRIPTION и CONF_SHOP_KEYWORDS вводятся вручную в админ панели движка.
еще я создал значения CONF_OBZOR1_DESCRIPTION , CONF_OBZOR2_DESCRIPTION , CONF_OBZOR3_DESCRIPTION

Хотелось бы эти значения выводить в meta name="Description" по условию урл статьи (для трех разных УРЛов).
Как я понимаю после строки
CODE (htmlphp):
скопировать код в буфер обмена
  1.  // META
у меня прописаны условия:
-для категорий одно
- для товаров другое
- для ни категорий ни товаров третье
Вот как сюда добавить еще условие , что когда статья - то $page_meta =CONF_OBZOR1_DESCRIPTION
4. miketomlin - 18 Сентября, 2016 - 20:44:58 - перейти к сообщению
Возможно, можно подобрать и более простое условие на основе имеющихся переменных, но в общем, если не вдаваться в детали имеющегося окружения, для конкретной статьи можно сделать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. elseif ($_SERVER['REQUEST_URI']=='/bla-bla-bla') $page_meta = CONF_OBZOR1_DESCRIPTION;
  3.  
5. Mike_v - 18 Сентября, 2016 - 21:01:21 - перейти к сообщению
miketomlin пишет:
Возможно, можно подобрать и более простое условие на основе имеющихся переменных, но в общем, если не вдаваться в детали имеющегося окружения, для конкретной статьи можно сделать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. elseif ($_SERVER['REQUEST_URI']=='/bla-bla-bla') $page_meta = CONF_OBZOR1_DESCRIPTION;
  3.  

Это именно то, что мне было нужно.
Осталось проверить. Отпишусь.
6. Mike_v - 19 Сентября, 2016 - 15:11:26 - перейти к сообщению
miketomlin пишет:
Возможно, можно подобрать и более простое условие на основе имеющихся переменных, но в общем, если не вдаваться в детали имеющегося окружения, для конкретной статьи можно сделать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. elseif ($_SERVER['REQUEST_URI']=='/bla-bla-bla') $page_meta = CONF_OBZOR1_DESCRIPTION;
  3.  

Работает. Только добавил в конце кавычки и запятую. Недопонял для чего, но без них - ошибка.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  $page_meta = CONF_OBZOR1_DESCRIPTION.", ";

И, да простят меня модеры за оффтоп, но пожалуй именно для того и нужны форумы, чтобы в общении находить решение. Реально, ответ прост для профи. Но для меня крайне важен, так как я не программист, а давать доступ к серверу из-за такой небольшой правки фрилансерам не хочется.
Так что спасибо miketomlin за то, что вник в суть вопроса.
(Добавление)
Если не трудно поясните, орфографию выражения:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <meta name="Description" content="{$page_description|default:"Shop-Script"}">

- выводится переменная page_description, затем палка и еще надпись.
1 вопрос: пишется | или / ??? (встречал такое написание)
2 "Shop-Script" выведется если page_description нету???
7. miketomlin - 19 Сентября, 2016 - 19:37:45 - перейти к сообщению
Фигурные скобки и их содержимое не для PHP, а для используемого вами шаблонизатора. Копайте его синтаксис. Думаю, вы правильно уловили суть этой записи.
8. Mike_v - 21 Сентября, 2016 - 11:48:41 - перейти к сообщению
miketomlin пишет:
Фигурные скобки и их содержимое не для PHP, а для используемого вами шаблонизатора. Копайте его синтаксис. Думаю, вы правильно уловили суть этой записи.

нужен помощник. Цель такая - нужно внести изменения в код движка (например как в ветке). Помощник говорит: "Дай мне такие-то файлы". Я - передаю. Он - изменяет. Я - перечисляю.
Ибо при поверхностном рассмотрении PHP прост, но чем глубже - тем сложнее. И то, что сложно одному, - легко другому.

 

Powered by ExBB FM 1.0 RC1